문제 링크
https://programmers.co.kr/learn/courses/30/lessons/42576
풀이 방법 1
sort + loop 이용하여 풀이
사실 이번 문제는 해시 문제여서 HashMap을 더 공부하고 풀이 방법을 추가해서 올려야 할 듯하다.
import java.util.Arrays;
public class Programmers_42576 {
public static void main(String[] args) {
String [] participant = {"leo", "kiki", "eden"};
String [] completion = {"eden", "kiki"};
Solution sol = new Solution();
System.out.println( sol.solution(participant, completion));
}
}//main
class Solution {
public String solution(String[] participant, String[] completion) {
String answer = null;
// 1. 두 배열을 정렬한다
Arrays.sort(participant);
Arrays.sort(completion);
// 2. 두 배열이 다를 때까지 찾는다
int i = 0;
for (i = 0; i < completion.length; i++) {
if( !participant[i].equals(completion[i]))
break;
}
// 3. 완주하지 못한 마지막 주자 return
return answer = participant[i];
}
}
풀이 방법 2
HashMap을 이용하여 풀이하였습니다.
1. Key값에 String, Value값에 인원수(int)로 입력 받아서 저장 (participant)
2. 이후 저장된 HashMap에서 completion배열의 해당되는 선수(String)를 찾아서 인원수를 -1 해줍니다.
3. 그렇게 처리된 결과값에서 value값이 0이 아닌 Key값이 완주하지 못한 선수가 됩니다.
import java.util.HashMap;
class Solution {
public String solution(String[] participant, String[] completion) {
String answer = null;
//1. HashMap을 만든다.(participant)
HashMap<String, Integer> map = new HashMap<>();
for (String player : participant) {
// 이전에 player가 map에 없으면 0을 주고 있었다면 player의 값을 가져와서 +1
map.put(player, map.getOrDefault(player, 0) +1);
}
//2. HashMap을 뺸다.(completion)
for (String player : completion) {
map.put(player, map.get(player) -1);
}
//3. value가 0이 아닌 마지막 주자를 찾는다.
for(String key : map.keySet() ) {
if ( map.get(key) != 0 ) {
answer = key;
break;
}
}
return answer;
}
}
반응형
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스 JAVA] 문자열 내 p와 y의 개수 (0) | 2023.01.02 |
---|---|
[프로그래머스 JAVA] K번째수 (0) | 2021.11.30 |
[프로그래머스 JAVA] 숫자 문자열과 영단어 (0) | 2021.10.20 |
[프로그래머스 JAVA] 약수의 개수와 덧셈 (0) | 2021.10.11 |
[프로그래머스 JAVA] 내적 (0) | 2021.10.11 |