본문 바로가기
TIL - 프로그래밍/Python 알고리즘

[SWEA] 5789. 현주의 상자 바꾸기 - Python

by chaemj97 2022. 2. 18.
728x90

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWYygN36Qn8DFAVm 

 

SW Expert Academy

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

swexpertacademy.com

 

< 📝 문제 >

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

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

 

법은 다음과 같다.

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

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

 

라.


< ❓ 생각 >

이전 삼성시의 버스 노선 문제처럼 0만 적힌 리스트를 만든 후 index가 L~R번의 해당하는 값에 i 값으로 바꾸기


< 💻 코드 >

# 테스트 케이스 개수
T = int(input())
for tc in range(1,T+1):
    # N : 상자의 개수, Q : 상자 변경을 반복할 횟수
    N,Q = map(int,input().split())
    
    # index 수 일치를 위해 리스트 길이 N+1
    result = [0]*(N+1)
    # L~R번의 상자의 해당 값을 i로 변경
    for i in range(1,Q+1):
        L,R = map(int,input().split())
        for j in range(L,R+1):
            result[j] = i

    print(f'#{tc}',*result[1:])
    print(f'#{tc}',' '.join(list(map(str,result[1:]))))


< ❗  >

리스트의 각 요소를 일렬로 나열할 때 언팩(*)연산자 말고 join을 통해서도 가능하다

' '.join(list(map(str,result[1:])))) : 리스트 result의 1번 요소 부터 각각 str로 변경한 것을 리스트로 바꾸고 그걸을 띄어쓰기 한 칸으로 구분하여 나열

728x90
반응형

댓글