728x90
코딩 테스트를 대비한 기출문제와 풀이
Coding Test :: Hash
문제
포함되지 않은 문자 찾기
1. String[] B의 값은 String[] A에 모두 포함되어 있다.
2. B의 길이는 A보다 적어도 1 이상 적다.
3. 중복된 값이 있을 수 있다.
A에서 B를 뺀 값을 출력하시오.
ex)
A["a", "b", "c", "d"] B["a", "b", "c"] -> "d"
A["a", "b", "c", "c", "d"] B["a", "b", "c"] -> "c, d"
더보기
import java.util.HashMap;
import java.util.Map;
class Solution {
public void solution(String[] A, String[] B) {
HashMap<String, Integer> hashMap = new HashMap<>();
for(String tempA : A)
hashMap.put(tempA, hashMap.getOrDefault(tempA, 0) + 1); //1.
for(String tempB : B)
hashMap.put(tempB, hashMap.get(tempB) - 1);
/*
for(String temp : hashMap.keySet()){
if(hashMap.get(temp) == 1)
answer = temp;
}
*/
for(Map.Entry<String, Integer> entry : hashMap.entrySet()){ //2.
if(entry.getValue() == 1) {
System.out.print(entry.getKey());
}
}
}
}
해시는 검색속도가 빠르며 삽입, 삭제에 데이터 이동이 필요 없는, 배열과 리스트의 장점이 모여진 자료구조이다.
1. getOrDefault(key, default) 함수는 찾는 키가 있다면 해당 값을, 없다면 default 값을 출력하는 함수로써 get() 를 사용하는 것 보다 안정적이다.
2. get() 은 hash를 순서대로 검색하기 때문에 주석 부분은 이중 for문과 같다. 아래 코드가 더 효율적임.
728x90
반응형
'알고리즘, 자료구조 > Coding Test' 카테고리의 다른 글
코딩 테스트 :: 기출문제와 풀이 (2) (0) | 2021.01.31 |
---|
댓글