반응형
문제 링크
https://school.programmers.co.kr/learn/courses/30/lessons/17687
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제
풀이 및 코드
진법 변환에 대해서만 생각을 한다면 굉장히 쉬운 문제였다고 생각합니다.
포인트는 string arithmetic = "0123456789ABCDEF"를 이용하여 결국 2진법이면 01 3진법이면 012 .... 16진법이면 모든 airthmetic을 사용한다는 것을 기억해두고 문제풀이를 진행하였습니다.
n진법, 구할 숫자의 갯수t, 참가하는 인원m,튜브의 순서 p
1번 예제를 보자
4까지 구하는 거니
0 /(0)1/10/11/100이 되는건데
여기서 둘이서 하는데 첫번째 순서이니
0 1 1 1이 되어서 0111이 되는 것이다.
결국 저는 cnt를 설정해 cnt가 t와 같게 된다면 바로 return answer을 진행해주었습니다.
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
string num_conversion(int n, int num);
string solution(int n, int t, int m, int p) {
string answer = "";
int cnt = 0;
int num = 0;
int turn = 0;
string s;
while(1){
s = num_conversion(n,num);
for(int i = 0;i < s.length();i++){
turn++;
if(turn > m)
turn = 1;
if(turn == p){
cnt++;
answer.push_back(s[i]);
}
if(cnt == t)
return answer;
}
num++;
}
}
string num_conversion(int n, int num){
string arithmetic = "0123456789ABCDEF";
string con_num = "";
if(num == 0){ //0일때도 포함해야해서 return;
return "0";
}
while(num > 0){
con_num += arithmetic[num % n];
num /= n;
}
reverse(con_num.begin(),con_num.end());
return con_num;
}
반응형
'알고리즘 > c++ 프로그래머스' 카테고리의 다른 글
[프로그래머스 주차 요금 계산] c++ (풀이, 코드) (0) | 2023.05.21 |
---|---|
[프로그래머스 더맵게] c++ (풀이,코드, 효율성 해결 과정) (0) | 2023.05.19 |
[프로그머스 압축] c++ (풀이 및 코드) (0) | 2023.05.19 |
[프로그래머스 k진수에서 소수 개수 구하기] c++ (풀이법,코드) (1) | 2023.05.19 |
[프로그래머스 전화번호 목록] c++ (코드, 풀이, 개념) (0) | 2023.05.17 |
댓글