-
프로그래머스 Lv2 [3차]n진수 게임Computer Science/프로그래머스 2023. 9. 26. 08:48
https://school.programmers.co.kr/learn/courses/30/lessons/17687
문제는 다음과 같다.
참가자들이 순서대로 문자를 번갈아가며 말한다.
예를들면 10진수 일 때 세 사람이 있다면
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13...문자열에서 순서대로 문자를 말하면 되는데
10이상 부터는 앞의 문자를 끊어서 말한다.
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 0, 1, 1, 1, 2, 1, 3...
따라서 n이라는 숫자가 있으면 n의 숫자에서 10의 나머지를 더하는 식으로 값을 구하면 된다.
while(n > 0) { result += hex[n % base]; n = n / base; } reverse(result.begin(), result.end());
12의 나머지는 2, 1 순으로 더해지므로 이 값을 반전 시키면 된다.
문자열 0인 경우를 처리하기 위해 변환 스트링은 "0"으로 초기화했다.
string convert = "0";
그리고, 순서대로 문자열을 선택해야 하므로 튜브의 순서 - 1 부터, t * m까지 m만큼 누적시키며 값을 구했다.
for(int i = p - 1; i < t * m; i += m) answer += convert[i];
전체 코드는 아래와 같다.
#include <string> #include <vector> #include <algorithm> using namespace std; string hex = "0123456789ABCDEF"; string NumToHex(int n, int base) { string result; while(n > 0) { result += hex[n % base]; n = n / base; } reverse(result.begin(), result.end()); return result; } string solution(int n, int t, int m, int p) { string answer; string convert = "0"; for(int i = 1; convert.size() <= t * m; ++i) convert += NumToHex(i, n); for(int i = p - 1; i < t * m; i += m) answer += convert[i]; return answer; }
진수를 변환 시킬 때 등호를 헷갈렸는데,,,0이라는 숫자 때문에 헷갈렸다...항상 꼼꼼히 계산하자.
'Computer Science > 프로그래머스' 카테고리의 다른 글
프로그래머스 Lv2 [3차]압축 (0) 2023.09.26 프로그래머스 Lv2 [3차]파일명 정렬 (0) 2023.09.26 프로그래머스 Lv2 의상 (0) 2023.09.24 프로그래머스 Lv2 다리를 지나는 트럭 (0) 2023.09.24 프로그래머스 Lv2 스택/큐 기능개발 (0) 2023.09.23