오류 및 알고리즘정리본

#12 프로그래머스 비밀지도 (0으로 문자열 채우기)

츄98 2023. 4. 28. 23:42

페어프로그래밍으로 오늘은 2018 KAKAO BLIND RECRUITMENT 부분에서 비밀 지도 문제를 풀었다!!!!!

카카오 문제.. 신기해..ㅎㅎ

 

 

1. 내가 푼 풀이

arr1 = [9, 20, 28, 18, 11]
arr2 = [30, 1, 21, 17, 28]

def solution(n, arr1, arr2):
    answer = []
    for i, j in zip(arr1,arr2):
        a = str(bin(i|j)[2:])
        a = a.rjust(n,'0')
        # rjust : 오른쪽 정렬해서 n보다 길이가 작으면 앞에는 0으로 채운다.
        a = a.replace('1', '#')
        a = a.replace('0', ' ')
        answer.append(a)
    return answer

 

 

2. 다른 팀원분들이 푼 풀이

def solution(n,arr1,arr2):
    answer = []
    for i in range(n):
        arr1[i] = format(arr1[i],'b')
        arr2[i] = format(arr2[i], 'b')
        # format(arr,'b'): arr을 이진수로!!

        text = ''
        a = str(int(arr1[i])+int(arr2[i]))
        if len(a)<n:
            a = '0'*(n-len(a)) + a
        for j in a:
            if j == '0':
                text += ' '
            else:
                text += '#'
        answer.append(text)
    return answer



def solution(n, arr1, arr2):
    answer = []
    for i in range(n):
        array = bin(arr1[i] | arr2[i])
        array = array[2:].zfill(n)
        # zfill(n): 원하는 문자열 길이를 지정하는 숫자를 매개변수로 사용하고 
        # 원하는 길이가 될 때까지 문자열 왼쪽에 0을 추가한다.
        # 매개변수로 전달된 숫자가 원래 문자열의 길이보다 작으면 변경 사항이 없다.
        array = array.replace('1','#').replace('0',' ')
        answer.append(array)
    return answer

 

 

[개념: 0으로 문자열 채우기!!]

1. zfill()

원하는 문자열 길이를 지정하는 숫자를 매개변수로 사용하고 원하는 길이가 될 때까지 문자열 왼쪽에 0을 추가한다.
매개변수로 전달된 숫자가 원래 문자열의 길이보다 작으면 변경 사항이 없다.

 

a="123"
print(a.zfill(5))

# 00123

a.zfill(5)은, 문자열 5자리를 맞춰주기 위해 이렇게 왼쪽에 0을 추가한다.

 

 

2. rjust() 또는 ljust()

rjust() 메서드는 문자열이 원하는 길이가 될 때까지 문자열 왼쪽에 선택적 문자를 추가한다.
마찬가지로 ljust() 메서드는 문자열이 원하는 길이가 될 때까지 문자열 오른쪽에 선택적 문자를 추가한다.
문자를 지정하지 않으면 기본값은 공백 " "이다.

 

a="123"
print(a.rjust(5))

#   123

a.rjust(5) 이면 자릿수를 맞춰주기 위해 왼쪽에 기본값인 공백을 추가한다.

 

 

a="123"
print(a.rjust(5,"0"))

# 00123

a.rjust(5,"0") 이면 자릿수를 맞춰주기 위해 왼쪽에 0을 추가한다.

 

 

a="123"
print(a.ljust(5,"0"))

# 12300

a.ljsut(5,"0") 이면 자릿수를 맞춰주기 위해 오른쪽에 0을 추가한다.

 

 

3. format()

format() 메서드는 문자열을 형식화하여 일부 패턴에 따라 원하는 형식으로 표시할 수 있다.
문자열이 원하는 길이가 될 때까지 문자열 왼쪽에 0을 추가하는 데 사용할 수 있다.
다만!!! 이 방법은 Python 2~Python 3.5에서만 사용할 수 있다.

 

A = 'Hello'
B = 'Jisu'
print('{:0>8}'.format(A))
print('{:0>5}'.format(B))

# 000Hello
# 0Jisu

 

 

4. f - string 이용하는 방법

format()이랑 굉장히 비슷!! 똑같이 원하는 길이가 될 때까지 문자열 왼쪽에 0을 추가하는 데 사용한다.

 

A = 'Hello'
B = 'Jisu'
print(f'{A:0>8}')
print(f'{B:0>5}')

# 000Hello
# 0Jisu