지나가던 개발자

[Python] NYPC 2023 Round 1 <게임 안에서 책을 읽을 수 있다구요?> 문제 풀이 본문

PS/Python

[Python] NYPC 2023 Round 1 <게임 안에서 책을 읽을 수 있다구요?> 문제 풀이

KwonYongHyeon 2023. 8. 16. 14:28

 

n, m = map(int, input().split())
book = []
for i in range(n):
    book.append(input())
for i in range(len(book)):
    if book[i][0] == "<":
        continue
    book[i] = book[i].split()

toPrint = []
for x in book:
    if x[0] == "<":
        toPrint.append(x)
        continue
    a = 0
    to_print = ""
    for j in x:
        a += len(j)
        if a > m:
            a = 0
            toPrint.append(to_print)
            to_print = j
            continue
        a += 1
        to_print += j
    if to_print != "":
        toPrint.append(to_print)

status = "LEFT"
#print(book)
for x in book:
    if x == "<CENTER>":
        status = "CENTER"
        continue
    elif x == "<RIGHT>":
        status = "RIGHT"
        continue
    elif x == "</CENTER>" or x == "</RIGHT>":
        status = "LEFT"
    else:
        toPrint = ""
        a = 0
        i = 0
        for y in x:
            a += len(y)
            if a >= m and toPrint != "":
                if status == "LEFT":
                    #print(1)
                    print(toPrint+"-"*(m-len(toPrint)))
                elif status == "RIGHT":
                    #print(2)
                    print("-"*(m-len(toPrint))+toPrint)
                else:
                    #print(3)
                    if (m-len(toPrint))%2 == 0:
                        print("-"*((m-len(toPrint))//2) + toPrint + "-"*((m-len(toPrint))//2))
                    else:
                        print("-"*((m-len(toPrint))//2) + toPrint + "-"*((m-len(toPrint))//2+1))
                a = len(y)
                i = 1
                toPrint = y
            else:
                if i>=1:
                    a += 1
                    toPrint += "-"
                    toPrint += y
                    continue
                i += 1
                toPrint += y

        if toPrint != "":
            if status == "LEFT":
                #print(4)
                print(toPrint+"-"*(m-len(toPrint)))
            elif status == "RIGHT":
                #print(5)
                print("-"*(m-len(toPrint))+toPrint)
            else:
                #print(6)
                if (m-len(toPrint))%2 == 0:
                    print("-"*((m-len(toPrint))//2) + toPrint + "-"*((m-len(toPrint))//2))
                else:
                    print("-"*((m-len(toPrint))//2) + toPrint + "-"*((m-len(toPrint))//2+1))
Comments