문제:

풀이방법:

이진수로 바꾸는 것이 가장 중요한 문제이다. 이진수로 바꾸는 것은 python의 bin을 사용하면 바꿀수 있다. 이 때 bin을 사용하면 앞에 이진수임을 나타내는 값이 붙어 있으므로 이를 떼어서 저장하는 것이 필요하다. 그리고 이를 한 변의 크기와 동일하게 만드는 것이 중요하다. 위 문제의 예시처럼 1은 1이지만 한변의 길이가 5이므로 00001로 맞춰준 것을 알 수 있다. 길이가 동일해야 해독할 수 있으므로 이 작업이 가장 중요하다. 길이를 같게 만들었다면 이제는 단순히 반복문을 사용해서 값을 비교하고 상황에 따라 "#"과 공백을 더해주면 된다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
def solution(n, arr1, arr2):
    answer = []
    for i in range(n):
        arr1[i]=bin(arr1[i])[2:]
        arr2[i]=bin(arr2[i])[2:]
    for i in range(n):
        code=""
        a=max(len(arr1[i]),len(arr2[i]))
        if n!=len(arr1[i]):
            arr1[i]="0"*(n-len(arr1[i]))+arr1[i]
        if n!=len(arr2[i]):
            arr2[i]="0"*(n-len(arr2[i]))+arr2[i]        
        for j in range(n):
            if arr1[i][j]==arr2[i][j]:
                if arr1[i][j]=='0':
                    code+=" "
                else:
                    code+="#"
            else:
                code+="#"
        answer.append(code)
    return answer
cs

 

 

문제링크:

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

'Algorithm > Python' 카테고리의 다른 글

[Programmers]2018 Kakao.실패율  (0) 2019.09.30
[Programmers]2018 Kakao. 오픈채팅방  (0) 2019.09.29
[Programmers]2017 Kakao.캐시  (0) 2019.09.27
[Programmers]2017 Kakao. 뉴스 클러스터링  (0) 2019.09.26
[BOJ]1987. 알파벳  (0) 2019.09.25

+ Recent posts