Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 완전탐색
- Sort
- 백트래킹
- dfs
- 이분탐색
- 멘딕스
- SQL
- 매개변수 탐색
- 정렬
- domain model
- lcap
- algorithm
- 반효경교수님
- 가중치없는그래프
- Bruteforce
- 그래프
- 재귀
- 알고리즘
- git
- 집합
- 스택
- microflow
- 자료구조
- Recursion
- 프로그래머스
- Mendix
- MySQL
- 해시맵
- 트리
- 자바
Archives
- Today
- Total
mondegreen
[240328] 알고리즘 리부트 40일차 - 프로그래머스 완주하지 못한 선수 자바 본문
반응형
동명이인이 있다는 지시문에 key 값으로 이름을 활용하지 못할 것이라고 생각했다. 그래서 각 배열을 정렬한 후 완주한 배열의 인덱스와 참가한 인덱스의 이름이 서로 맞지 않는다면 그 친구가 낙오한 것이기 때문에 완주한 친구들을 맵에서 지워가면서 확인했다. 정렬을 해야한다는 단점이 존재했다.
import java.util.*;
class Solution {
public String solution(String[] participant, String[] completion) {
String answer = "";
Arrays.sort(participant);
Arrays.sort(completion);
HashMap<Integer, String> completed = new HashMap<>();
for(int i = 0; i< completion.length; i++) completed.put(i, completion[i]);
for(int i = 0; i< participant.length; i++){
if(i == participant.length-1) {
answer = participant[i];
break;
}
if(completed.get(i).equals(participant[i])) completed.remove(i);
else{
answer = participant[i];
break;
}
}
return answer;
}
}
하지만 마라토너의 이름을 키 값으로 활용할 수 있었다. 방법은 value에 정수로 값을 더해주면서 참가한 애를 먼저 더해주고 완주한 경우 정수 값을 1씩 줄여주는 방법이다. 마지막에는 아직 1로 남아있는 값을 가진 키를 찾아야 하기 때문에 map.keySet()으로 키 리스트를 뽑아내고 값이 0이 아닌 친구를 찾아서 반환해준다. 확실히 짧은 시간 안에 통과하는 것을 알 수 있다.
import java.util.*;
class Solution {
public String solution(String[] participant, String[] completion) {
String answer = "";
HashMap<String, Integer> marathon = new HashMap<>();
for(int i = 0; i< participant.length; i++){
marathon.put(participant[i], marathon.getOrDefault(participant[i], 0) +1);
}
for(int i = 0; i< completion.length; i++){
marathon.put(completion[i], marathon.get(completion[i]) -1);
}
for(String i: marathon.keySet()){
if(marathon.get(i) != 0) answer = i;
}
return answer;
}
}
반응형
'알고리즘 풀이 및 리뷰 > 프로그래머스' 카테고리의 다른 글
[240328] 알고리즘 리부트 40일차 - 프로그래머스 다단계 칫솔 판매 자바 (0) | 2024.03.28 |
---|---|
[240328] 알고리즘 리부트 40일차 - 프로그래머스 예상 대진표 자바 (0) | 2024.03.28 |
[240326] 알고리즘 리부트 39일차 - 프로그래머스 주식 가격 자바 (0) | 2024.03.26 |
[240326] 알고리즘 리부트 39일차 - 프로그래머스 괄호 회전하기 자바 (0) | 2024.03.26 |
[240326] 알고리즘 리부트 39일차 - 프로그래머스 올바른 괄호 자바 (0) | 2024.03.26 |