오늘은 11일 차! 문제 풀이가 빨라질 때까지 차근차근해보겠습니다.
문제 설명
마라톤 경기를 하였을 때 참가자들 중 완주를 못한 선수의 이름을 출력하는 문제입니다.
참가자와 완주자의 이름들이 문자열로 된 배열로 주어져 이를 비교하면 되는 문제입니다.
생각 흐름
비교적 문제 이해가 쉬운 문제였습니다. 마라톤 경기를 하면서 참가자와 완주자가 있고
완주를 못한 참가자를 출력하면 된다는 간단한 문제였어요.
음.. 프로그래머스 문제는 기본적인 틀을 주어서 참 좋은데 이를 적극 활용하기로 했습니다.
string solution (vector <string> participant, vector <string> completion)
저는 map이라는 자료구조를 가지고 map <string, int> m; 을 선언하여서 각 참가자 별로 뒤에 value 값을 1씩 올려주었습니다. 한 명이라는 뜻이죠.
그리고 완주자를 반복문으로 돌려 각각의 이름에 있는 value 값을 다시 지우는 작업을 거쳤습니다.
마지막 출력을 하기 전, 생각해봐야 하는 것은 동명이인이 있을 때 어떻게 처리하는지였습니다.
map의 value값이 동명이인이면 2가 되는데 완주자가 1명일 경우 value값이 1만 남는 경우도 출력해 주는 코드를 작성했어요
근데 결국 완주를 못했다면 value 값이 1이면 되기 때문에 이렇게 마무리하였습니다.
#include <iostream>
#include <string>
#include <vector>
#include <map>
using namespace std;
string solution(vector<string> participant, vector<string> completion) {
string answer = "";
map<string, int> m;
for (auto i : participant) { // 참가자를 다 돌림
m[i] += 1;
}
for (auto j : completion) {
m[j] -= 1;
}
for (auto pair : m) {
if (pair.second == 1) {
answer += pair.first;
}
}
return answer;
}
공부한 내용 정리
오늘은 딱히 코드를 작성하는 것에 있어서 몰랐던 점이 없어서 무엇을 공부할 까 고민하다가
프로그래머스에는 다른 사람 코드를 볼 수 있는 기능이 있어서 참고하게 되었습니다.
다른 사람들의 코드를 보니 다양한 방법으로도 풀 수 있구나를 알게 되었고 그중에서 정렬을 한 후 이를 비교해 쉽게 푼 코드를 보게 되었습니다.
#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());
for(int i=0;i<completion.size();i++)
{
if(participant[i] != completion[i])
return participant[i];
}
return participant[participant.size() - 1];
//return answer;
}
정렬을 하면 사 전수로 배열이 정리가 되는데 이를 일일이 비교해서 같은 index에 있는 문자들을 비교해 문제를 푼 것이었습니다. 이런 생각을 했다는 게 신기했고 다음에는 저도 한번 써먹어봐야겠다는 생각을 하였습니다.
'코테 > 항해99' 카테고리의 다른 글
[99클럽 코테 스터디 13일차 TIL] #스택/큐 2 (0) | 2024.11.10 |
---|---|
[99클럽 코테 스터디 12일차 TIL] #스택/ 큐 1 (0) | 2024.11.09 |
[99클럽 코테 스터디 10일차 TIL] #해시6 (0) | 2024.11.07 |
[99클럽 코테 스터디 9일차 TIL] #해시5 (2) | 2024.11.06 |
[99클럽 코테 스터디 8일차 TIL] #해시4 (4) | 2024.11.04 |