코딩 테스트 :: 기출문제와 풀이

알고리즘, 자료구조/Coding Test 2021.01.26 댓글 moonsu
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문과 같다. 아래 코드가 더 효율적임.

 

Github에서도 확인할 수 있습니다.

 

 

 

 

 

728x90
반응형

댓글