{}연습장
대시보드학습스킬 경로문제모의고사라이브 코테복습데이터
문제 목록〉연결 리스트〉화물 열차 앞뒤 무게 쏠림← 이전다음 →
#029 · 연결 리스트중간연결 리스트,빠른/느린 포인터

화물 열차 앞뒤 무게 쏠림

문제

화물 열차의 각 칸이 단일 연결 리스트로 이어져 있습니다. head는 맨 앞 칸이고, 각 노드의 val은 그 칸에 실린 화물의 무게(t)입니다.

기관사는 열차가 앞쪽으로 쏠렸는지 뒤쪽으로 쏠렸는지 확인하려 합니다. 열차를 앞 절반과 뒤 절반으로 나누되, 칸 수가 홀수라면 가운데 칸은 뒤 절반에 포함시킵니다. 즉 칸이 n개면 앞 절반은 floor(n / 2)칸입니다.

head가 주어질 때 (앞 절반 무게 합) − (뒤 절반 무게 합) 을 반환하는 solution(head) 함수를 작성하세요. 값이 양수면 앞쪽이, 음수면 뒤쪽이 더 무겁다는 뜻입니다.

예시

cars 결과 설명
[4, 7, 2, 9] 0 앞 4+7=11, 뒤 2+9=11
[3, 8, 5] -10 앞 3, 뒤 8+5=13 (가운데 칸은 뒤쪽)
[100, 1, 1, 1] 99 앞 101, 뒤 2
[10] -10 앞 절반은 0칸이므로 합은 0

제약 조건

  • 칸 수 n: 0 ≤ n ≤ 100,000 (n = 0이면 0을 반환합니다)
  • 0 ≤ Node.val ≤ 10,000
  • 리스트 길이를 미리 알 수 없으며, 리스트를 한 번만 훑고 풀 수 있습니다.

시간 복잡도 목표: O(n)

공간 복잡도 목표: O(1)

테스트 케이스

예시 1: 앞뒤 무게가 같음
입력: cars = [4,7,2,9]
출력: 0
예시 2: 홀수 → 가운데 칸은 뒤 절반
입력: cars = [3,8,5]
출력: -10
예시 3: 앞쪽으로 크게 쏠림
입력: cars = [100,1,1,1]
출력: 99
예시 4: 칸이 하나뿐 → 앞 절반은 0칸
입력: cars = [10]
출력: -10
빈 열차
입력: cars = []
출력: 0
두 칸
입력: cars = [6,2]
출력: 4
solution.ts
에디터 로딩 중…

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