코딩테스트 연습 - 완주하지 못한 선수 | 프로그래머스 스쿨 (programmers.co.kr)
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
HashMap을 이용한 풀이
import java.util.*;
class Solution {
public String solution(String[] participant, String[] completion) {
String answer = "";
HashMap <String,Integer> map = new HashMap<>();
//getOrDefault를 이용해 이름마다 value에 1 추가, 동명이인 구별
for(String key : participant) map.put(key,map.getOrDefault(key,0)+1);
//완주한 선수의 Value는 0
for(String key : completion) map.put(key,map.get(key)-1);
for(String key : map.keySet()){
if(map.get(key)!=0){//완주 하지 못한 선수는 Value가 1
answer=key;
}
}
return answer;
}
}
문제 조건에 동명이인이 있는지 모르고 그냥 value값을 1로 지정하면 끝나는 거 아닌가? 하고 풀었다가 틀렸다 ㅎㅎ
✔️ .getOrDefault(key, 반환값)를 사용하는 이유
- participant[]={"mislav", "stanko", "mislav", "ana"}
- completion[]={"stanko", "ana", "mislav"}
for(String key : participant) map.put(key, 1);
for(String key : completion) map.put(key,map.get(key)-1);
key | value |
mislav | 1 → 0 |
stanko | 1 → 0 |
ana | 1 → 0 |
=> 동명이인을 인식하지 못해 모두가 완주했다는 결과가 나옴
for(String key : participant) map.put(key,map.getOrDefault(key,0)+1);
for(String key : completion) map.put(key,map.get(key)-1);
key | value |
mislav | 2 → 1 |
stanko | 1 → 0 |
ana | 1 → 0 |
=> 동명이인이어도 값을 추가해 올바른 결과 출력
'프로그래머스 & 백준' 카테고리의 다른 글
[프로그래머스/JAVA] - 전화번호 목록 (0) | 2023.07.04 |
---|---|
[프로그래머스/JAVA] - 폰켓몬 (0) | 2023.07.03 |
[프로그래머스/JAVA] - 주식가격 (0) | 2023.06.22 |
[프로그래머스/JAVA] - 뒤에 있는 큰 수 찾기 (0) | 2023.06.20 |
[SQL] - 자동차 종류 별 특정 옵션이 포함된 자동차 수 구하기 (0) | 2023.06.13 |
코딩테스트 연습 - 완주하지 못한 선수 | 프로그래머스 스쿨 (programmers.co.kr)
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
HashMap을 이용한 풀이
import java.util.*;
class Solution {
public String solution(String[] participant, String[] completion) {
String answer = "";
HashMap <String,Integer> map = new HashMap<>();
//getOrDefault를 이용해 이름마다 value에 1 추가, 동명이인 구별
for(String key : participant) map.put(key,map.getOrDefault(key,0)+1);
//완주한 선수의 Value는 0
for(String key : completion) map.put(key,map.get(key)-1);
for(String key : map.keySet()){
if(map.get(key)!=0){//완주 하지 못한 선수는 Value가 1
answer=key;
}
}
return answer;
}
}
문제 조건에 동명이인이 있는지 모르고 그냥 value값을 1로 지정하면 끝나는 거 아닌가? 하고 풀었다가 틀렸다 ㅎㅎ
✔️ .getOrDefault(key, 반환값)를 사용하는 이유
- participant[]={"mislav", "stanko", "mislav", "ana"}
- completion[]={"stanko", "ana", "mislav"}
for(String key : participant) map.put(key, 1);
for(String key : completion) map.put(key,map.get(key)-1);
key | value |
mislav | 1 → 0 |
stanko | 1 → 0 |
ana | 1 → 0 |
=> 동명이인을 인식하지 못해 모두가 완주했다는 결과가 나옴
for(String key : participant) map.put(key,map.getOrDefault(key,0)+1);
for(String key : completion) map.put(key,map.get(key)-1);
key | value |
mislav | 2 → 1 |
stanko | 1 → 0 |
ana | 1 → 0 |
=> 동명이인이어도 값을 추가해 올바른 결과 출력
'프로그래머스 & 백준' 카테고리의 다른 글
[프로그래머스/JAVA] - 전화번호 목록 (0) | 2023.07.04 |
---|---|
[프로그래머스/JAVA] - 폰켓몬 (0) | 2023.07.03 |
[프로그래머스/JAVA] - 주식가격 (0) | 2023.06.22 |
[프로그래머스/JAVA] - 뒤에 있는 큰 수 찾기 (0) | 2023.06.20 |
[SQL] - 자동차 종류 별 특정 옵션이 포함된 자동차 수 구하기 (0) | 2023.06.13 |