본문 바로가기
SWEA 문제 풀이

SWEA[D2] 1946. 간단한 압축 풀기 python 풀이

by ODEU 2022. 7. 13.
728x90

SWEA[D2] 1946. 간단한 압축 풀기 python 풀이입니다.

(사실 하나도 안 간단해요ㅠ)

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5PmkDKAOMDFAUq&categoryId=AV5PmkDKAOMDFAUq&categoryType=CODE&problemTitle=1946&orderBy=FIRST_REG_DATETIME&selectCodeLang=ALL&select-1=&pageSize=10&pageIndex=1 

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com


오늘의 에러 포인트

값을 매 테스트 케이스마다 초기화 시켜줘야 하는데 for문 바깥에 적어서 초기화가 안 된 상태로 계속 for문이 진행되어 결과 값이 이상해졌다. 앞으로는 매 케이스마다 초기화 되어야 하는 값이 반복문 안에 잘 들어가 있는지 확인하자.

 

최종 제출한 코드

함수를 만들면 코드의 길이를 더 줄일 수 있을 것 같다.

 

T = int(input())
for i in range(T):
    result = ''
    tot_len = 0
    N = int(input())
    for j in range(N):
        char_num = input()
        a = char_num.split(' ')
        length = int(a[1])
        tot_len += length
        result += a[0] * length
    left = tot_len % 10
    line_num = tot_len // 10
    index = 0
    tag = str(i + 1)
    print("#" + tag)
    if left == 0:
        for m in range(line_num):
            print(result[index: index + 10])
            index += 10
    else:
        for n in range(line_num):
            print(result[index: index + 10])
            index += 10
        print(result[-left:])

함수로 만들어서 코드 수를 줄여보았다. 시간이 조금 더 걸린다.

def printer(r, num):
    index = 0
    for m in range(num):
        print(r[index: index + 10])
        index += 10


T = int(input())
for i in range(T):
    result = ''
    tot_len = 0
    N = int(input())
    for j in range(N):
        char_num = input()
        a = char_num.split(' ')
        length = int(a[1])
        tot_len += length
        result += a[0] * length
    left = tot_len % 10
    line_num = tot_len // 10
    print("#" + str(i + 1))
    if left == 0:
        printer(result, line_num)
    else:
        printer(result, line_num)
        print(result[-left:])

 

728x90