인천의 자유인

[Python] [1차]비밀지도 - 프로그래머스(Lv.1) 본문

Python/Python코딩테스트

[Python] [1차]비밀지도 - 프로그래머스(Lv.1)

Youngook 2024. 6. 17. 08:59
728x90
반응형

반응형

 

 

 

 

나의 문제 풀이

def solution(n, arr1, arr2):
    answer = []
    for i in range(len(arr1)):
        string = ''
        number1,number2 = '',''
        num1,num2 = arr1[i], arr2[i]
        for j in range(n):
            number1 += str(num1%2)
            number2 += str(num2%2)
            num1 = num1//2
            num2 = num2//2
        for z in range(len(number2)):
            if number1[z] == '1'or number2[z] == '1':
                string += '#'
                continue
            string+=' '
        answer.append(''.join(reversed(string)))
    return answer

 

먼저 결과값을 출력할 변수 answer의 빈 리스트를 만듭니다. 

 

그리고 for문을 실행하는데 결과값의 요소(#이 들어가는 문자열)를 만들 string을 선언합니다. 또한 이진수를 표현할 number1, number2를 생성하고 각각 arr1,arr2의 요소들을 선언합니다. 그 이후로는 number1, number2에 num1, num2의 나머지를 추가해 이진수를 더합니다. number1, number2의 이진 숫자가 하나라도 1이라면 #을 하고 아니면 공백을 추가함으로서 answer이라는 리스트에 추가합니다.

 

여기서 왜 ''.join(reversed(string)으로 추가했냐면 그냥 하게되면 거꾸로 출력이 되기 때문입니다. 이진수로 변환할 때 거꾸로 출력이 되면 이렇게 원래 모양으로 만듭니다.

 

이런씩으로 answer 리스트에 추가하게 되면 우리가 원하는 출력 값을 얻을 수 있습니다.

728x90
반응형