기타

프로그래머스 비밀지도

우히힝 2021. 10. 31. 18:24

링크 : https://programmers.co.kr/learn/courses/30/lessons/17681

 

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

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

programmers.co.kr

 

문제의 예시를 보면

 

행의 오른쪽으로 갈수록 값이 작아지고 왼쪽에 있을수록 값이 큰데.

 

하나하나 더해보면 오른쪽에서 왼쪽으로 x2로 늘어나는걸 알수있다.

 

사진 행 = 5 이므로 [16,8,4,2,1] 의 값을 가짐.

 

이걸 이용해서 문제풀이를 했읍니다.

 

암호화 되어있는 arr1의 첫 번째 행을 보면 # 0은 공백을 뜻함.

[0,1,0,0,1] = 9 인데 

 

방금 올린 [16,8,4,2,1] 에 대해서 for 문을 돌려서 값을 조금씩 빼가면서 계산했음.

 

def solution(n, arr1, arr2):
    answer = []
    result = [[0]*n for i in range(n)]
    temp=[]
    for i in range(1,n+1):
        temp.append(2**(n-i))
    
    for i in range(n):
        while arr1[i] != 0:
            for j in range(n):
                if arr1[i] >= temp[j]:
                    arr1[i] -= temp[j]
                    result[i][j] = 1
    
    for i in range(n):
        while arr2[i] != 0:
            for j in range(n):
                if arr2[i] >= temp[j]:
                    arr2[i] -= temp[j]
                    result[i][j] = 1   
    a=""
    for i in result:
        for j in i:
            if j == 1:
                a += '#'
            else:
                a += " "
        answer.append(a)
        a=""
    return answer

 

시간은 잘 몰?루겠네요?