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

Error Coder·2022년 9월 28일
0

프로그래머스

목록 보기
2/7
# 논리 연산자, 진법 변환
# 매개변수랑 함수내 변수 다르게 하기
def solution(n, arr1, arr2):
    result = []
    
    # arr1과 arr2를 zip으로 묶기
    for num1, num2 in zip(arr1, arr2):
        # 2진수로 바꿔줌
        elem = str(bin(num1 | num2))[2:]
        # 앞이 0으로 시작하는 2진수가 사라지기 때문에 변의 길이에서 숫자만큼 수를 뺀후 '0'을 곱하고 더함
        elem = '0' * (n - len(elem)) + elem
        # '1'을 '#'으로 대체
        elem.replace('1', '#')
        # '0'을 ' '으로 대체
        elem.replace('0', ' ')

        result.append(elem)

    for i in range(len(result)):
        buffer = ''

        for j in range(len(result[i])):
            if result[i][j] == '1':
                buffer += '#'
            else:
                buffer += ' '

        result[i] = buffer

    return result

로직을 다 구현하고 마지막에 바꿔주는 구문을 안짜서 계속 헤맸었다.
푸는데만 거의 7시간 넘게 걸린것 같다... 다른 사람들 풀이를 보니까 현타가 장난 아니다.ㅎㅎ..
그렇지만 시작한지 얼마 안되어서 당연하다고도 생각하고 더 열심히 해야겠다.

<감명받은 코드 풀이>

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

<배운 것>

  • 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(3, "a")
print(val)
00077
77777
aa123
123
  • ljust

왼쪽으로 정렬하도록 도와준다.

rjust를 통해 공백의 수, 공백을 메워줄 문자를 넣어준다.

val = "222".ljust(3, "0")
print(val)

val = "222".ljust(15, "a")
print(val)
222
222aaaaaaaaaaaa
  • zfill

0을 왼쪽에 채워주는 역할을 한다.

val = "2".zfill(3)
print(val)

val = "50000".zfill(5)
print(val)

val = "123".zfill(5)
print(val)
002
50000
00123
profile
개발자 지망생

0개의 댓글