-
프로그래머스 - [3차] n진수 게임 [C++]문제 풀이/프로그래머스 2023. 8. 28. 00:20반응형
이 문제는 진법 변환을 이용한 구현 문제이다. 일단 입력의 숫자가 크지 않아 완전 탐색으로 가능하다. 그래서 최대 나올 수 있는 인덱스를 계산하면 최대 인원 100명 * 구해야하는 최대 수들 1,000개 = 100만이 나왔고, 정확하지 않기 때문에 150만 정도의 여유를 두고 모두 탐색하였다.
p - 1부터 시작해서 m씩 더해가면 해당 순서에 말해야하는 숫자가 numbers에 저장되어있으므로 answer에 추가해주면 시간 안에 풀 수 있다.
#include <string> #include <vector> #include <iostream> using namespace std; string convert(int num, int n) { string result = ""; if (n >= 11) { while (num > 0) { int temp = num % n; string str = ""; if (temp < 10) { str = to_string(temp); } else { switch (temp) { case 10: str += 'A'; break; case 11: str += 'B'; break; case 12: str += 'C'; break; case 13: str += 'D'; break; case 14: str += 'E'; break; case 15: str += 'F'; } } result = str + result; num /= n; } return result; } while (num > 0) { result = to_string(num % n) + result; num /= n; } return result; } string numbers; string solution(int n, int t, int m, int p) { string answer = ""; numbers += '0'; int num = 1; while (numbers.size() <= 1500000) { numbers += convert(num, n); num++; } int start = p - 1; while (t > 0) { answer += numbers[start]; start = start + m; t--; } return answer; }
반응형'문제 풀이 > 프로그래머스' 카테고리의 다른 글
프로그래머스 - 연속 펄스 부분 수열의 합 [C++] (2) 2023.08.28 프로그래머스 - 주차 요금 계산 [C++] (0) 2023.08.28 프로그래머스 - [3차] 압축 [C++] (0) 2023.08.26 프로그래머스 - n^2 배열 자르기 [C++] (0) 2023.08.25 프로그래머스 - 줄 서는 방법 [C++] (0) 2023.08.24