반응형
포인트
1. 진법 변환을 잘할 수 있는가?
2. 프로그램 로직을 이해 할 수 있는가?
#include <string>
#include <algorithm>
using namespace std;
char number[18] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
'A', 'B', 'C', 'D', 'E', 'F'};
//16진수 진법 변환을 하는 법
string number_to_n(int num, int n){ // 진법변환은 이렇게 해보자
//num은 원하는 숫자
//n은 원하는 진법
string result;
// string s = bitset<8> (num).to_string();
// cout<<"s: "<<s<<'\n';
if(num == 0) return "0"; // 0은 무슨 진법이 와도 0
while(num > 0){ //
result += number[num % n];
num /= n;
}
reverse(result.begin(), result.end()); //거꾸로 돌려준다,
return result;
}
string number_to_2(int num, int n){
string result;
if(num == 0) return "0";
while(num>0) {
result = number[num % n] + result;
num/n;
}
return result;
}
string solution(int n, int t, int m, int p) {
string answer;
string temp;
int mt = m * t;
for(int num = 0; temp.size() <= mt; num++){
temp += number_to_n(num, n);
}
for(int i = 0; i < t; i++){
answer += temp[(m*i)+(p-1)];
}
return answer;
}
이진 법의 경우 stl 에서 bitset을 지원합니다. 2진수에서는 상당히 유용합니다.
python
DIGITS = list('0123456789ABCDEF')
def n_to_base(n, base):
if n == 0:
return '0'
# 각 자리수에 해당하는 문자열을 담을 리스트
result = []
while n > 0:
# 제일 마지막 자리의 숫자 구하기. 예를 들어 1658이면 '8'
result.append(DIGITS[n % base])
# 제일 마지막 자리 제거. 예를 들어 1658이면 165로
n = int(n // base)
# 뒤집어서 반환. 예를 들어 '8561'이면 '1658'
return ''.join(result[::-1])
def solution(n, t, m, p):
digits = []
turn = 0
while len(digits) < t * m:
digits += list(n_to_base(turn, n))
turn += 1
return ''.join(digits[p-1::m][:t])
2021 05 04 수정 버전 파이썬
def n_to_base(n, base):
DIGITS = '0123456789ABCDEF'
if n == 0:
return '0'
result = ""
while n > 0:
result = DIGITS[n % base] + result
n //= base
return result
def solution(n:int, t:int, m:int, p:int) -> str:
digits = []
turn = 0
while len(digits) < t * m:
# t*m 명 까지 구한다.
digits.extend(list(n_to_base(turn, n)))
# 개수를 구한다.
turn += 1
#구한 것들을 이어 붙인다.
return ''.join(digits[p - 1::m][:t])
반응형
'알고리즘' 카테고리의 다른 글
[알고리즘] 후보키 (0) | 2021.05.05 |
---|---|
[알고리즘] 파일명 정렬 (0) | 2021.05.04 |
[알고리즘] 문자열 압축 (0) | 2021.05.03 |
[알고리즘] Running Sum of 1d Array (0) | 2021.05.03 |
[알고리즘] 괄호 변환 (0) | 2021.05.02 |
댓글