[문제보기]
2018 KAKAO BLIND. n진수 게임
[풀이과정]
이 문제는 찾아야되는 수까지 n진법에 맞춰 변환을 해준 뒤, t의 간격으로 찾으면 되는 문제이다.
찾아야되는 수는 t*m으로 미리구할 개수 t와 모든 인원 m이 있을 때, 미리 구할 개수라는 것은 내 차례를
뜻하므로 t*m을 해줘야 내 차례까지 수를 구할 수 있다.
n진법으로 변환하는 부분에서 int으로 하면 받아지는 값을 역수로 취해야되지만,
필자는 string으로 받아 새로운 값을 앞으로 더해주는 방식을 사용했다.
n진법으로 변환을 다하면 내 차례에 자리하고 있는 값을 출력한다.
[소스코드]
//n진수 게임
#include <string>
#include <vector>
using namespace std;
string change(int n, int num){
string temp = "";
string code[] = {"0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"};
while(num/n != 0){
temp = code[num%n] + temp;
num /= n;
}
temp = code[num%n] + temp;
return temp;
}
string solution(int n, int t, int m, int p){
string answer;
string val = "0";
for(int i=1; i<t*m; i++){
val += change(n, i);
}
int cnt = 1;
for(int i = p-1; i<val.size();){
answer += val[i];
if(cnt == t) break;
cnt++;
i += m;
}
return answer;
}
[해결 과정 중 실수한 부분]
n진법을 만드는 부분에서 위에서 말한 int로 사용을 해서 나눠주고 역수도 취하고 다시 string으로 변환을 해주고,
하는 형식이 너무 복잡하고, 더러워져서 string으로 자료형을 변경하니 훨씬 코드가 간단해졌다.
'알고리즘 스터디 > Programmers' 카테고리의 다른 글
[프로그래머스][C++] 2019_KAKAO_BLIND 오픈채팅방 (level 2) (0) | 2020.09.08 |
---|---|
[프로그래머스][C++] 2018 KAKAO BLIND. 방금 그 곡 (level 2) (0) | 2020.08.31 |
[프로그래머스] 2018 KAKAO BLIND 캐시 (level 2) (0) | 2020.08.27 |
[프로그래머스][C+] 2018 KAKAO BLIND. 뉴스 클러스터링 (level 2) (0) | 2020.08.26 |
[프로그래머스][C+] 2018 KAKAO BLIND. 비밀 지도 (level 1) (0) | 2020.08.26 |