강의로 돌아가기
장연진

Java Map의 containsKey() 메소드 사용

첨부한 소스에서 주석처리 한 부분은 다른 사람의 풀이를 참고하여 기재한 코드입니다.
제 코드처럼 containsKey() 메소드를 사용하고 'completion' 반복문에서 +1을 해주는 방식은 채점을 하면 실패가 뜨더라고요. 제가 인지하기로는 돌아가는 로직은 비슷한 것 같은데, 정확히 어떻게 다른지 궁금합니다.

작성중인 코드―Solution.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import java.util.*;
class Solution {
    public String solution(String[] participant, String[] completion) {
        String answer = "";
        Map<String, Integer> map = new HashMap<String, Integer>();
        for(String p : participant) {           
            if(map.containsKey(p)) map.put(p, 1);
            else map.put(p, 0);
            // map.put(p, map.getOrDefault(p, 0) + 1);
        }
        for(String c : completion) {    
            map.put(c, map.get(c) + 1);
            // map.put(c, map.get(c) - 1);
        }
        for(String k : map.keySet()) {          
            if(map.get(k) != 1) {
                answer = k;
            }
            // if(map.get(k) != 0) {
            //     answer = k;
            // }
        }
        return answer;
    }
}
  • MOON

    중복된 키에만 1을 넣은 맵에 모든 요소에 +1을 해주었을때 중복된 키값이 없다면 완주한 목록에 있는 사람과 없는 사람의 키에 대응하는 값이 같아서 구분이 안되게 됩니다. 중복된 값이 있다고 해도 최대값을 알 수 있는 방법이 없기 때문에 해당 키가 !=1 이 아니라고 표현을 하면 구분할 수 없을것으로 보입니다.

    MOON―2020.09.16 16:37
0 개의 답변
답변 쓰기
이 입력폼은 마크다운 문법을 지원합니다.