문제) [1차] 비밀지도
코딩테스트 연습 - [1차] 비밀지도
비밀지도 네오는 평소 프로도가 비상금을 숨겨놓는 장소를 알려줄 비밀지도를 손에 넣었다. 그런데 이 비밀지도는 숫자로 암호화되어 있어 위치를 확인하기 위해서는 암호를 해독해야 한다. 다
programmers.co.kr
- 내 풀이
- zip() 함수로 리스트 두개 한 번에 불러서 비교
- 숫자 → 2진수 문자열 변환 : .format(숫자, '(길이)b')
[Python] 2진수 / 8진수 / 16진수
2진수 / 8진수 / 16진수 표현 앞에 접두어를 붙여 구분한다 2진수 : 0b 8진수 : 0o 16진수 : 0x print(42==0b101010) #결과 True 숫자 10진수 → 2진수 / 8진수 / 16진수 변환 파이썬 내장함수 사용 접두어가..
yygs321.tistory.com
def solution(n, arr1, arr2):
s=''
answer = []
for a,b in zip(arr1,arr2):
a=format(a,'b') #숫자를 2진수로 치환: .format(숫자, 'b')
b=format(b,'b')
#2진수 길이 맞추기
while len(a)<n:
a='0'+a
while len(b)<n:
b='0'+b
for i,j in zip(a,b):
if (i=='0' or i==' ') and (j=='0' or j==' '):
s+=' '
else:
s+='#'
answer.append(s)
s='' #s 초기화
return answer
n=5
arr1=[9, 20, 28, 18, 11]
arr2=[30, 1, 21, 17, 28]
print(solution(n,arr1,arr2)
#결과
["#####","# # #", "### #", "# ##", "#####"]
- 다른 사람 풀이
- 숫자를 2진수로 변환하는 방법
- bin(숫자) : '0b2진수문자열' 형식으로 변환
- 2진수: 0b / 8진수 0o / 16진수 0x
- bin(a | b) 로 a와 b의 이진수 값을 한번에 합침 : 길이가 달라도 가능!
- n칸이 되도록 빈자리에 0 채우기
- .zfill(n)
- .rjust(n, "채울 문자열")
def solution(n, arr1, arr2):
answer = []
for a,b in zip(arr1,arr2):
a12=bin(a|b)[2:]
a12=a12.rjust(n,'0') #a12=a12.zfill(n) 도 가능
a12=a12.replace('1','#')
a12=a12.replace('0',' ')
answer.append(a12)
return answer
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
| [프로그래머스] [2019 KAKAO BLIND RECRUITMENT] 실패율 (0) | 2022.03.09 |
|---|---|
| [프로그래머스] [Level 1] 부족한 금액 계산하기 (0) | 2022.03.09 |
| [프로그래머스] [Level 1] 2016년 (0) | 2022.03.08 |
| [프로그래머스] [Level 1] 가운데 글자 가져오기 (0) | 2022.03.06 |
| [프로그래머스] [Level 1] [2018 KAKAO BLIND RECRUITMENT] [1차] 다트게임 (0) | 2022.03.06 |