[ 목차 ]
📢 문제 출처
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
📢 문제 설명
- 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다.
- 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수들의 이름이 담긴 배열 completion이 주어질 때, 완주하지 못한 선수의 이름을 return 하도록 solution 함수를 작성해주세요.
📢 입출력 예시
participant | completion | return |
["leo", "kiki", "eden"] | ["eden", "kiki"] | "leo" |
["marina", "josipa", "nikola", "vinko", "filipa"] | ["josipa", "filipa", "marina", "nikola"] | "vinko" |
["mislav", "stanko", "mislav", "ana"] | ["stanko", "ana", "mislav"] | "mislav" |
- 입출력 예 #1
- "leo"는 참여자 명단에는 있지만, 완주자 명단에는 없기 때문에 완주하지 못했습니다.
- 입출력 예 #2
- "vinko"는 참여자 명단에는 있지만, 완주자 명단에는 없기 때문에 완주하지 못했습니다.
- 입출력 예 #3
- "mislav"는 참여자 명단에는 두 명이 있지만, 완주자 명단에는 한 명밖에 없기 때문에 한명은 완주하지 못했습니다.
📢 풀이
📌 방법 01. keySet()
import java.util.HashMap;
class Solution {
public String solution(String[] participant, String[] completion) {
String answer = "";
HashMap<String, Integer> hm = new HashMap<>();
for (String p : participant) {
hm.put(p, hm.getOrDefault(p, 0) + 1);
}
for (String s : completion) {
hm.put(s, hm.get(s) - 1);
}
/* KeySet 사용 */
for (String key : hm.keySet()) {
if (hm.get(key) != 0){
answer = key;
break;
}
}
return answer;
}
}
📌 방법 02. entrySet()
import java.util.HashMap;
class Solution {
public String solution(String[] participant, String[] completion) {
String answer = "";
HashMap<String, Integer> hm = new HashMap<>();
for (String p : participant) {
hm.put(p, hm.getOrDefault(p, 0) + 1);
}
for (String s : completion) {
hm.put(s, hm.get(s) - 1);
}
/* EntrySet 사용 */
for(Map.Entry<String, Integer>entry : hm.entrySet()){
if(entry.getValue() != 0){
answer = entry.getKey();
break;
}
}
return answer;
}
}
📌 방법 03. entrySet().iterator()
- Iterator 인터페이스를 사용할 수 없는 컬렉션인 Map에서 Iterator 인터페이스를 사용하기 위해서는 Map에 entrySet(), keySet() 메소드를 사용하여 Set 객체를 반환받은 후 Iterator 인터페이스를 사용하시면 됩니다.
import java.util.HashMap;
class Solution {
public String solution(String[] participant, String[] completion) {
String answer = "";
HashMap<String, Integer> hm = new HashMap<>();
for (String p : participant) {
hm.put(p, hm.getOrDefault(p, 0) + 1);
}
for (String s : completion) {
hm.put(s, hm.get(s) - 1);
}
/*entrySet().iterator()*/
Iterator<Map.Entry<String,Integer>> it = hm.entrySet().iterator();
while(it.hasNext()){
Map.Entry<String ,Integer> entry = (Map.Entry<String, Integer>) it.next();
if(entry.getValue() != 0){
answer = entry.getKey();
break;
}
}
return answer;
}
}
📌 방법 04. keySet().iterator()
import java.util.HashMap;
class Solution {
public String solution(String[] participant, String[] completion) {
String answer = "";
HashMap<String, Integer> hm = new HashMap<>();
for (String p : participant) {
hm.put(p, hm.getOrDefault(p, 0) + 1);
}
for (String s : completion) {
hm.put(s, hm.get(s) - 1);
}
/*keySet().iterator()*/
Iterator<String> it = hm.keySet().iterator();
while(it.hasNext()){
String key = it.next();
Integer value = hm.get(key);
if(value != 0){
answer = key;
break;
}
}
return answer;
}
}
반응형
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] n보다 커질 때까지 더하기 (0) | 2023.08.12 |
---|---|
[프로그래머스] 의상 (0) | 2023.08.11 |
[프로그래머스] 이어 붙인 수 (0) | 2023.08.10 |
댓글