https://programmers.co.kr/learn/courses/30/lessons/42576
코딩테스트 연습 - 완주하지 못한 선수
수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수
programmers.co.kr
풀이방법:
참여자 명단과 완주자 명단을 이름순으로 정렬해 두 명단을 순서대로 비교해 나아간다.
이름이 다른 경우 참가자명단에 있는 선수는 완주하지 못한 것이므로 해당 선수의 이름을 반환한다.
왜 나는 해시 방법으로 풀지 않은 것인가,,,, 남의 풀이 좀 봐야겠다...
c++ string에서 문자열을 어떻게 비교하는지 몰라서 아래 블로그를 찾아보았다.
문자열 비교함수 : str1.compare(str2)
같으면 0 반환, 매개변수보다 사전순으로 빠르면 음수(-) 반환, 사전순으로 느리면 양수(+) 반환
https://blockdmask.tistory.com/338
[C++] string 클래스, 문자열에 대해서 (총정리)
안녕하세요 BlockDMask 입니다.오늘은 C++의 std::string 클래스(문자열)에 대해서 세세 하게 알아볼것 입니다.예전 글을 보다가 제가 작성한 이 문서를 보게 되었는데요, 너무 내용이 빈약하다고 생
blockdmask.tistory.com
소스코드
#include <bits/stdc++.h>
using namespace std;
string getName (vector<string> participant, vector<string> completion) {
int cnt = completion.size();
string par, com;
// 정렬된 명단을 처음부터 살피며 같은 이름인지 확인
for(int i=0; i<cnt;i++) {
par = participant[i];
com = completion[i];
// 이름이 다르다면 해당 선수의 이름 출력
if(par.compare(com)!=0) return par;
}
//완주한 선수 명단을 모두 확인했으므로 참가자 명단의 마지막 선수 출력
return participant[cnt];
}
string solution(vector<string> participant, vector<string> completion) {
string answer = "";
// 참여 명단과 완주 명단을 algorithm 헤더의 sort를 통해 이름 순으로 정렬
sort(participant.begin(), participant.end());
sort(completion.begin(), completion.end());
// 완주하지 못한 선수의 이름을 return 하는 함수 실행
answer = getName(participant, completion);
return answer;
}
'CodingTest Practice > Programmers' 카테고리의 다른 글
프로그래머스 : 다음 큰 숫자 (C++, Lv.2,연습문제) (0) | 2022.05.18 |
---|---|
프로그래머스 : 124나라의 숫자 (C++, Lv.2, 연습문제) (0) | 2022.05.18 |
프로그래머스 : 네트워크(C++, Lv.3, DFS) (0) | 2022.05.18 |
프로그래머스 : 더 맵게(C++, Lv.2, 힙) (0) | 2022.05.12 |
프로그래머스 : 타겟넘버(C++, Lv.2, DFS) (0) | 2022.01.29 |