728x90
https://programmers.co.kr/learn/courses/30/lessons/64065
문제풀이
문제에 대한 이해를 묻는 문제였다.
입력받는 각 string은 튜플에 대한 원소들을 배열한다.
순서가 뒤바뀔 수 있지만 결과적으로 우선순위가 높은(먼저 오는) 숫자는 더 많이 출현한다.
숫자마다 몇 번 출현하는지 확인하고 정렬한 다음에 answer 벡터에 넣어주면 된다.
느낀 점
처음 코드를 구현할 때 매우 불필요한 부분들이 많았다. 예를 들어 '괄호가 오게 된다면'과 같은 경우에 대해서 모두 따졌다. 하지만 단순하게 숫자의 경우만 따지면 된다. map을 통해서 구현하려고 했는데 그럴 경우 코드가 너무 복잡해지고 정렬하는 경우 map을 vector에 복사하곤 정렬해야 한다는 귀찮은 작업을 요구한다. 더 많은 연습이 필요한 것 같다.
코드
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
vector<int> solution(string s) {
vector<int> answer;
int num[100001] = { 0, };
string tmp = "";
for (auto ch : s) {
if (ch - '0' >= 0 && ch - '0' <= 9)
tmp = tmp + ch;
else {
if (tmp.length()) {
num[stoi(tmp)]++;
tmp = "";
}
}
}
vector<pair<int, int>> v; // 나온 횟수, 숫자
for (int i = 1; i <= 100000;i++) {
if (num[i])
v.push_back({ num[i],i });
}
sort(v.begin(), v.end());
reverse(v.begin(), v.end());
for (auto i : v)
answer.push_back(i.second);
return answer;
}
'문제 풀이 > 프로그래머스 (Programmers)' 카테고리의 다른 글
[Python] 프로그래머스 : 신규 아이디 추천 (0) | 2022.06.19 |
---|---|
[Python] 프로그래머스 : 신고 결과 받기 (0) | 2022.06.18 |
[C++] 프로그래머스 : [1차] 뉴스 클러스터링 (0) | 2021.10.24 |
[C++] 프로그래머스 : 행렬 테두리 회전하기 (0) | 2021.10.12 |
[C++] 프로그래머스 : 위클리 챌린지 (9주차) (0) | 2021.10.10 |
댓글