Algorithm/1일 1코테

[프로그래머스 Python] 비밀지도(from kakao)

대인보우 2020. 10. 13. 21:05
반응형

문제

programmers.co.kr/learn/courses/30/lessons/17681

 

코딩테스트 연습 - [1차] 비밀지도

비밀지도 네오는 평소 프로도가 비상금을 숨겨놓는 장소를 알려줄 비밀지도를 손에 넣었다. 그런데 이 비밀지도는 숫자로 암호화되어 있어 위치를 확인하기 위해서는 암호를 해독해야 한다. 다

programmers.co.kr

 

내 풀이

def solution(n, arr1, arr2):

    for num, i in enumerate(arr1): #arr1을 숫자->이진수->#,공백으로 변환
        b = bin(i)[2:]
        if len(b) < n:
            b = '0' * (n-len(b)) + b
        b = b.replace('1','#')
        b = b.replace('0',' ')
        arr1[num] = b
    
    for num, i in enumerate(arr2): #arr2도 마찬가지
        b = bin(i)[2:] #bin을 써서 앞에 두개를 빼줌
        if len(b) < n: #n 길이보다 작으면 
            b = '0' * (n-len(b)) + b #자릿수를 맞추기 위해 앞에 0을 붙여줌
        b = b.replace('1','#') 
        b = b.replace('0',' ')
        arr2[num] = b #숫자를 b로 변환
        
    # arr1이 공백인데, arr2가 #이면 #을 넣어주는 과정    
    answer = []
    
    for i in range(n):
        a = '' 
        for j in range(n):
            if arr1[i][j] == ' ' and arr2[i][j] == '#': 
                a += '#'
            else:
                a += str(arr1[i][j])
        answer.append(a)
        
    return answer

 

다른사람 풀이

def solution(n, arr1, arr2):
    answer = []
    for i,j in zip(arr1,arr2):
        a12 = str(bin(i|j)[2:])
        a12=a12.rjust(n,'0')
        a12=a12.replace('1','#')
        a12=a12.replace('0',' ')
        answer.append(a12)
    return answer

zip함수 - 동일한 길이의 리스트를 묶어주는 역할.

rjust - 패딩(채워주는 역할) ----> 함수가 있었다..

이렇게 간단하다니~~~~~~~~~~~~~!

반응형