https://programmers.co.kr/learn/courses/30/lessons/17681
코딩테스트 연습 - [1차] 비밀지도
비밀지도 네오는 평소 프로도가 비상금을 숨겨놓는 장소를 알려줄 비밀지도를 손에 넣었다. 그런데 이 비밀지도는 숫자로 암호화되어 있어 위치를 확인하기 위해서는 암호를 해독해야 한다. 다
programmers.co.kr
2진수 변환을 해주고 n자리에 맞춰서 앞에 숫자까지 채워준 뒤 단순 값 비교해주면 되는 문제였다!
어렵지 않지만 차근차근 집중해서 구현해야 했다.
매번 진법 변환을 건드리게 되는데 divmod 쓰면 참 코드가 깔끔할텐데 매번 직접 나눠서 한다... ㅎㅎ
def convert10to2(num, n):
map_data = ''
while True:
map_data += str(num % 2)
num = num // 2
if (num // 2) == 0:
map_data += str(num % 2)
break
if len(map_data) != n:
return '0'*(n - len(map_data)) + map_data[::-1]
else:
return map_data[::-1]
def solution(n, arr1, arr2):
answer = []
map1 = []
for a in arr1:
map1.append(convert10to2(a, n))
map2 = []
for b in arr2:
map2.append(convert10to2(b, n))
for i in range(len(map1)):
# map1[i]는 문자열
result = ''
for j in range(len(map1[i])):
# map1[i][j]는 문자
if map1[i][j] == "0" and map2[i][j] == "0":
result += " "
else:
result += "#"
answer.append(result)
return answer
파이썬 진법 변환 코드는 한번 더 적어봤다.
# 진법(base)를 입력받아 변환해주는 코드~
def convert(num, base):
result = ""
while num > 0:
num, mod = divmod(num, base)
result += str(mod)
return result[::-1]
'Algorithm > 프로그래머스' 카테고리의 다른 글
[프로그래머스] Lv2 주식가격 - python (0) | 2022.07.22 |
---|---|
[프로그래머스] Lv2 소수 찾기 - python (0) | 2022.07.22 |
[프로그래머스] 신규 아이디 추천 (python) (0) | 2022.07.01 |
[프로그래머스] 완주하지 못한 선수 (python) (0) | 2022.06.30 |
[프로그래머스] 가장 큰 수 (0) | 2022.06.27 |