백준> 바구니 뒤집기

SeiLyn·2023년 10월 16일

백준

목록 보기
1/17

❓ 문제

백준 브론즈 2 문제 > 바구니뒤집기

❗ 해결

배열을 인덱싱해서 뒤집어줘야 하므로 투포인터로 뒤집는게 떠올라서 투포인터로 풀었다.

if __name__ == "__main__":

    N, M = map(int, input().split())

    s = [i + 1 for i in range(N)]


    for _ in range(M):
        start, end = map(int, input().split())

        while start < end:
            s[start-1], s[end-1] = s[end-1], s[start-1]
            start += 1
            end -=1

    print(*s)

바구니는 1번부터 N번까지 순서대로 적혀져 있다고 했다.
s는 바구니 리스트이다.
i, j를 입력받고 i번째 바구니부터 j번째 바구니의 순서를 역순으로 만든다.
즉 start, end를 입력받고 start index가 end index 보다 커질 때 까지 배열의 위치를 바꾼다.
배열의 위치를 바꿔주고 왼쪽 포인터(start)는 +1, 오른쪽 포인터(end)는 -1 해준다.
그 뒤 예제 출력은 배열 형식이 아닌 순서를 공백으로 구분하므로 예제에 맞게 출력해준다.

0개의 댓글