사용 언어 - Python3
문제 - [1차] 비밀 지도
정답
bin 사용해서 이진법 변환 (정답 맞춘 여부 X)
bin을 까먹고 무식하게 나누기/몫 으로 2진법 변환했더니, 테스트3에서 실패
def solution(n, arr1, arr2):
# arr1 이진법으로 바꾸기
new1 = []
for i in arr1:
a = ''
while i > 1:
a += str(i%2) #나머지
i = i//2 # 몫
a += str(1)
if len(a) < n:
while len(a) < n:
a += str(0)
new1.append(a[::-1])
# arr2 이진법으로 바꾸기
new2 = []
for j in arr2:
b = ''
while j > 1:
b += str(j%2) #나머지
j = j//2 # 몫
b += str(1)
if len(b) < n:
while len(b) < n:
b += str(0)
new2.append(b[::-1])
# 암호 해독
answer = []
for i in range(n):
c = ''
for j in range(n):
if new1[i][j] == new2[i][j] and new1[i][j] == str(0):
c += ' '
else:
c += '#'
answer.append(c)
return answer
bin을 사용하기!
bin(10진법) = 0b2진법
bin(arr1[i])[2:]
길이가 n보다 작다면, 앞을 0으로 채워줘야 한다.
def solution(n, arr1, arr2):
answer = []
new1 = []
new2 = []
# bin 함수로 이진법으로 바꾸기
for i in range(n):
# 앞의 '0b' 없애주기 [2:]
new1.append(bin(arr1[i])[2:])
new2.append(bin(arr2[i])[2:])
# 0으로 길이 n개 채워주기
new1[i] = ('0'*(n-len(new1[i]))) + new1[i]
new2[i] = ('0'*(n-len(new2[i]))) + new2[i]
# 암호 해독
answer = []
for i in range(n):
c = ''
for j in range(n):
if new1[i][j] == '0' and new2[i][j] == '0':
c += ' '
elif new1[i][j] == '1' or new2[i][j] == '1':
c += '#'
answer.append(c)
return answer
레퍼런스
- 2진수, 8진수, 16진수 내장함수
2진수 = bin(10진수)[2:]
8진수 = oct(10진수)[2:]
16진수 = hex(10진수)[2:]
int('0b1001',2) = 9
int('0o11',8) = 8+1 = 9
int('0x110',16) = 16**2 + 16 + 0 = 272
format(9,'b') = '0b1001'
- 정답 깃허브
'Algorithm > 구현' 카테고리의 다른 글
[프로그래머스 lv 1] 소수 만들기 (0) | 2023.05.31 |
---|---|
[프로그래머스 lv 1] 예산 (0) | 2023.05.30 |
[프로그래머스 lv 1] [1차] 다트 게임 (1) | 2023.05.30 |
[프로그래머스 lv 1] 신규 아이디 추천 (0) | 2023.05.29 |
[프로그래머스 lv 1] 실패율 (0) | 2023.05.28 |
댓글