코딩테스트

[프로그래머스][KAKAO_BLIND][2018] 비밀지도

pythaac 2021. 9. 2. 20:18
프로그래머스 코딩테스트 고득점 Kit의 문제입니다.

https://programmers.co.kr/learn/challenges?tab=algorithm_practice_kit

 

코딩테스트 연습

기초부터 차근차근, 직접 코드를 작성해 보세요.

programmers.co.kr

 

문제

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

 

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

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

programmers.co.kr

 

내가 작성한 코드

def solution(n, arr1, arr2):
    answer = []
    for a, b in zip(arr1, arr2):
        v = a | b
        crnt = []
        for _ in range(n):
            v, b = divmod(v, 2)
            if b == 1:
                crnt.append('#')
            else:
                crnt.append(' ')
        answer.append(''.join(crnt[::-1]))

    return answer
  • 비트연산
    • 두 수의 이진수에 대해 하나의 지도에만 1이 있어도 1로 취급하므로 OR
    • 이진수를 만들기 위해 2로 거듭나눔
    • 나머지에 따라 0 또는 1이므로, 이에 맞는 '#'과 ' ' 대입
    • 결과가 뒤집어져 나오므로 crnt[::-1]

 

다른 사람이 작성한 코드

None

 

기억해야할 것

  • 만약 음수가 포함되었다면?
    • 나누기로 접근하기 어려우니 mask를 사용해서 n자리수마다 판별하면 될 듯하다