Algorithm

[카카오 코테 2018 | python] 비밀지도

삐롱K 2025. 6. 19. 13:18
Q1) 문제를 어떻게 이해했나요?
A1) 주어진 두 지도를 각각 이진수 형태로 변환하고, 각 위치에서 둘 중 하나라도 벽(1)이면 전체 지도에서 벽으로 표시해야합니다.
Q2) 어떤 방식으로 풀건가요?
A2) OR 연산을 수행하여 둘 중 하나라도 1이면 1이 되도록 처리를 합니다. 그리고, 그 결과를 n자리의 2진수로 변환합니다.
2진수 문자열에서 '1' 은 '#'으로 '0'은 ' '으로 치환하여 리스트로 반환합니다.

 

🔥 내 코드: 2진수를 직접 구하는 함수를 만들었음

def num_to_2(n, num):
    result = ""
    while num > 0:
        result = str(num % 2) + result
        num //= 2
    if len(result) < n:
        result = "0" * (n - len(result)) + result
    return result

def solution(n, arr1, arr2):
    answer = []
    for x, y in zip(arr1, arr2):
        ans = ""
        x2 = num_to_2(n, x)
        y2 = num_to_2(n, y)
        
        for i in range(n):
            if x2[i] == "1" or y2[i] == "1":
                ans += "#"
            else:
                ans += " "
        answer.append(ans)
    return answer

 

💡 최적화된 코드: 2진수를 바로 구할 수 있는 format(num, "b")함수 사용

def solution(n, arr1, arr2):
    answer = []
    for i in range(n):
        # 비트 OR 연산
        combined = arr1[i] | arr2[i]
        # 이진수로 변환, n자리로 맞추기
        binary_str = format(combined, 'b').zfill(n)
        # '#'과 ' '로 변환
        line = ''.join(['#' if c == '1' else ' ' for c in binary_str])
        answer.append(line)
    return answer

 

[추천 강의]

https://inf.run/7TU84

 

38군데 합격 비법, 2025 코딩테스트 필수 알고리즘| 딩코딩코 - 인프런 강의

현재 평점 5.0점 수강생 2,019명인 강의를 만나보세요. 초보자도 쉽게 이해하는 단계별 설명으로, 막연했던 코딩 테스트가 명확해집니다. 필요한 것만 배우고 바로 실전에 적용하세요! 알고리즘,

www.inflearn.com

 

https://inf.run/jzapB

 

6주 완성! 백엔드 이력서 차별화 전략 4가지 - 똑같은 이력서 속에서 돋보이는 법| 딩코딩코 - 인

현재 평점 5.0점 수강생 457명인 강의를 만나보세요. 모든 이력서가 비슷해 보이는 세상, ‘차별화’가 합격을 만듭니다. 6주간, 백엔드 실무자가 직접 전하는 실전 이력서 전략 4가지를 배우세요.

www.inflearn.com

 

728x90
반응형