https://school.programmers.co.kr/learn/courses/30/lessons/17687
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
풀이
1. 자연수 i의 (i=1,2,3,4...) n 진수를 string 형식으로 구해준다. temp라고 칭한다.
2. 구한 n진수에서 튜브의 순서에 해당하는 숫자가 있으면 answer에 더해준다.
index가 튜브의 순서에 해당하는 숫자이다. 튜브의 순서가 1번이고 2명이서 플레이한다면 1,3,5,7 ...순으로 숫자를 말해야한다.
i번째구한 n 진수의 길이가 temp.size() 이고 i번째까지 구한 n진수의 총 길이가 length라면
index번째에 해당하는 숫자를 temp 에서 index-length+temp.size()-1 번쨰에서 구할 수 있다.

3. t개 만큼 구했으면 while문을 탈출한다.
#include <string>
#include <vector>
#include <iostream>
using namespace std;
string solution(int n, int t, int m, int p) {
string answer = "";
int n_size = t*m;
int i=1;
int index = p;
int length = 1;
//0은 n진수 구하지 않을것이기 때문에 1번째 순서일 경우 미리 답을 count해줌
if(p==1)
{ answer+='0';
t--;
index+=m;
}
while(t){
//i를 n진법으로 구하기
string temp = "";
int num = i;
while(num){
temp = string(1,(num%n)>=10? num%n + 55 : num %n + '0') + temp;
num=num/n;
}
length += temp.size();
//t구할 수 있으면 구하기
while(index<=length && t){
answer+=temp[index-length+temp.size()-1];
t--;
index +=m;
}
i++;
}
return answer;
}
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 베스트 앨범 c++ (1) | 2024.01.03 |
---|---|
[프로그래머스] 의상 c++ (1) | 2024.01.02 |
[프로그래머스] 전력망을 둘로나누기 c++ (0) | 2023.12.21 |
[프로그래머스] 같은 숫자는 싫어 c++ (0) | 2023.11.29 |
[프로그래머스] 이모티콘 할인행사 c++ (1) | 2023.11.25 |