smooth waters run deep

1d-1c/Programmers

Level1_완주하지 못한 선수 (C++) (JAVA)

yeon_11 2020. 10. 31. 17:09
 

코딩테스트 연습 - 완주하지 못한 선수

수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수

programmers.co.kr

 

[C++]

#include <string>
#include <vector>
#include <unordered_map>
using namespace std;

string solution(vector<string> participant, vector<string> completion) {
	string answer = "";
	unordered_map<string, int> p; //participant 해시맵
	
	for (int i = 0; i < participant.size(); i++){
		if (p.end() == p.find(participant[i])) p[participant[i]] = 1; //존재x 1로
		else p[participant[i]]++; //존재o ++
	}

	for (int i = 0; i < completion.size(); i++){
		if (p.end() == p.find(completion[i])) answer = completion[i]; //존재x 답이고
		else { //존재o value--
			p[completion[i]]--;
	    }
    }
    
    for (int i = 0; i < participant.size(); i++){ //p탐색 -> 0보다 크면 completion에 없는사람
        if(p[participant[i]]>0) answer = participant[i];
    }
	
	return answer;
}

1. participant={"kim", "kim"}, completion={"kim"} 인 경우, kim을 출력해야 한다.

   즉, 중복을 허용하므로 unordered_map을 이용했다.

 

2. participant[]의 문자열을 unorder_map p에 +1씩 체크한다.

 

3. completion[]의 문자열은 unorder_map p에 -1씩 체크한다.

 

4. p를 하나씩 확인한다.

   만약 p의 값이 0이 아니라면

   즉, completion[]에 포함되어 있지 않아 +1 상태 그대로라면 == 완주하지 못한 선수 이다.

   

 

 

[JAVA]

import java.util.Arrays;

class Solution {
    public String solution(String[] participant, String[] completion) {
        
        Arrays.sort(participant);
        Arrays.sort(completion);
        
        int i=0;
        for(; i<completion.length; i++){
            if(!participant[i].equals(completion[i]))
                return participant[i];
        }
   
        return participant[i];
    }
}

1. participant와 completion은 길이 차이가 1이다.

 

2. 그러므로 정렬하여 비교하면 n번만에 다른 것 하나를 찾을 수 있다.

 

 

 

'1d-1c > Programmers' 카테고리의 다른 글

Level1_예산 (JAVA)  (0) 2020.11.02
Level1_두 개 뽑아서 더하기 (JAVA)  (0) 2020.10.31
Level1_크레인 인형뽑기 게임 (JAVA)  (0) 2020.10.31
Level1_K번째 수 (JAVA)  (0) 2020.10.31
도둑질 (C++)  (0) 2020.04.25