[프로그래머스] 완주하지못한선수

업데이트:

프로그래머스 완주하지못한선수 풀이입니다.

이 문제는 해시맵 기본문제라고 볼 수 있다. 각 들어온 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;
    }
}

소스코드

이 외에도 제가 푼 문제들 소스코드는 다음 링크에 있습니다!!! 알고리즘 문제풀이

댓글남기기