[프로그래머스][3차]n진수 게임
📒활용 개념
📌문제설명
여러 사람이 순서대로 앉아서 숫자를 하나씩 차례대로 말한다. 규칙은 다음과 같다.
- 숫자를 0부터 시작
- 10 이상의 숫자부터는 한 자리씩 끝ㄶ어서 말한다.
단 위의 게임을 k진수로 변환하여 진행한다. 다음과 같은 게임을 진행할 때 튜브가 말해야 하는 숫자를 주어진 갯수만큼 구하여라
- 진법 n, 구하는 숫자의 갯수 t, 게임 참가 인원 m, 튜브의 순서 p
📌구현
#include <string>
#include <vector>
#include <iostream>
using namespace std;
string locate ="0123456789ABCDEF"; //진수 변환 개념 참고
string change (int num, int binary){ //진수 변환 함수
string resurt;
if(num==0){
return "0";
}
while(num>0){
resurt=locate[num%binary]+resurt;
num/=binary;
}
return resurt;
}
string solution(int n, int t, int m, int p) {
string answer = "";
string temp; //진수 변환 결과 저장
int num=0;
for(int i=0; i<t; i++){ //answer에 들어가야할 순서에 따른 push
while(temp.size()<=p+(m*i)){ //temp의 크기가 작을 때만 새로운 정수를 진수 변환하여 저장한다.
temp+=change(num, n);
num++;
}
answer+=temp[(p-1)+(m*i)]; //answer에 순서에 맞게 저장
}
return answer;
}
📌주의점
- 튜브의 순서를 구하는 것이 중요하다. 그냥 for문으로 돌리는 것 보다 튜브의 순서만을 확인하는 것이 더 효율적이다
- 튜브순서 + (전체인원 * i) = 다음 튜브의 숫자. - 진수 변환 사용
Author And Source
이 문제에 관하여([프로그래머스][3차]n진수 게임), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@gomhyeok/프로그래머스3차n진수-게임저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)