코딩테스트/PYTHON
[프로그래머스][PYTHON] Lv. 1 [1차] 비밀지도
_알파카
2024. 8. 14. 14:57
728x90
문제 설명
https://school.programmers.co.kr/learn/courses/30/lessons/17681
2017년 카카오 신입 공채 코딩 테스트 1번 문제이다.
비트 연산을 이용하는 문제이다.
정답 풀이
def solution(n, arr1, arr2):
answer = []
for i in range(n):
# 2진수 연산 진행
num = bin(arr1[i] | arr2[i])
# 자리수를 통일해주는 함수(zfill)
num = num[2:].zfill(n)
num = num.replace("1", "#")
num = num.replace("0", " ")
answer.append(num)
return answer
문제의 숫자 중 둘 중 하나가 1일 경우에는 벽(#)이 생기기 때문에 OR(|)을 사용하면 잘 풀 수 있다.
정답률이 81.78%라고 하는데, 나는 제대로 못 풀었다ㅠㅠ
1. 먼저, 주어진 n만큼 for문을 순회하며,
2. bin 함수를 이용해 2진수로 변환함과 동시에 OR 연산을 활용한다.
3. 2진수로 변환하면 0bxxx와 같은 형식이기 때문에 앞의 2자리를 없애주고,
00001인 경우는 그냥 1로 출력되기 때문에 '00001'로 출력될 수 있게 zfill 함수를 사용해준다.
4. 마지막으로 1을 #으로, 0을 공백으로 변환하여 answer에 넣어준다.
2진수를 처리하는 것 까지는 해결했는데,
그 후 공백을 채울 방법을 생각해내는 것이 어려웠다.
++ zfill 함수에 관한 내용을 별도의 글로 남겨두었다! 까먹지 말자!
728x90