문제 : 2018 KAKAO BLIND RECRUITMENT [3차] n진수 게임
문자열 수학 구현
Input의 크기가 작아 단순 구현으로 해결할 수 있는 문제입니다.
숫자 0부터 1씩 키워가며 N진법으로 표현한 후, N진법으로 표현된 수를 다시 한 자리씩 순회하며 m명의 친구들에게 하나씩 배당해준다. 이때, 튜브의 차례라면 answer에 concat 해준다.
#include <string>
#include <vector>
using namespace std;
string solution(int n, int t, int m, int p) {
char list[16] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B','C', 'D', 'E' , 'F' };
string answer = "";
p--;
int curN = 0, curP = 0;
while (answer.length() < t) {
string temp = "";
int tempN = curN;
do { // curN을 N진법으로 표현하자.
temp += list[tempN % n];
tempN /= n;
} while (tempN);
for (int i = temp.length() - 1; i >= 0; i--) {
if (curP % m == p && answer.length() < t)
answer += temp[i];
curP = (curP + 1) % m;
}
curN++;
}
return answer;
}
'Problem Solving > Programmers' 카테고리의 다른 글
[Programmers] 괄호 변환 - travelbeeee (0) | 2020.04.15 |
---|---|
[Programmers] 문자열 압축 - travelbeeee (0) | 2020.04.15 |
[Programmers] 기능개발 - travelbeeee (0) | 2020.03.16 |
[Programmers] 2 x n 타일링 - travelbeeee (0) | 2020.03.16 |
[Programmers] 종이접기 - travelbeeee (0) | 2020.03.13 |