Algorithm/프로그래머스

프로그래머스 비밀지도 문제 풀이 - [세무민의 코딩일기]

세기루민 2022. 2. 28. 00:00
728x90

안녕하세요 세기무민입니다.

이번에 풀어볼 문제는 2018년도 카카오 블라인드 테스트 1차 비밀지도 문제입니다.

문제 설명

입출력 및 예시

문제 풀이

이번 문제는 위의 설명대로 문제를 접근하면 됩니다.

요약을 하자면 


1. 2진수로 변환하기 

2. 2진수로 변환한 수의 자리수를 맞춰주기

3. 2진수로 변환한 값들을 비교 및 #으로 출력


arr1과 arr2의 값들을 2진수로 변환해서 두개를 합쳤을 때 1인 경우에 #으로 표시해주면 됩니다. 

여기서 2진수로 변환하는 방법이 여러가지가 있지만 저는 format을 이용하였습니다.

2진수로 변환을 완료했다면 다음으로 확인할 것은 해당 배열의 자리수와 일치하는지 확인이 필요하고 

만약 자리수가 다르면 자리수를 맞춰주면 됩니다.

마지막으로 자리수를 맞췄다면 해당 값들을 비교하여 #로 출력해주면 끝!

 

코드 및 결과
def solution(n, arr1, arr2):
    leftList = []
    rightList = []
    result = []

    for i in range(n):
        twos = format(arr1[i], 'b')
        twos1 = format(arr2[i], 'b')


        while n > len(twos):
            if n != len(twos):
                twos = '0' + twos

        while n > len(twos1):
            if n != len(twos1):
                twos1 = '0' + twos1

        leftList.append(twos)
        rightList.append(twos1)
        

    for i in range(n):
        tmp = ''
        for j in range(n):
            if leftList[i][j] == '1' or rightList[i][j] == '1':
                tmp = tmp + '#'
            else:
                tmp = tmp + ' '

        result.append(tmp)
            
    return result;

위의 설명처럼 만든 코드이며 해당 코드를 돌리면 정답이 됩니다. 


세기무민의 다양한 알고리즘 문제 풀이를 보고 싶다면 아래 깃에서 확인 가능합니다!

 

GitHub - sg-moomin/algorithmStudy_CodingTest

Contribute to sg-moomin/algorithmStudy_CodingTest development by creating an account on GitHub.

github.com


다음 포스팅에서는 더 유익한 정보로 찾아오겠습니다.!

728x90