본문 바로가기
코딩 깔짝

[Python] 21.07.10 : BOJ 11576 + join()

by ballena 2021. 7. 10.

BOJ 11576번(https://www.acmicpc.net/problem/11576)을 풀며.

.

.

.

진법 변환(https://ballenabox.tistory.com/6)에서 사용했던 방법을 어찌저찌 굴리면 될 것 같다.

 

예제 입력1

17 8

2

2 16

 

1단계 : 17진법 2자리 숫자, "2 16"을 10진법으로 변환

2단계 : 10진법으로 변환된 숫자를 8진법으로 변환

3단계 : 변환된 8진법을 자릿수별로 출력

 

우선...이전 글에서 리스트의 pop()을 사용했는데, 이것을 쓰면 변환할 자릿수의 index를 동적으로 작성할 필요가 없다.

마지막 index가 낮은 자릿수니, index를 -1로 잡아 낮은 자릿수부터 변환시킨다(1단계).

-> sum += arr[-1] * (17**i)     arr.pop(-1)

 

sum을 8진법으로 변환시킨다(2단계).

-> 10진법 수를 8로 나눈 첫 계산의 나머지는 8진수의 가장 낮은 자릿수가 나온다.

    몫을 다시 8로 나누면 아래에서 2번째 자릿수가 나온다.

    이 과정을 반복하면 결과 리스트의 앞에서부터 8진수의 낮은 자릿수가 채워진다.

 

결과 리스트를 역으로 출력하면 8진수 형태가 출력된다.

.

.

.

리스트의 출력에 있어서 양식이 필요할 때, 매번 반복문을 쓰기엔 번거로워 쓰이는 것이 join 함수다.

"구분자".join(리스트)의 형태로 사용한다. 문자열 출력에 사용함에 주의한다.

댓글