알고리즘

[프로그래머스 Lv1 - 2018 KAKAO BLIND RECRUITMENT] 비밀지도 (Python)

lwkejpf 2022. 7. 1. 00:44

 


 

def solution(n, arr1, arr2):
    answer = []
    n_arr1 = []
    n_arr2 = []
    
    for i in range(n) :
        b = bin(arr1[i])[2:]
        while (True) :
            if len(b) == n :
                break
            else :
                b = '0' + b
        n_arr1.append(b)
        
    for i in range(n) :
        b = bin(arr2[i])[2:]
        while (True) :
            if len(b) == n :
                break
            else :
                b = '0' + b
        n_arr2.append(b)
    
    for i in range(n) :
        temp = ''
        for k in range(n) :
            if (n_arr1[i][k] == n_arr2[i][k]) and n_arr1[i][k] == "0" :
                temp += ' '
            else :
                temp += '#'
        answer.append(temp)
    return answer

 

ㅠㅠㅠㅠㅠㅠㅠㅠㅠ 진짜 

될 것 같은데 자꾸 어디선가 오류나고 디버깅 안 돼서 어딘지도 모르겠고 

한창 헤메서 코드 엎고 다시 머리 굴리고 ... 기빨려

 

arr1, arr2 일단 2진법으로 변환하고

길이 n 될 때까지 앞에 0 붙여줘야 함 !!!

 

그리고 arr1, arr2 합쳐놓은 2차원 배열 result 하나 만들어서 

일단 싹다 '#' 로 초기화해놓고 arr1, arr2 둘 다 공백 겹치는 거 있으면

그 부분만 ' ' 으로 바꿔줄라 했는데

왜인지 모르겠는데 자꾸 인덱스 오류남 엉엉

그래서 포기하고 그냥 문자열 temp 에 이어붙이는 식으로 구현했다,, 끝

 

 

그리고 난 이거 풀면서 첨 알았다 ..

진법 자동으로 변환해주는 함수가 있단 걸 ^..

 

2진법 변환 => bin()

8진법 변환 => oct()

16진법 변환 => hex()

 

결과는 모두 String 형이고,

0b.., 0o.., 0x.. 형태로 나오니까 떼고 사용하려면 뒤에 [2:] 붙여주면 됨!