문제
풀이방법
- 배열
- 각각 정렬 후 앞에서부터 하나씩 비교하여 다를 경우 리턴
- 마지막까지 모두 같다면 참여자 배열의 마지막 값을 리턴
- 해시맵
- 참여자를 해시맵에 추가하며 value를 하나씩 증가
- getOrDefault(Object key, V DefaultValue)
- key : 값을 가져와야하는 요소의 키
- deaultVaule : 지정된 키로 매핑된 값이 없는 경우 반환되어야하는 기본값
- 찾는 키가 존재한다면 찾는 키의 값을 반환하고 없다면 기본 값을 반환하는 메서드
- 중복 처리 가능
- getOrDefault(Object key, V DefaultValue)
- 완주자를 해시맵에 추가하며 value를 1씩 감소
- value가 0이 아닌 key값을 리턴
- 참여자를 해시맵에 추가하며 value를 하나씩 증가
코드
👇🏻 배열
package hashmap_pro;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
public class Solution2 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = br.readLine();
String str2 = br.readLine();
String[] arr = str.split(" ");
String[] arr2 = str2.split(" ");
Solution2 s = new Solution2();
System.out.println(s.solution2(arr,arr2));
}
public String solution(String[] participant, String[] completion) {
Arrays.sort(participant);
Arrays.sort(completion);
String answer = null;
for(int i=0; i<completion.length; i++){
if(! participant[i].equals(completion[i])){
answer = participant[i];
return answer;
}
}
answer = participant[participant.length-1];
return answer;
}
}
👇🏻 containsKey(Object key) 사용
public String solution2(String[] participant, String[] completion) {
Map<String,Integer> map = new HashMap<>() ;
int i=0;
String answer = null;
for( String player : participant) {
if(map.containsKey(player)) {
map.put(player, map.get(player)+1);
}else{
map.put(player, 1);
}
}
for( String player : completion) {
map.put(player,map.get(player)-1);
}
for(String key : map.keySet()){
if(map.get(key)!=0){
answer = key;
}
}
return answer;
}
👇🏻 getOrDefault(Object key, V DefaultValue) 사용
public String solution3(String[] participant, String[] completion) {
Map<String,Integer> map = new HashMap<>() ;
int i=0;
String answer = null;
for( String player : participant) {
map.put(player, map.getOrDefault(player,0)+1);
}
for( String player : completion) {
map.put(player,map.get(player)-1);
}
for(String key : map.keySet()){
if(map.get(key)!=0){
answer = key;
}
}
return answer;
}
'코딩테스트' 카테고리의 다른 글
[백준 / 브론즈1] 1236 : 성 지키기 (JAVA) (0) | 2023.03.17 |
---|---|
[프로그래머스 / lv 2] 전화번호 목록 (JAVA_해시) (1) | 2023.03.16 |
[프로그래머스 / lv 1] 폰켓몬 (JAVA_해시) (0) | 2023.03.12 |
[백준 / 실버 4] 1940 : 주몽 (JAVA) (0) | 2023.03.11 |
[백준 / 실버 5] 1652 : 누울 자리를 찾아라 (JAVA) (0) | 2023.03.11 |