지나가던 개발자

[Python] 백준 6992번(Arithmetic Sequence) 문제 풀이 본문

PS/Python

[Python] 백준 6992번(Arithmetic Sequence) 문제 풀이

KwonYongHyeon 2022. 10. 22. 12:41

 

for i in range(int(input())):
    sequence = list(map(int, input().split()))[1:]
    if len(sequence) == 0:
        continue
    if len(sequence) == 1:
        print("The next 5 numbers after [" + str(sequence[0]) + "] are: [", end="")
        for i in range(1, 6):
            if i == 5:
                print(str(sequence[0]+i) + "]")
                continue
            print(str(sequence[0]+i) + ", ", end="")
    elif len(sequence) == 2:
        print("The next 5 numbers after [" + str(sequence[0]) + ", " + str(sequence[1]) + "] are: [", end="")
        for i in range(sequence[1]-sequence[0], 6*(sequence[1]-sequence[0]), sequence[1]-sequence[0]):
            if i == 5*(sequence[1]-sequence[0]):
                print(str(sequence[1]+i) + "]")
                continue
            print(str(sequence[1]+i) + ", ", end="")
    else:
        d = sequence[1]-sequence[0]
        printed = False
        for i in range(1, len(sequence)-1):
            if sequence[i+1]-sequence[i] == d:
                continue
            print("The sequence", sequence, "is not an arithmetic sequence.")
            printed = True
            break
        if not printed:
            a = sequence[-1]
            print("The next 5 numbers after", sequence, "are: [", end="")
            for i in range(sequence[1]-sequence[0], 6*(sequence[1]-sequence[0]), sequence[1]-sequence[0]):
                if i == 5*(sequence[1]-sequence[0]):
                    print(str(a+i) + "]")
                    continue
                print(str(a+i) + ", ", end="")

 

코드가 상당히 불편한데, 뇌 빼고 코딩을 해서 그런다.

 

파이썬은 배열 전체를 출력 가능한데, n이 1일때와 2일 때는 그걸 깜빡하고 코드를 짜다가 n > 2일 때 그걸 깨닫고 코드를 짰다. 근데 또 n==1 or n==2 일 때 코드 수정하긴 귀찮아서 안바꿈...ㅋㅋ

Comments