해설
수들을 n진수로 변환하여 모든 자리를 문자열로 결합한다.
튜브에게 t번 순서가 돌아온다고 할 때, 튜브는 전체 문자열에서 p, p+m, p+2m, ... , p+(t-1)*m 인덱스에 있는 문자를 말하게 된다.
전체 코드
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <tuple>
#include <vector>
#include <stack>
#include <queue>
#include <deque>
#include <climits>
#include <set>
#include <unordered_set>
#include <map>
#include <unordered_map>
#include <string>
#include <sstream>
#include <iostream>
using namespace std;
using ii = pair<int, int>;
using iii = tuple<int, int>;
#define X first
#define Y second
char conv[16] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
string solution(int n, int t, int m, int p) {
string s = "00";
for (int i=1; i<=100000; i++) {
//수 i를 n진수로 변환하여 각 자리를 stmp에 저장
int tmp = i;
string stmp = "";
while (tmp) {
stmp += conv[tmp%n];
tmp /= n;
}
reverse(stmp.begin(), stmp.end());
s += stmp; //stmp 뒤집어 s에 결합
}
string ret = "";
//튜브의 순서 때 말해야 하는 수만 ret에 차례로 저장
//튜브가 말해야 하는 인덱스는 p, p+m, p+2m, ..., p+m*(t-1)
for (int i=p; i<=p+m*(t-1); i+=m) ret += s[i];
return ret;
}
'대딩 > 프로그래머스풀이' 카테고리의 다른 글
[프로그래머스 lv2] 주차요금계산 풀이 (0) | 2022.03.24 |
---|---|
[프로그래머스 lv2] k진수에서 소수 개수 구하기 풀이 (0) | 2022.03.22 |
[프로그래머스 lv2] [3차]파일명 정렬 풀이 (0) | 2022.03.22 |
[프로그래머스 lv2] [3차]압축 풀이 (0) | 2022.03.21 |
[프로그래머스 lv2] 방금그곡 풀이 (0) | 2022.03.21 |
댓글