[프로그래머스] 완주하지못한선수
업데이트:
프로그래머스 완주하지못한선수 풀이입니다.
이 문제는 해시맵 기본문제라고 볼 수 있다. 각 들어온 Player 대로 Map을 만든 뒤 0이 아닌 값이 존재한다면 완주하지 못한 선수이기 때문이다.
C++과 Java 두개로 풀어보았는데 분명 코드상으론 큰 차이는 없는데 속도는 C++이 좀 더 느리게 나온다. 아무래도 내부적으로 키값이 있는지 없는지에 대해서 완탐을 돌리는거 같다.
Problem : 완주하지못한선수
Source Code(C++) :
#include <string>
#include <vector>
#include <map>
#include <algorithm>
using namespace std;
string solution(vector<string> participant, vector<string> completion) {
string answer = "";
map<string, int> m;
for(string player : participant){
m[player]++;
}
for(string player : completion){
m[player]--;
}
for(auto iter = m.begin(); iter != m.end();iter++){
if(m[iter->first] > 0)
return iter->first;
}
return answer;
}
Source Code(Java) :
import java.util.*;
class Solution {
public String solution(String[] participant, String[] completion) {
String answer = "";
HashMap<String,Integer> map = new HashMap<String,Integer> ();
for(String Player : participant) {
if(map.get(Player) == null){
map.put(Player, 1);
}else{
map.put(Player, map.get(Player).intValue()+1);
}
}
for(String Player : completion) {
map.put(Player, map.get(Player).intValue()-1);
}
for(String key : map.keySet()){
if(map.get(key) > 0)
return key;
}
return answer;
}
}
소스코드
이 외에도 제가 푼 문제들 소스코드는 다음 링크에 있습니다!!! 알고리즘 문제풀이
댓글남기기