sohyeon kim

[Python] 프로그래머스 : [1차] 비밀지도 17681, format, bin, rjust, replace 본문

Coding Test

[Python] 프로그래머스 : [1차] 비밀지도 17681, format, bin, rjust, replace

aotoyae 2024. 8. 10. 20:42
728x90

 

 

📝 문제

네오는 평소 프로도가 비상금을 숨겨놓는 장소를 알려줄 비밀지도를 손에 넣었다. 그런데 이 비밀지도는 숫자로 암호화되어 있어 위치를 확인하기 위해서는 암호를 해독해야 한다. 다행히 지도 암호를 해독할 방법을 적어놓은 메모도 함께 발견했다.

  1. 지도는 한 변의 길이가 n인 정사각형 배열 형태로, 각 칸은 "공백"(" ") 또는 "벽"("#") 두 종류로 이루어져 있다.
  2. 전체 지도는 두 장의 지도를 겹쳐서 얻을 수 있다. 각각 "지도 1"과 "지도 2"라고 하자. 지도 1 또는 지도 2 중 어느 하나라도 벽인 부분은 전체 지도에서도 벽이다. 지도 1과 지도 2에서 모두 공백인 부분은 전체 지도에서도 공백이다.
  3. "지도 1"과 "지도 2"는 각각 정수 배열로 암호화되어 있다.
  4. 암호화된 배열은 지도의 각 가로줄에서 벽 부분을 1, 공백 부분을 0으로 부호화했을 때 얻어지는 이진수에 해당하는 값의 배열이다.

 

🫠 나의 풀이

def solution(n, arr1, arr2):
    answer = []

    for i in range(n):
        bin1 = format(arr1[i], 'b')
        bin2 = format(arr2[i], 'b')
        map = ""

        if len(bin1) < n: bin1 = (n - len(bin1)) * "0" + bin1
        if len(bin2) < n: bin2 = (n - len(bin2)) * "0" + bin2

        for j in range(n):
            if bin1[j] == "1" or bin2[j] == "1":
                map += "#"
            else: map += " "
        
        answer.append(map)

    return answer
def solution(n, arr1, arr2):
    answer = []

    for i in range(n):
        bin_map = format(arr1[i]|arr2[i], 'b').rjust(n,'0').replace("1", "#").replace("0", " ")
        answer.append(bin_map)

    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

 

 

 

🔗 https://hwan-hobby.tistory.com/215

 

비트연산자 bin()에 대하여

이번에는 비트연산자 bin()에 대해 알아보도록 하겠다: >>> 0b1010 10 >>> bin(0b1010) '0b1010' >>> bin(0b1010 & 0b100101) '0b0' >>> bin(0b1010 | 0b100101) '0b101111' >>> bin(0b1010 ^ 0b100101) '0b101111' >>> bin(~0b1010) '-0b1011' >>> bin(0

hwan-hobby.tistory.com

🔗 https://www.crocus.co.kr/1660

 

파이썬 rjust, ljust, zfill

rjust 오른쪽으로 정렬하도록 도와준다. rjust를 통해 공백의 수, 공백을 메워줄 문자를 넣어준다. val = "77".rjust(5, "0") print(val) val = "77777".rjust(5, "0") print(val) val = "123".rjust(5, "a") print(val) val = "123".rjust

www.crocus.co.kr

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

 

728x90
반응형