유블로그

[프로그래머스] 완주하지 못한 선수 본문

알고리즘

[프로그래머스] 완주하지 못한 선수

yujeong kang 2020. 12. 15. 11:59

프로그래머스 level1 완주하지 못한 선수

 

소요시간 10분..?

HashMap 사용이 익숙하지 않아서 이클립스에서 자동완성 메소드 보면서 풀었다.. ㅋㅋ

 

먼저 HashMap에 participants 를 모두 넣는데 이미 map 에 들어간 선수는 value 만 +1 해줬다.

그다음 completion을 돌면서 map 에 value가 2이상이면 value를 -1하고

value가 1이면 map 에서 remove 했다.

 

마지막에 map에 남은 keySet을 Set으로 받고 toArray로 배열로 바꾼후 0번째 인덱스 값을 return 했다.

 

map을 이렇게 쓰는 게 맞나 모르겠다... 

더 효율적인 방법이 있으려나..?

 

public String solution(String[] participant, String[] completion) {
  Map<String, Integer> map = new HashMap<>();
  int N = participant.length;
  for (int i = 0; i < N; i++) {
    Integer cnt = map.get(participant[i]);
    if(cnt != null) {
    	map.replace(participant[i], cnt, cnt+1);
    }
    else {
    	map.put(participant[i], 1);
    }
  }

  for (int i = 0; i < N-1; i++) {
    Integer cnt = map.get(completion[i]);
    if(cnt > 1) {
    	map.replace(completion[i], cnt, cnt-1);
    }
    else {
    	map.remove(completion[i]);
    }
  }

  Set<String> set = map.keySet();
  String answer = set.toArray()[0].toString();
  return answer;
}

'알고리즘' 카테고리의 다른 글

[프로그래머스] 위장  (0) 2020.12.19
[프로그래머스] 전화번호목록  (0) 2020.12.19
[프로그래머스] 단속카메라  (0) 2020.12.15
[프로그래머스] 섬 연결하기  (0) 2020.12.14
[프로그래머스] 구명보트  (0) 2020.12.14