본문 바로가기
프로그래머스/2단계

(Python/LV2) n진수 게임

by windy7271 2022. 10. 2.
728x90
반응형

문제출처: https://school.programmers.co.kr/learn/courses/30/lessons/17687

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

풀이:

def convert(n, base):
    T = "0123456789ABCDEF"
    q, r = divmod(n, base)
    if q == 0:
        return T[r]
    else:
        return convert(q, base) + T[r]
    # 역순인 진수를 뒤집어 줘야 원래 변환 하고자하는 base가 출력

def solution(n, t, m, p): # 인원수에 맞춰서 진수 까지 변환함
    str =''
    now = 0
    while len(str) < t * m:
        str += convert(now,n)
        now +=1
    res =[]
    for i in range(p-1,len(str), m):
        res.append(str[i])
        if len(res) == t:
            break
    return "".join(res)

 

1. 진수구하는 함수를 먼저 만든다

2. 참가인원 x 구하는 갯수 만큼의 str 을 만들어야 하므로 

3. 빈 str과 현재 숫자 0 으로 선언해줌

4. 와일문을 돌면서 1, 2, 3, ... 에 n진수값을  변환하여 str 로 넣어줌

 

5. 포문을 돌면서 시작은 p부터 str-1 까지 , 차이는 m (인원수 만큼)

6. 2진수 같은 예외

print(solution(2,4,2,1))

이 함수를 돌리면
01110
값이 나오므로 t의 길이만큼 맞춰줘야하므로 If문과 break문 추가

7. 리스트 형식이므로 Join 함수 사용

 

반응형

댓글