오류 및 알고리즘정리본
#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