코딩테스트
[프로그래머스/LEVEL 1/파이썬] 비밀지도
Sun0727
2022. 6. 27. 14:51
#문제링크
https://programmers.co.kr/learn/courses/30/lessons/17681
코딩테스트 연습 - [1차] 비밀지도
비밀지도 네오는 평소 프로도가 비상금을 숨겨놓는 장소를 알려줄 비밀지도를 손에 넣었다. 그런데 이 비밀지도는 숫자로 암호화되어 있어 위치를 확인하기 위해서는 암호를 해독해야 한다. 다
programmers.co.kr
#나의풀이
def solution(n, arr1, arr2):
answer = []
for i in range(n):
num1_bin = str(format(arr1[i], 'b')).zfill(n)
num2_bin = str(format(arr2[i], 'b')).zfill(n)
tmp = ''
for j in range(n):
if num1_bin[j] == '1' or num2_bin[j] == '1':
tmp += '#'
else:
tmp += ' '
answer.append(tmp)
return answer
#해설
n만큼 반복문을 돈다. arr1[i]와 arr2[i]값을 찾고 이를 이진수로 변환해준다. 처음에 포맷안에 05b를 썼다가 두번째 케이스에서는 6자리라 바꿔야함을 알았고 검색해보니 zfill(자릿수)을 쓰면 앞에 0을 채울수가 있었다. 이후 answer에 보내줄 tmp를 만들어줬다.
다시 n만큼 반복문을 돈다. 여기서 arr1[i]와 arr2[i]의 2진수의 각 자릿수를 찾을것이고 둘중 하나라도 1이면 # 아니면 빈 공백을 tmp에 보내준다 반복문이 다 돌았을시 answer에 tmp를 보내주었다.
#여담
다 풀고 썩 맘에 들지 않았다. 뭔가 내가 생각하고 짜던게 좀 방향이 틀어져서 짜게되었다.
처음 생각할때는 배열이 1과 0 으로 이루어지기 때문에 2개를 or로 하나로 합치고 찾으면 되지 않을까 생각했는데 그냥 생각나는대로 맘 편한대로 풀어버렸다. 걸린 시간도 0.02ms로 짧은거 같고 다른 사람 코드들을 보면 확실히 짧게 만든 코드들이 있지만 해석을 좀 해야해서 더 찾아보고 바꿀 방법을 찾던가 해야겠다