문제
https://school.programmers.co.kr/learn/courses/30/lessons/17681
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
내 풀이
최대한 파이토닉하게 짜려고 노력하였다.
비트 마스킹을 이용하고 싶어서 한 번 사용해보았다.
먼저 비트 마스크에서 '|'를 사용하여 벽인 곳을 추출하였다.
그리고 숫자를 이진수 문자열로 바꾸어주는 bin 함수를 사용하고, 빈 곳을 '0'으로 채워주는 zfill 함수, 그리고 '1'과 '0'을 정답 포맷에 맞게 바꾸어주는 replace 함수를 사용하였다.
파이썬 함수로 덕지덕지 바르는 바람에 코드가 짧고 간결해졌다.
def solution(n, arr1, arr2):
answer = []
answer = [a|b for a, b in zip(arr1, arr2)]
answer = [((bin(x)[2:].zfill(n)).replace('1', '#')).replace('0', ' ') for x in answer]
return answer
과거 내 풀이
귀엽다.
def binary(n, a):
decode = ""
for i in range(n):
decode += str(a%2)
a = a//2
decode = decode[::-1]
return decode
def solution(n, arr1, arr2):
answer = list()
mapa, mapb = list(), list()
for a in arr1:
mapa.append(binary(n, a))
for b in arr2:
mapb.append(binary(n, b))
for ma, mb in zip(mapa, mapb):
mapab = ""
for i in range(len(ma)):
if ma[i] == '1' or mb[i] == '1':
mapab += '#'
elif ma[i] == '0' and mb[i] == '0':
mapab += ' '
answer.append(mapab)
return answer
총평
과거의 '나'에게서는 순수하지만 무지함이 보인다면, 현재의 '나'에게서는 노련함이 보인다.
'알고리즘 > 카카오 EASY' 카테고리의 다른 글
압축 (Level 2) (0) | 2022.07.25 |
---|---|
다트 게임 (Level 1) (0) | 2022.07.11 |
캐시 (Level 2) (0) | 2022.07.08 |
프렌즈4블록 (Level 2) (0) | 2022.07.08 |
후보키 (Level 2) (0) | 2022.07.07 |