문제 링크:
카카오 신입 공채 1차 코딩 테스트 문제 해설
‘블라인드’ 전형으로 실시되어 시작부터 엄청난 화제를 몰고 온 카카오 개발 신입 공채. 그 첫 번째 관문인 1차 코딩 테스트가 지난 9월 16일(토) 오후 2시부터 7시까지 장장 5시간 동안 온라인으로 치러졌습니다. 지원자들의 개발 능력을 잘 검증하기 위해 출제 위원들이 한 땀 한 땀 독창적이고 다양한 문제들을 만들어 냈고 문제에 이상은 없는지, 테스트케이스는 정확한지 풀어보고 또 풀어보며 […]
tech.kakao.com
입출력:
TC# | 입력 | 출력 |
1 | 1S2D*3T | 37 |
2 | 1D2S#10S | 9 |
3 | 1D2S0T | 3 |
4 | 1S*2T*3S | 23 |
5 | 1D#2S*3S | 5 |
6 | 1T2D3D# | -4 |
7 | 1D2S3T* | 59 |
코드:
/* 1. 자기 자신에 대한 곱셈을 두번 하면 세제곱이 아니라 네제곱! */
#include <iostream>
#include <string>
#include <vector>
using namespace std;
string in;
int scr[3] = { -1, -1, -1 };
char bns[3], opt[3];
int ans;
int main() {
ios_base::sync_with_stdio(0); cin.tie(0);
cin >> in;
int i = 0;
for (auto ch : in) {
if ('0' <= ch && ch <= '9') {
if (bns[i] != 0) {
scr[++i] = ch - '0';
}
else {
switch (scr[i]) {
case 1: scr[i] = 10; break;
case -1: scr[i] = ch - '0'; break;
}
}
}
else {
switch (ch) {
case 'S': case 'D': case 'T': bns[i] = ch; break;
case '*': case '#': opt[i] = ch; break;
}
}
}
for (int i = 0; i < 3; ++i) {
switch (bns[i]) {
case 'D': scr[i] *= scr[i]; break;
case 'T': scr[i] *= scr[i] * scr[i]; break;
}
switch (opt[i]) {
case '*':
if(i > 0)
scr[i - 1] *= 2;
scr[i] *= 2; break;
case '#':
scr[i] *= -1; break;
}
}
for (auto s : scr)
ans += s;
cout << ans;
return 0;
}