상세 컨텐츠

본문 제목

백준 1992번

알고리즘 공부

by 독서와 여행 2020. 11. 3. 22:05

본문

import sys
global compressesion
compressesion = []
n = int(sys.stdin.readline())
user_input = []
for i in range(n):
    user_input.append(sys.stdin.readline().split())

def compression_possible(data):
    zero = []
    one = []
    zero_sample = ['0'*(len(data))]
    one_sample = ['1'*(len(data))]
    for i in range(len(data)):
        zero.append(zero_sample)
        one.append(one_sample)
    if zero == data :
        return 1  
    elif one == data :
        return 2   
    else:
        return False
def divide(data):
    size = len(data) // 2
    left_up_data = []
    right_up_data = []
    left_down_data = []
    right_down_data = []
    for i in range(size): 
        left_up_data.append([data[i][0][:size]]) 
        right_up_data.append([data[i][0][size:]]) 
        left_down_data.append([data[i+size][0][:size]])
        right_down_data.append([data[i+size][0][size:]])
    
    return left_up_data, right_up_data, left_down_data, right_down_data

def tree(data):
    global compressesion
    possible = compression_possible(data)
    if possible:
        compressesion.append(str(possible - 1))
        return 0 
    else :
        left_up_data = []
        right_up_data = []
        left_down_data = []
        right_down_data = []
        left_up_data, right_up_data, left_down_data, right_down_data = divide(data)
        compressesion.append('(')
        tree(left_up_data)
        tree(right_up_data)
        tree(left_down_data)
        tree(right_down_data)
        compressesion.append(')')


def compress(data):
    possible = compression_possible(data)
    if possible:
        #possible = possible -1
        compressesion.append(str(possible - 1))
    else :
        left_up_data = []
        right_up_data = []
        left_down_data = []
        right_down_data = []
        left_up_data, right_up_data, left_down_data, right_down_data = divide(data)
        compressesion.append('(')
        tree(left_up_data)
        tree(right_up_data)
        tree(left_down_data)
        tree(right_down_data)
        compressesion.append(')')

compress(user_input)
solving =''.join(compressesion)
print(solving)

 

 

 

개념은 다 맞았는데 모두 1일때나 0일때 

print가 (0)이 아니라 0이 되어야 하는데 문제를 꼼꼼히 읽지 않았다.

게다가  print(solving) 라고 되어있어서 처음에는 

if possible:

    print('({})'.format(possible -1)

이렇게 해서 애초에 틀렸겠다.

지식인 expert 5000원 쿠폰 있길래 그거 써서 물어봤다. 

매번 입력값 실제로 넣기 귀찮았는데 

그거 해결하는 법이나 좀 구상 해봐야겠다.

'알고리즘 공부' 카테고리의 다른 글

프로그래머스 - 전화번호 목록  (0) 2021.03.17
프로그래머스 체육복  (0) 2021.03.16
파이썬 2630번  (0) 2020.10.30
백준 4949번 파이썬  (0) 2020.10.22
백준 파이썬 1003번  (0) 2020.09.10

관련글 더보기

댓글 영역