코딩테스트/SWExpertAcademy

현주의 상자 바꾸기 Python(SWEA)

멍토 2021. 2. 19.

난이도 : D3

문제번호 : 5789

문제 주소 및 출처입니다.

swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWYygN36Qn8DFAVm&categoryId=AWYygN36Qn8DFAVm&categoryType=CODE&problemTitle=%EC%83%81%EC%9E%90&orderBy=FIRST_REG_DATETIME&selectCodeLang=ALL&select-1=&pageSize=10&pageIndex=1

 

SW Expert Academy

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

swexpertacademy.com


 

목차

1. 문제 설명

2. 문제 해석

3. 소스 코드


1. 문제 설명

현주는 1번부터 N번까지 N개의 상자를 가지고 있다. 각 상자에는 숫자를 새길 수 있는데 처음에는 모두 0으로 적혀있다.

숫자가 너무 단조로웠던 현주는 다음 Q회 동안 일정 범위의 연속한 상자를 동일한 숫자로 변경하려고 한다. 변경하는 방법은 다음과 같다.

   ·  i (1 ≤ i ≤ Q)번째 작업에 대해 L번 상자부터 R번 상자까지의 값을 i로 변경

현주가 Q회 동안 위의 작업을 순서대로 한 다음 N개의 상자에 적혀있는 값들을 순서대로 출력하는 프로그램을 작성하라.

입력

첫 번째 줄에 테스트 케이스의 수 T가 주어진다.

각 테스트 케이스의 첫 번째 줄에는 두 정수 N, Q (1  N, Q  103)가 공백으로 구분되어 주어진다.

다음 Q개의 줄의 i번째 줄에는 Li, Ri (1  Li  Ri  N)이 주어진다.

출력

각 테스트 케이스마다 첫 번째 줄에는 ‘#x(x는 테스트케이스 번호를 의미하며 1부터 시작한다)를 출력하고,

각 테스트 케이스마다 Q개의 작업을 수행한 다음 1번부터 N번까지의 상자에 적혀있는 값들을 순서대로 출력한다.


2. 문제풀이

문제에서 시키는 데로 풀면 풀리는 문제이다.

시작과 끝점이 들어오면 해당 박스번호를 i로 바꿔준다.


3. 소스코드

# D3 5789 현주의 상자 바꾸기
 
def solution(N, Q):
    boxes = [0 for _ in range(N)]
    for i in range(Q):
        start, end = map(int, input().split())
        for j in range(start-1, end):
            boxes[j] = i + 1
    return boxes
        
 
 
for t in range(int(input())):
    N, Q = map(int, input().split())
    answer = solution(N, Q)
    print('#{} '.format(t+1), end='')
    print(*answer)

댓글

💲 광고입니다.