티스토리 뷰

N진수 게임


누가 이런겜을 하는지


입출력 예제


n : 2

t : 4

m : 2

p : 1

result : "0111"


해결 방법


가장 중요한 것은 N진수를 만드는 방법이라고 생각합니다

20이라는 숫자있고 4진수로 만들고 싶으면

   4|20 

   4| 5 ....0

   4| 1 ....1

   4| 0 ....1


이 방식대로 110이 나온다

중요한건 마지막에 나눈 값이 숫자의 가장 높은 자릿수가 되버린다. LIFO이기 때문에 스택방식으로 저장해서 빼낼 수 있지만

값을 20을 4로 나누고 0 데이터 넣고 (0)

그다음 5를 4로 나누고 1 데이터를 0 앞에다 넣고 (10)

그다음 1을 4로 나누고 1 데이터를 10 앞에다 넣어버리면 된다.


이렇게 값을 다 구했으면 튜브가 말해야 하는 위치를 골라서 answer에 넣어주면 된다.


소스 코드

#include <string>
#include <vector>

using namespace std;
string solution(int n, int t, int m, int p) {
	string answer = "";
	string value = "0";
	vector<string> number = { "0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F" };
	bool flag = true;
	int i = 1;
	int count= 1;
	while(count<t*m){		
		flag = true;
		string temp = "";
		int num = i;
		while (flag) {
			if (num / n == 0)
				flag = false;
			temp.insert(0,number[num%n]);
			num /= n;
		}
		count += temp.size();
		value += temp;
		i++;
	}
    
	for(int i=0,j=0;i<count&&j<t;i++){
		if (i%m == p - 1) {
			answer += value[i];
			j++;
		}
	}
	return answer;
}
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함