Algorithm/프로그래머스
[프로그래머스][LV.1] 완주하지 못한 선수
홍홍_
2022. 4. 27. 17:55
문제📜
https://programmers.co.kr/learn/courses/30/lessons/42576
나의 생각의 흐름💡
1) 완주하지 못한 인원이 1명이니까 결국 1명만 남겠구나
2) 동명이인이 있으니 이름당 수를 카운트 하자
3) 완주한 인원의 이름의 카운트를 줄여주고 마지막에는 제거하자
4) 남은 한 명이 완주하지 못한 인원
나의 풀이🔑
import java.util.*;
class Solution {
public String solution(String[] participant, String[] completion) {
String answer = "";
//동명이인이 있으므로 이름당 숫자 카운팅 String(이름), Integer(사람 수)
HashMap<String, Integer> answerMap = new HashMap<>();
for(int i=0; i< participant.length;i++) {
String name = participant[i];
if (answerMap.containsKey(name)) {
int count = (int)answerMap.get(name);
answerMap.put(name, ++count);
} else {
answerMap.put(name, 1);
}
}
//완주한 인원 디카운팅, Map에서 제거
for(int i=0; i< completion.length;i++) {
int count = (int)answerMap.get(completion[i]);
String name = completion[i];
if (count == 1) {
answerMap.remove(name);
} else {
answerMap.put(name, --count);
}
}
//다시 스트링의 형태로 바꿔줌
String temp = answerMap.keySet().toString();
answer = temp.substring(1, temp.length()-1);
return answer;
}
}
후기✍
처음에 동명이인을 생각을 안하고 for문을 돌리다가 한꺼번에 사라지는 일이 발생해서 조정했다
조금 시간이 지체되었고 주먹구구식으로 풀었다
출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges