풀이 과정
이 문제는 10 ~ 15는 각각 대문자 A ~ F로 출력해야되기 때문에 어렵게 느껴질 수 있다.
그러나, number 변수에 '0'~'F'를 담아두고, 나머지를 인덱스로 사용하면 된다.
진수에 따라 Num 함수를 실행시켜주고 이어붙여준다.
그 문자열을 반복문을 돌려 첫 인덱스는 튜브의 순서 p에 -1한 값이고
게임에 참가하는 인원 m만큼 플러스를 해주면 답이 나온다.
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
char number[16] = {'0', '1', '2', '3', '4', '5', '6', '7',
'8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
string Num(int n, int num){ // 진수, 숫자
string str = "";
if(num == 0) return "0";
while(num != 0){
str += number[num % n];
num /= n;
}
reverse(str.begin(), str.end());
return str;
}
string solution(int n, int t, int m, int p) {
string answer = "";
string str = "";
for(int i = 0; i <= t * m; i++){
str += Num(n, i);
}
for(int i = p - 1; i < t * m; i += m){
answer += str[i];
}
return answer;
}
'🍞 Problem Solving > Programmers' 카테고리의 다른 글
[프로그래머스][Level2] 수식 최대화 c++ (0) | 2022.10.21 |
---|---|
[프로그래머스][Level2] 배달 c++ (0) | 2022.10.21 |
[프로그래머스][Level2] 카펫 c++ (0) | 2022.10.21 |
[프로그래머스][Level2] 소수 찾기 c++ (0) | 2022.10.21 |
[프로그래머스][Level2] 구명보트 c++ (0) | 2022.10.21 |