프로그래머스/Level_2

[프로그래머스 Level_2 / C++ / 카카오] [3차] n진수 게임

배발자 2022. 2. 18.
반응형

#접근 방법

 

1. "숫자 0 ~ ?" 까지 while문을 돌리면서 해당 숫자의 n진수 값을 변환하여 문자열 s 에 저장. 

2. 문자열 s 를 뒤집어주고 temp 라는 문자열에 붙인다. 

3. temp 사이즈가 m+1 보다 크거나 같으면,

 - answer 값에 튜브의 순서에 해당하는 인덱스 문자값을 붙인다. (문자열 temp 인덱스를 1부터 시작하기 위해 처음에 문자 하나 저장 해놓음. 그래서 조건식이 m+1 인 것이다.  )

 - cnt  +1 증가

 - temp 인덱스 1부터 M까지 자르고 이후 문자열 이어 붙이기 

5. cnt값이 미리 구할 숫자의 갯수(t)와 동일하면 break; 

#include <string>
#include <vector>
#include <algorithm>
#include <iostream>
using namespace std;
string solution(int n, int t, int m, int p) {
    string answer = "";
    string temp ="0"; 
    int cnt =0, i=0;  
    while(cnt!=t){
        int x = i++;
        string s =""; 
        while(1){
            int y= x % n; 
            if(y>=10){
                char c = 'A'+ y % 10; 
                s+=c; 
            }
            else s+=to_string(x%n); 
            x /=n; 
            if(!x)break; 
        }
        reverse(s.begin(),s.end());         
        temp+=s; 
        if(temp.size()>=m+1){
            answer+=temp[p]; 
            cnt++; 
            temp= temp[0]+temp.substr(m+1); 
        }        
    }    
    return answer;
}

 

 

코딩테스트 연습 - [3차] n진수 게임

N진수 게임 튜브가 활동하는 코딩 동아리에서는 전통적으로 해오는 게임이 있다. 이 게임은 여러 사람이 둥글게 앉아서 숫자를 하나씩 차례대로 말하는 게임인데, 규칙은 다음과 같다. 숫자를 0

programmers.co.kr

반응형

댓글