코딩테스트 연습 - [3차] n진수 게임 | 프로그래머스 스쿨 (programmers.co.kr)
문항이 조금 복잡했다.
문제에서 가장 중요한 것은
10진수를 입력받은 n진수로 변환하는 것.
2진수, 8진수, 16진수는 파이썬 내장함수가 존재하지만 (bin(), oct(), hex())
나머지는 직접 구현해야 했다.
다른 코드를 참고하였다.
[python]
* divmod(a,b) : a를 b로 나눈 몫과 나머지를 튜플 형태로 반환한다.
* int(string, n) : n진수의 string을 10진수로 변환한다. (참고)
def convert(num, base):
tmp = "0123456789ABCDEF"
q,r = divmod(num, base)
if q == 0:
return tmp[r]
else:
return convert(q,base) + tmp[r]
def solution(n, t, m, p):
answer = ''
test=''
for i in range(m*t):
test+= str(convert(i,n))
while len(answer) < t:
answer+= test[p-1]
p+=m
return answer
[java]
* 문자열 저장을 위해 StringBuilder를 사용한다.
* Integer.toString(a,b) : a를 b진수의 값으로 변환한다.
* Integer.parseInt(a,b) : b진수인 a를 10진수로 변환한다.
package programmers_java;
public class lv2_12 {
public String Solution(int n , int t, int m, int p) {
StringBuilder convert = new StringBuilder();
StringBuilder answer = new StringBuilder();
for(int i=0; convert.length() < m*t ; i++) {
convert.append(Integer.toString(i,n));
}
for(int i = p-1 ; answer.length() < t; i+=m) {
answer.append(convert.charAt(i));
}
return answer.toString().toUpperCase();
}
public static void main(String[] args) {
lv2_12 test = new lv2_12();
System.out.println(test.Solution(16, 16, 2, 1));
}
}
728x90
'자료구조 & 알고리즘 & cs > CodingTest' 카테고리의 다른 글
[python] 1976 - 여행 가자 (0) | 2023.06.01 |
---|---|
[python] 프로그래머스 Lv2. - 기능개발 (0) | 2023.06.01 |
[python] 4803 - 트리 (3) | 2023.05.26 |
[python] 1167 - 트리의 지름 (0) | 2023.05.23 |
[java/python] 프로그래머스 Lv2. - JadenCase 문자열 만들기 (0) | 2023.05.17 |