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

문제

https://programmers.co.kr/learn/courses/30/lessons/42576

내 코드

	public String solution(String[] participant, String[] completion) {
    		//1
		Map<String, Integer> completionMap = new HashMap<String, Integer>();
		//2
		for(String s : completion)
			completionMap.put(s, completionMap.getOrDefault(s, 0)+1);	
		//3
		for(int i=0; i<participant.length; i++) {
			if(!completionMap.containsKey(participant[i]))
				return participant[i];
			else {
				completionMap.put(participant[i], completionMap.get(participant[i])-1);
			}
		}
        	//4
		for(String key : completionMap.keySet())
			if(!(completionMap.get(key) == 0)) return key;

		return "";
	}

문제풀이

  1. 완주자 데이터를 담을 HashMap completionMap 선언
  2. for 문을 돌면서 파라미터 completion을 HashMap에 담는다.(key: 선수 이름, value: 해당이름을 갖는 선수 count)
  3. 참가자 파라미터 participant를 for문을 돌면서 완주자 completionMap에 포함되어 있는지 판별 한다.
    3-1. 포함되어 있지 않으면 완주를 못한 선수! 바로 return 한다.
    3-2. 포함되어 있으면 completionMap에 해당 value 값을 1 감소 시킨다.
  4. 3-2에서 완주한 선수는 1씩 감소 시켰으니, for 문을 돌면서 completionMap의 value값이 0이 아닌 선수를 return 한다.

좋은 웹페이지 즐겨찾기