네박자대로
[프로그래머스 > 고득점kit 해시] 완주하지 못한 선수 (C++) 본문
programmers.co.kr/learn/courses/30/lessons/42576
항상 백준에서만 연습하다가 처음 프로그래머스 문제를 풀어봤는데 웹디자인도 보기 편하고 깔끔해서
자주 들를 것 같다!
고득점 kit를 먼저 하나씩 풀어보려고 한다. 우선 해시 kit의 첫 번째 문제, '완주하지 못한 선수'이다.
level 1 답게 금방 풀었다.
아이디어는 다음과 같이 생각했다.
participant vector와 completion vector에는 딱 한명 빼고 모두 동일한 사람들이 속해있다.
즉 완주하지 못한 participant vector 내의 단 한 사람만 골라내면 된다.
그럼 sort함수를 이용하여 두 벡터를 모두 정렬한 뒤
반복문으로 0번째 벡터 인덱스부터 마지막 벡터 인덱스까지 차례로 비교한 뒤
두 값이 같지 않은 participant vector의 값을 리턴하면 끝이다.
단, 주의할 것은 participant가 completion보다 1명 더 많으므로
for문은 completion의 크기 만큼만 반복하고,
반복문 동안 서로 다른 멤버가 없다면
participant vector의 마지막 사람이 바로 완주하지 못한 사람이란 뜻이므로
participant vector의 마지막 벡터 값을 리턴하면 된다.
코드로 보면 다음과 같이 간단하게 표현할 수 있다.
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
string solution(vector<string> participant, vector<string> completion) {
string answer = "";
bool flag = false;
sort(participant.begin(),participant.end());
sort(completion.begin(),completion.end());
int p_size=participant.size();
int c_size=p_size-1;
for(int i=0; i<c_size; i++)
{
if(participant[i]!=completion[i])
{
answer = participant[i];
flag = true;
break;
}
}
if(flag==false)
{
answer = participant[p_size-1];
}
return answer;
}
채점 결과
무사히 맞췄다!
'알고리즘' 카테고리의 다른 글
[프로그래머스 > 고득점kit 해시] 베스트 앨범 (C++) (0) | 2021.03.04 |
---|---|
[프로그래머스 > 고득점kit 해시] 위장 (C++) (0) | 2021.02.04 |
[프로그래머스 > 고득점kit 해시] 전화번호 목록 (C++) (0) | 2021.01.21 |
[백준 15954번] 인형들 (C++) (0) | 2021.01.19 |
[백준 15953번] 상금 헌터 (C++) (0) | 2021.01.16 |
Comments