SW Expert Academy-5789-Python

cosmos·2023년 5월 12일
0
post-thumbnail

코드

from typing import List

def change_box(n: int, q: int, box: List[List[int]]) -> str:
    nums = [0] * n
    
    for i in range(1, q+1):
        start, end = box[i-1]
        nums[start-1:end] = [i] * (end - start + 1)
    
    return ' '.join(map(str, nums))

T = int(input())

for test_case in range(1, T + 1):
    n, q = map(int, input().split())
    data = [list(map(int, input().split())) for _ in range(q)]
    print(f'#{test_case} {change_box(n, q, data)}')

결과

ChatGPT Code

T = int(input())  # 테스트 케이스의 수를 입력받습니다.

for test_case in range(1, T + 1):
    N, Q = map(int, input().split())  # N과 Q를 입력받습니다.
    boxes = [0] * N  # 길이가 N이고 모든 상자의 값이 0인 리스트를 생성합니다.

    for _ in range(Q):
        L, R = map(int, input().split())  # L과 R을 입력받습니다.

        # L부터 R까지의 상자 값을 작업 번호로 변경합니다.
        for i in range(L - 1, R):
            boxes[i] = _ + 1

    # 변경된 상자의 값들을 출력합니다.
    print(f'#{test_case} {" ".join(map(str, boxes))}')

ChatGPT 문제풀이

입력값으로부터 테스트 케이스의 수 T를 받습니다.
T번 반복하면서 각 테스트 케이스에 대한 입력값을 받습니다.
길이가 N이고 모든 상자의 값이 0인 리스트를 생성합니다.
Q번 반복하면서 각 작업에 대해 L부터 R까지의 상자 값을 작업 번호로 변경합니다.
최종적으로 변경된 상자의 값들을 출력합니다.

ChatGPT 문제풀이와의 비교

ChatGPT Code 시간복잡도: 전체 시간 복잡도는 O(T (N + Q (R - L + 1)))
내 코드 시간복잡도: O(T * (N + Q))
동일한 효율성을 가진다.

문제출처 & 깃허브

sw expert academy
Github

0개의 댓글