Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 기타 연주
- VS Code
- C#
- SSH
- 프로그래머스
- pip
- mysql
- YOLO
- ubuntu
- pytorch
- 핑거스타일
- pandas
- Selenium
- 컨테이너
- Docker
- nvidia-smi
- Numpy
- Visual Studio
- C++
- Linux
- C
- OpenCV
- label
- Python
- windows forms
- paramiko
- JSON
- 오류
- 채보
- error
Archives
- Today
- Total
기계는 거짓말하지 않는다
[Programmers] n진수 게임 본문
프로그래머스 - n진수 게임 문제 입니다.


0부터 시작되는 수를 2~16진수로 바꿔줄 수 있으면 됩니다.
10진수를 n진수의 n으로 나눈 나머지를 n진수에 맞게 문자열로 변환하면 됩니다.
이 문자열에서 자신의 순서와 같은 문자를 정답에 추가합니다.
게임에 참가하는 인원이 m이므로 m으로 나눈 나머지의 +1이 자신의 순서가 됩니다.
#include <string> using namespace std; string convertNum(int n) { // 나머지를 n진수에 맞게 변환 switch(n) { case 10: return "A"; case 11: return "B"; case 12: return "C"; case 13: return "D"; case 14: return "E"; case 15: return "F"; default: return to_string(n); } } string chgBase(int base, int num) { // n진수 숫자를 문자열로 변환 if(num < base) return convertNum(num); return chgBase(base, num / base) + convertNum(num % base); } string solution(int n, int t, int m, int p) { string answer = ""; string preNumStr; int preNum = 0, cnt = 0, order = 0; int i; while(cnt != t) { preNumStr = chgBase(n, preNum++); // preNum = 현재 n진수로 바꿀 숫자, 0부터 시작 for(i = 0; i < preNumStr.length(); i++) { order = order % m; if(order + 1 == p) { // 자신의 차례와 같으면 cnt++; // 미리 구할 숫자의 현재 개수 answer += preNumStr[i]; // 현재 변환된 n진수 숫자의 일부분 정답에 추가 order++; // 다음 순서로 if(cnt == t) break; // 미리 구할 숫자의 개수와 같으면 종료 } else order++; } } return answer; }
'Programming Test' 카테고리의 다른 글
[Programmers] 다음 큰 숫자 (C++) (0) | 2022.10.09 |
---|---|
[Programmers] 프린터 (0) | 2021.06.24 |
[Programmers] 더 맵게 (0) | 2021.05.18 |
[Programmers] 올바른 괄호 (0) | 2021.05.03 |
[Programmers] 등굣길 (0) | 2021.05.02 |