코딩테스트

[프로그래머스/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로 짧은거 같고 다른 사람 코드들을 보면 확실히 짧게 만든 코드들이 있지만 해석을 좀 해야해서 더 찾아보고 바꿀 방법을 찾던가 해야겠다