250x250
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
- date
- NIO
- List
- map
- Union-find
- BFS
- dfs
- GC로그수집
- CSS
- Calendar
- 리소스모니터링
- JPA
- 스택
- javascript
- union_find
- string
- Java
- 힙덤프
- deque
- 큐
- math
- spring boot
- Properties
- scanner
- set
- sql
- 스프링부트
- html
- priority_queue
- alter
Archives
- Today
- Total
매일 조금씩
[C++] 프로그래머스 : 완주하지 못한 선수 본문
728x90
반응형
1) C++
참여 명단에 있으면 +1, 완주 명단에 있으면 -1을해서 0이 아닌 이름을 출력
#include <string>
#include <vector>
#include <map>
using namespace std;
string solution(vector<string> participant, vector<string> completion) {
string answer = "";
map<string, int> m;
for(auto c: completion){
m[c] += 1;
}
for(auto p: participant){
m[p] -= 1;
if(m[p] < 0){
answer = p;
break;
}
}
return answer;
}
2) java 첫번째 방법 - 오름차순 정렬
오름차순으로 두 명단을 정렬하고 하나씩 비교해서 일치하지 않으면 참여 명단의 이름을 출력
import java.util.*;
class Solution {
public String solution(String[] participant, String[] completion) {
Arrays.sort(participant);
Arrays.sort(completion);
int i = 0;
for(i=0; i<completion.length; i++){
if(!participant[i].equals(completion[i])){
return participant[i];
}
}
return participant[i];
}
}
3) java 두번째 방법 - HashMap
1번과 동일한 방법이지만 java로 HashMap을 사용하였다.
- getOrDefault : 찾는 key가 있으면 key의 값을 반환 하고 없으면 기본값을 반환한다.
import java.util.HashMap;
class Solution {
public String solution(String[] participant, String[] completion) {
String answer = "";
HashMap<String, Integer> hm = new HashMap<>();
for (String player : participant) hm.put(player, hm.getOrDefault(player, 0) + 1);
for (String player : completion) hm.put(player, hm.get(player) - 1);
for (String key : hm.keySet()) {
if (hm.get(key) != 0){
answer = key;
}
}
return answer;
}
}
getOrDefault를 써야하는 이유는?
동명이인이 있을 경우 먼저 HashMap에 들어가 있는 key를 찾아서 값을 +1 시켜줘야하기 때문이다.
만약 sam 이라는 사람이 2명이면
HashMap에서 "sam"이라는 key의 value는 2가 된다.
728x90
반응형
'알고리즘 > 해시' 카테고리의 다른 글
프로그래머스 level1 : 신고결과받기(카카오) - JAVA (0) | 2022.02.21 |
---|