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]

+ Recent posts