728x90
반응형
풀이 문제 : 프로그래머스 코딩테스트 고득점 Kit - 해시 level1 : 완주하지 못한 선수
풀이 언어 : C++
알고리즘 : 정렬
문제링크 :https://school.programmers.co.kr/learn/courses/30/lessons/42576
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제요약
participant 과 completion 배열이 주어지는데 participant에는 있지만 completion에는 없는 한명의 이름을 출력하는 문제이다.
접근 방식
처음엔 단순히 2중 for문으로 비교하면 될거라고 생각했지만, 선수 수가 100,000명이기 때문에 비효율적일 것 같다고 생각했다.
그래서 두 배열을 sort 한 후, for문 한번으로 비교할 수 있도록 코드를 짰다.
또한, 만약 정답인 선수 이름이 sort 이후 participant의 마지막에 들어가있으면 확인이 불가능하기 때문에 이를 보완하기 위해 found 라는 boolean 변수를 만들어서 해당 부분을 예외처리 해주었다.
코드
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
string solution(vector<string> participant, vector<string> completion) {
string answer = "";
sort(participant.begin(),participant.end());
sort(completion.begin(),completion.end());
int len = completion.size();
bool found = 0;
for(int i=0;i<len;i++){
if(participant[i] != completion[i]){
answer = participant[i];
found = 1;
break;
}
}
if(found == 0) answer = participant[len];
return answer;
}

728x90
반응형
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 전화번호 목록 : C++ (0) | 2023.01.15 |
---|---|
[프로그래머스] 폰켓몬 : C++ / set (0) | 2023.01.13 |
[프로그래머스] 구명보트 / C++ (0) | 2022.04.20 |