반응형
프로그래머스의 Level 01 2018 KAKAO BLIND RECRUITMENT 비밀지도 문제입니다.
문제
문제는 지문과 사진이 있어서 위의 사이트에 확인하시면 됩니다.
풀이
- 지도의 겹치는 부분을 구하기 위해서는 |(or 비트 연산자)를 사용하고 bin()로 이진수 문자열을 가져옵니다.
- Ex) 1 | 3 => 3
- Ex) bin(3)[2:] => 11
- 지도의 한 변의 길이 n보다 이진수 문자열 len(or_value)가 작다면 작은 길이만큼 '0'을 추가해줍니다.
- binary 리스트에 이진수의 값들을 for문을 돌려서 1이면 #, 0이면 ' '로 치환해서 추가해줍니다.
def solution(n, arr1, arr2):
answer = []
binary = []
or_value = ''
for a1, a2 in zip(arr1, arr2):
# a1 | a2 를 or 비트 연산을 한 뒤 bin()으로 이진수로 변환합니다.
or_value = bin(a1 | a2)[2:]
# 지도의 한변의 크기 n보다 작으면 n - len(or_value)의 갯수만큼 '0'을 더해줍니다.
if len(or_value) < n:
or_value = '0' * (n-len(or_value)) + or_value
binary.append(or_value)
for bina in binary:
map_str = ''
for b in bina:
if b == '1':
map_str += '#'
else:
map_str += ' '
answer.append(map_str)
return answer
다른 사람의 풀이
다른분의 풀이는 rjust와 replace 함수를 사용해서 제가 작성한 코드보다 훨씬 간단한 코드가 나옵니다...와우
- str.rjust(width, [fillchar]) : 문자열 앞 부분에 다른 문자열을 채울 수 있는 함수입니다.
- Ex) "2".rjust(3, "0") => 002
- "2"라는 문자열을 rjust를 기존값 포함 3개까지 앞부분을 0으로 채우는 것입니다.
- str.replace(old, new) : old인 원본 문자열이 new 새로운 문자열로 치환해주는 함수입니다.
- Ex) 'abcde'.replace('a', 'z') => zbcde
def solution(n, arr1, arr2):
answer = []
for a1, a2 in zip(arr1, arr2):
or_value = bin(a1 | a2)[2:]
or_value = or_value.rjust(n, '0')
or_value = or_value.replace("1", '#')
or_value = or_value.replace("0", ' ')
answer.append(or_value)
return answer
반응형
'코딩테스트 > Programmers' 카테고리의 다른 글
[SQL][PGS] 입양 시각 구하기(2) (0) | 2022.07.16 |
---|---|
[Java][PGS][Level2] 오픈채팅방 (0) | 2022.07.07 |
[Programmers][Python][Level 1] 짝수와 홀수 (0) | 2021.04.21 |
[Programmers][Python][Level 1] 제일 작은 수 제거하기 (0) | 2021.04.21 |
[Programmers][Python][Level 1] 나누어 떨어지는 숫자 배열 (0) | 2021.04.18 |
[Programmers][Python][Level 1] 내적 (0) | 2021.04.18 |
[Programmers][Python][Level 1] 음양 더하기 (0) | 2021.04.18 |
[Programmers][Python][Level 1] 예산 (0) | 2021.04.18 |