문제를 푸는데는 금방 풀었지만, 다른 사람의 풀이를 보고 필자 자신의 풀이에 현자타임이 왔다.
역시 잘하는 사람은 너무 많고 더 열심히 해야겠다는 생각이 든다.
map
을 사용해줬지만, 숫자의 범위가 크지 않으므로 배열을 사용해도 괜찮을 것 같다.string
을 int
로 바꿔서 더해줬지만, string
으로 그대로 더해주고 나중에 한번에 바꿔주는 방식이 훨씬 좋을 것 같다.(다른 사람의 풀이)#include <string>
#include <vector>
#include <unordered_map>
using namespace std;
int arr[100001];
vector<int> solution(string s) {
vector<int> answer;
unordered_map<int,int>m;
int cnt = 0, num = -1;
for(int i=0;i<s.size();i++)
{
if(s[i]=='{') cnt++;
else if(s[i]=='}' && cnt==2)
{
m[num]+=1;
num=-1;
cnt--;
}
else if(s[i]==',' && cnt==2)
{
m[num]+=1;
num=-1;
}
else if('0'<=s[i]&& s[i]<='9')
{
if(num == -1) num=(s[i]-'0');
else
{
num*=10;
num += (s[i] - '0');
}
}
}
for(auto i:m)
{
arr[i.second] = i.first;
}
for(int i=m.size();i>=1;i--)
answer.push_back(arr[i]);
return answer;
}
string
방식을 사용하고string
사이즈를 이용하여 숫자를 배열에 넣어준다면, 필자처럼,
와}
가 나올때마다 일일이 다뤄주지 않아도 된다. 😭duf