본문 바로가기
프로그래밍/알고리즘

프로그래머스 - 비밀지도 파이썬

by monicada 2023. 1. 13.
728x90

해결 코드 

def solution(n, arr1, arr2):

    result = []
    for i in range(n):
        result.append(arr1[i] | arr2[i])

    answer = []
    for r in result:
        word = bin(r)[2:]
        word = word.replace("1", "#")
        word = word.replace("0", " ")

        # 앞에 0 붙여주기
        while True:
            if len(word) == n:
                break
            word = " " + word
        answer.append(word)

    return answer

처음에 생각했던 아이디어 

1. 이진수로 바꾼다 

2.비트연산 중 OR연산자 돌리기 

 

풀면서 실제로 했던 순서 

1. 먼저 숫자를 더하기(배열에서 원래 더해야하는 것)

2. 이진수로 바꾸고 0bxxxxx 처럼 나와서 [2:]으로 슬라이싱해야한다

3. 1을 #로, 0을 ""으로 바꿔야 한다 

4. 반복문을 돌면서 문자열 길이가 안맞는 부분을 앞에서부터 ""처리해주어야 한다 

 

배운 것 

다른 분의 풀이인데 'rjust'를 활용해 간단하게 앞에 숫자를 넣는 코드가 있다 

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

주된 사용법은 

string.rjust(length, character)

이렇게 길이와, 어떤 것을 넣을지를 적는 형태이다 

공부하다가 돌려본 사진

 

 

문제

 

 

현황

기업 코테 기출을 풀면 뭔가 뿌듯함이 더 크다

댓글