Algorithm
[프로그래머스] Lv.2 n진수 게임
Chemi___6_oj
2023. 2. 10. 14:50
문제 이해 : 6분
문제 풀이 : 25분
def solution(n, t, m, p):
change = ''
for i in range(t*m):
change += str(jinsu(i,n))
return change[p-1:t*m:m]
def jinsu(num, jin):
rev_base = ''
if num == 0:
return 0
while num > 0:
num, mod = divmod(num, jin)
if jin > 10 and 10<= mod <= 15:
rev_base += chr(mod + 55)
else:
rev_base += str(mod)
return rev_base[::-1]
생각한 방법
1. 몇진수인지 파악해 그 수로 변환하는 함수를 만든다. 이때 함수에서 10~15인 경우를 생각해서 처리해준다.
2. m명이 t개의 문자 길이가 될때 까지 해야 하므로 m*t까지 연산을 해준다.
3. 그리고 구간에 맞게 알맞게 슬라이싱
이렇게 생각해서 구현하면 한번에 맞을 수도 있지만 테스트케이스만 다 맞고 제출에서 틀리는 경우가 있다.
그럴 경우에는 문제를 다시 돌아가서 봐야한다.어떤 조건이 있는지, 저런 조건이 왜 있는지를 한번 고민해보자.
문제를 보면 10~15인 경우에는 알파벳으로 변경을 해준다.
근데 생각을 해보면 11진수~16진수에만 저렇게 나머지(mod)가 10~15이 나오는 것을 파악할 수 있다.
그래서 이런 경우에 한해서만 따로 알파벳으로 변환하는 처리를 해주면 금방 해결된다.
배울점
여기서 중요한 것은 테스트케이스를 다 맞고 제출에서 틀렸다면, 문제에 있는 조건을 한번 잘 파악해보자.
답을 내는 부분의 구현은 안틀렸을 것이다!