{}연습장
대시보드학습스킬 경로문제모의고사라이브 코테복습데이터
문제 목록〉연결 리스트〉화물 열차 구간 재편성← 이전다음 →
#012 · 연결 리스트중간부분 뒤집기,포인터 조작

화물 열차 구간 재편성

문제

화물 열차의 객차들은 앞에서 뒤로 하나씩 연결되어 있어 단일 연결 리스트로 표현됩니다. 각 노드는 객차 한 량이고, val은 그 객차에 실린 화물 번호입니다.

하역장 사정으로 앞에서 start번째부터 end번째까지의 객차 구간만 순서를 뒤집어야 합니다. 구간 밖의 객차는 원래 자리를 그대로 지킵니다.

열차의 맨 앞 객차 head와 두 정수 start, end가 주어질 때, 재편성이 끝난 열차의 맨 앞 객차를 반환하는 solution(head, start, end) 함수를 작성하세요.

객차 번호는 1번부터 셉니다.

예시

열차 start end 반환값 설명
[7,3,9,1,5] 2 4 [7,1,9,3,5] 2~4번째 3,9,1이 1,9,3으로 뒤집힘
[4,8,6] 1 3 [6,8,4] 열차 전체가 뒤집힘
[2,5] 1 1 [2,5] 구간 길이가 1이라 변화 없음
[10,20,30,40] 3 4 [10,20,40,30] 꼬리 쪽 두 량만 교체

제약 조건

  • 열차의 객차 수를 L이라 할 때 1 ≤ L ≤ 500
  • 1 ≤ start ≤ end ≤ L
  • -1,000 ≤ 화물 번호 ≤ 1,000 (같은 번호가 여러 객차에 실릴 수 있습니다)
  • 새 노드를 만들지 않고 연결만 바꿔서 해결하는 것을 목표로 하세요

시간 복잡도 목표: O(L), 추가 공간 O(1)

테스트 케이스

예시 1: 가운데 구간 뒤집기
입력: head = [7,3,9,1,5], start = 2, end = 4
출력: [7,1,9,3,5]
예시 2: 전체 뒤집기
입력: head = [4,8,6], start = 1, end = 3
출력: [6,8,4]
예시 3: 길이 1 구간 → 변화 없음
입력: head = [2,5], start = 1, end = 1
출력: [2,5]
예시 4: 꼬리 쪽 구간
입력: head = [10,20,30,40], start = 3, end = 4
출력: [10,20,40,30]
객차가 하나뿐
입력: head = [9], start = 1, end = 1
출력: [9]
양끝 한 량씩 남기고 뒤집기
입력: head = [1,2,3,4,5,6], start = 2, end = 5
출력: [1,5,4,3,2,6]
solution.ts
에디터 로딩 중…

▶ 실행은 기록 없이 채점만, 제출은 결과가 진행률·오답노트에 기록됩니다.