기록
[Python] 비밀지도 본문
반응형
programmers.co.kr/learn/courses/30/lessons/17681
코딩테스트 연습 - [1차] 비밀지도
비밀지도 네오는 평소 프로도가 비상금을 숨겨놓는 장소를 알려줄 비밀지도를 손에 넣었다. 그런데 이 비밀지도는 숫자로 암호화되어 있어 위치를 확인하기 위해서는 암호를 해독해야 한다. 다
programmers.co.kr
십진수를 이진수로 바꾼 후 비트연산을 활용한 문제입니다.
def solution2(n, arr1, arr2):
answer = []
for num1, num2 in zip(arr1, arr2):
tmp = bin(num1 | num2)[2:]
if len(tmp) < n:
tmp = '0'*(n-len(tmp)) + tmp
tmp = tmp.replace('1', '#')
tmp = tmp.replace('0', ' ')
answer.append(tmp)
return answer
같은 인덱스의 원소끼리 비트연산을 해야겠죠?
zip() 함수를 통해 같은 인덱스의 원소 쌍을 뽑아냅니다.
그 후 원소쌍의 접두문자를 제거한 후 OR( | ) 연산을 합니다.
그런데 OR 연산 이후 이진수의 맨 앞자리가 0이면 이것이 생략되기 때문에 이것에 대한 예외처리를 해줘야합니다.
그래서 n-(len(tmp))로 필요한 자리만큼 0을 채워줬습니다.
그 후 replace() 함수를 통해 필요한 문자로 치환해주면 완료입니다.
def solution(n, arr1, arr2):
answer = [bin(num1 | num2)[2:].zfill(n).replace('1', '#').replace('0',' ') for num1, num2 in zip(arr1, arr2)]
return answer
한줄코딩
함께 알아두면 도움되는 내용
1) 문자열 정렬 함수
인자 : (width, fillchar)
ljust : 왼쪽 정렬
center : 가운데 정렬
rjust : 오른쪽 정렬
width의 길이만큼 정렬하되 fillchar로 공간을 채운다.
2) zfill(width) 함수
길이가 width가 될 때까지 문자열 앞에 '0'을 채우는 함수
반응형
'[Study] > 코딩테스트 연습' 카테고리의 다른 글
[Python] 크레인 인형뽑기 게임 (0) | 2020.11.08 |
---|---|
[Python] 3진법 뒤집기 (0) | 2020.11.07 |
[Python] 다트 게임 (0) | 2020.11.07 |
[JAVA] 백준 11053 가장 긴 증가하는 부분 수열 (0) | 2020.10.10 |
[Python] 프로그래머스 level2 - 큰 수 만들기 (0) | 2020.10.08 |