https://school.programmers.co.kr/learn/courses/30/lessons/72412
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
2021 카카오 코딩테스트 문제
이 문제 해결한 후 다른 사람의 풀이를 보고 깨달은 점 정리
["java backend junior pizza 150","python frontend senior chicken 210","python frontend senior chicken 150","cpp backend senior pizza 260","java backend junior chicken 80","python backend senior chicken 50"]
이 문제 같은 경우에는 입력이 위와 같이 연속된 string으로 들어오기 때문에 문자열을 파싱하는것 부터 시작한다.
따라서 나는 이문제를
struct person{
string language;
string jeak;
string career;
string soulfood;
int score;
};
for(int i = 0;i < info.size();i++)
{
person p;
string cur = info[i];
int cut = cur.find(' ');
p.language = cur.substr(0,cut);
cur = cur.substr(cut+1);
cut = cur.find(' ');
p.jeak = cur.substr(0,cut);
cur = cur.substr(cut+1);
cut = cur.find(' ');
p.career = cur.substr(0,cut);
cur = cur.substr(cut+1);
cut = cur.find(' ');
p.soulfood = cur.substr(0,cut);
cur = cur.substr(cut+1);
cut = cur.find(' ');
p.score = stoi(cur.substr(0,cut));
string hash = p.language+ p.jeak + p.career + p.soulfood;
m[hash].push_back(p.score);
}
이런 식으로 무식하게 파싱을 했다.
아래 부분은 hash를 만들어서 map에 저장하는 부분이다.
parsing을 split(' ')와 substr()을 이용하여 하였는데
다른 풀이에는 istringstream 이라는 걸 사용하는 풀이가 있었다.
string key[4], tmp;
int point;
for (auto& inf : info)
{
istringstream iss(inf);
iss >> key[0] >> key[1] >> key[2] >> key[3] >> point;
}
해당 테크닉은 string 파싱 할때 잘 사용될만한 테크닉인 것같다.
사용법을 잘 익혀두자
'알고리즘 > 알고리즘 이론, 템플릿' 카테고리의 다른 글
MST - Kruskal (0) | 2023.04.03 |
---|---|
O(nlogn) LIS (0) | 2023.03.28 |
shift 연산과 오버플로우 (0) | 2023.03.06 |
에라토스테네스의체 (0) | 2023.01.25 |
컨벡스헐 (0) | 2023.01.15 |