비밀지도(LEVEL 1)
2018 KAKAO BLIND RECRUITMENT
내가 제출한 답안
def solution(n, arr1, arr2):
answer = []
for i in range(n):
arr1[i] = list(format(arr1[i], 'b'))
arr2[i] = list(format(arr2[i], 'b'))
while len(arr1[i]) < n:
arr1[i].insert(0, 0)
while len(arr2[i]) < n:
arr2[i].insert(0, 0)
for j in range(n):
if int(arr1[i][j]) != int(arr2[i][j]):
arr1[i][j] = 1
a = ''
for k in range(n):
if int(arr1[i][k]) > 0:
a += '#'
else:
a += ' '
answer.append(a)
return answer
나의 풀이
- for 반복문을 활용하여 지도의 상단 기준으로 i번째부터 arr1, arr2 내부 값들을 바꿔준다.
- arr1, arr2 내에 정수 값들을 이진수 형태로 전환(format)
- '#' 형태로 전환하기 위한 사전작업
- while 반복문을 활용하여 arr1, arr2 내부 값이 지도의 한 변 크기(n)보다 작은 값이 있는지 확인
- 값이 작다면 n보다 커질때까지 0 값을 삽입(insert)
- for 반복문을 추가로 활용하여 arr1, arr2 지도 값을 arr1로 합쳐준다.
- 값이 다르면 1로 변환
- while 반복문을 활용하여 arr1, arr2 내부 값이 지도의 한 변 크기(n)보다 작은 값이 있는지 확인
- 합쳐진 arr1 지도 값을 각 층마다 확인하면서 '#'형태로 전환
- 값이 정수 1이면 '#'을, 0이면 공백 값을 임시 공간 a에 각 층마다 옮긴다.
- 한 줄 모이게 되면 answer에 이전
- i 값이 n-1번째까지 반복을 마치면 각 층마다 모은 answer을 반환
파이썬 관련 학습내용
- format 함수
- 문자열을 다양한 형태로 변환시켜주는 함수
- 여기서는 정수 값을 2진수로 전환시켜주는 기능 활용
- 형태 : format(n, 'type')
- n : 10진수 정수 값
- type : 2진수 → 'b', 8진수 → 'o', 16진수 → 'x'
- ex) (입력) format(9, 'b'), (출력) '1001'
- insert 함수
- 리스트에 요소를 삽입하고 싶을 때 사용하는 함수
- 형태 : list.insert(i, n)
- list의 i번째에 n을 삽입한다.
- ex)
a = [1, 0, 0, 1]
a.insert(0, 0) # 리스트 a의 0번째에 0 값을 삽입한다.
print(a) # 출력값 : [0, 1, 0, 0, 1]
'Algorithm' 카테고리의 다른 글
[프로그래머스] 비밀지도 with Javascript (0) | 2021.12.16 |
---|---|
[프로그래머스] 상호평가 with JavaScript (0) | 2021.09.18 |
[프로그래머스] 부족한 금액 계산하기 with JavaScript (0) | 2021.09.16 |
[프로그래머스] 다트 게임 with Python (0) | 2021.07.17 |
[프로그래머스] 크레인 인형뽑기 게임 with Pyhton (0) | 2021.07.08 |