[프로그래머스] 비밀지도 Python (카카오 기출)
2021. 9. 9. 14:51ㆍdev
https://programmers.co.kr/learn/courses/30/lessons/17681?language=python3
풀이과정 요약
비트연산자 or을 사용한 연산결과를 이진수로 표현해서 저장한다.
이진수 결과를 하나씩 탐색하면서 1은 #으로, 0은 공백으로 문자열 치환을 해주었다.
전체 코드
def solution(n, arr1, arr2):
answer = []
dec_arr = list(zip(arr1, arr2))
bin_arr = []
for first, second in dec_arr:
result = first | second
bin_arr.append(bin(result)[2:].zfill(n))
for element in bin_arr:
tmp = element.replace("1", "#").replace("0", " ")
answer.append(tmp)
return answer
Line 4: arr1과 arr2의 원소를 인덱스별로 각각 뽑아서 묶어주기 위해 zip()함수를 사용했다.
입력이 arr1 = [9, 20, 28, 18, 11], arr2 = [30, 1, 21, 17, 28] 이라고 주어진다면 다음과같이 dec_arr 리스트에 저장될 것이다.
Line 6~9: dec_arr 리스트를 순회하면서 각 원소들에 대해 OR 비트연산을 진행한다. 문제에서 보면 겹치는 부분이 하나만 1이어도 1로 나타냈기 때문에 or연산을 돌려보면 결과가 바로 나오는걸 확인할수있다. 우리가 원하는건 이진수 형태이기 때문에 result를 binary형태로 바꿔준다음, 앞에 0b를 지우기 위해서 문자열 슬라이싱을 해주었다.
그리고 zfill() 함수를 사용하여 문자열을 n길이로 만들기 위해 앞을 0으로 채워준다.
Line 11~13: 마지막으로, 모든 원소들에 대해 문자열 "1"을 "#"으로, "0"은 " " 으로 치환해주기 위해 문자열 치환하는 함수 replace()를 사용해주었다.
'dev' 카테고리의 다른 글
javascript 스프레드 연산자 알아보기 (0) | 2024.01.29 |
---|---|
[JS 알고리즘] 프로그래머스 K번째 수 (0) | 2021.09.16 |
Python 딕셔너리를 튜플 리스트로 변환 (0) | 2021.09.07 |
[프로그래머스] 튜플 Python (카카오 기출) (0) | 2021.09.07 |
JS기초 | Ajax, JSON 개념정리 및 활용방법 (0) | 2021.08.24 |