[프로그래머스 LV.0] 배열 조각하기 — Python 정답 & 해설

2026. 6. 11. 16:46·코딩테스트/알고리즘

🔗 1. 문제 URL

https://school.programmers.co.kr/learn/courses/30/lessons/181893

 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

 


 

📝 2. 문제 요구사항 정리

정수 배열 arr와 query가 주어졌을 때, query를 순서대로 확인하면서 arr의 특정 구간만 남기는 문제입니다. query의 인덱스가 짝수인지 홀수인지에 따라 잘라내는 방향이 달라집니다.

  • 짝수 인덱스: query[i]번 인덱스까지는 남기고, 그 뒤쪽 원소들을 잘라냅니다.
  • 홀수 인덱스: query[i]번 인덱스부터 끝까지 남기고, 그 앞쪽 원소들을 잘라냅니다.
  • 최종 반환값: 모든 query를 처리한 뒤 남아 있는 arr의 부분 배열을 반환합니다.

 


 

💡 3. 핵심 개념

✔ 1) query의 인덱스 기준으로 동작 나누기

이 문제에서 중요한 점은 query의 값 자체가 아니라, 현재 query가 몇 번째 인덱스에 있는지입니다. 인덱스가 짝수라면 뒤쪽을 제거하고, 홀수라면 앞쪽을 제거해야 하므로 idx % 2 값을 기준으로 분기할 수 있습니다.

✔ 2) Python 슬라이싱으로 배열 자르기

Python에서는 슬라이싱을 이용하면 배열의 일부 구간만 간단하게 가져올 수 있습니다. arr[:val + 1]은 0번 인덱스부터 val번 인덱스까지 남기고, arr[val:]은 val번 인덱스부터 마지막 원소까지 남깁니다.

✔ 3) 매 단계마다 갱신되는 arr 사용하기

query를 처리할 때마다 arr의 길이와 원소 구성이 달라집니다. 따라서 처음 주어진 arr를 기준으로 계속 계산하는 것이 아니라, 매번 잘라낸 결과를 다시 arr에 저장하면서 다음 query를 처리해야 합니다.

 


 

✅ 4. 정답 Python 코드

def solution(arr, query):
    for idx, val in enumerate(query):
        if idx % 2 == 1: # 홀수 인덱스
            arr = arr[val : ]
        else: # 짝수 인덱스
            arr = arr[ : val + 1]
    
    return arr

 


 

💬 5. 풀이하면서 느낀 점

문제 설명만 보면 앞부분과 뒷부분을 번갈아 자르는 과정이 조금 헷갈릴 수 있지만, query의 인덱스가 짝수인지 홀수인지에 따라 동작을 나누면 훨씬 단순하게 정리할 수 있는 문제였습니다.

특히 Python 슬라이싱의 끝 인덱스는 포함되지 않는다는 점을 잘 기억해야 했습니다. 짝수 인덱스에서 query[i]번 인덱스까지 남겨야 하므로 arr[:val + 1]처럼 +1을 해주는 부분이 핵심이었습니다.

 

궁금하신 점이나 포스팅에 대한 피드백이 있다면 댓글로 편하게 남겨주세요.

도움이 되셨다면 공감이나 댓글 한 줄 남겨주시면 포스팅을 이어가는 데 큰 힘이 됩니다. 😊

'코딩테스트 > 알고리즘' 카테고리의 다른 글

[프로그래머스 LV.0] 유한소수 판별하기 — Python 정답 & 해설  (1) 2026.06.13
[프로그래머스 LV.0] 배열 만들기 2 — Python 정답 & 해설  (0) 2026.06.11
[프로그래머스 LV.2] 행렬의 곱셈 — Python 정답 & 해설  (0) 2026.05.22
[프로그래머스 LV.1] 모의고사 — Python 정답 & 해설  (0) 2026.05.21
[프로그래머스 LV.1] 두 개 뽑아서 더하기 — Python 정답 & 해설  (0) 2026.05.21
'코딩테스트/알고리즘' 카테고리의 다른 글
  • [프로그래머스 LV.0] 유한소수 판별하기 — Python 정답 & 해설
  • [프로그래머스 LV.0] 배열 만들기 2 — Python 정답 & 해설
  • [프로그래머스 LV.2] 행렬의 곱셈 — Python 정답 & 해설
  • [프로그래머스 LV.1] 모의고사 — Python 정답 & 해설
작지만 꾸준한 성장으로
작지만 꾸준한 성장으로
contact
  • 작지만 꾸준한 성장으로
    파랑새
    작지만 꾸준한 성장으로
  • 전체
    오늘
    어제
    • 분류 전체보기 (26)
      • IT (3)
      • 코딩테스트 (23)
        • 알고리즘 (12)
        • MYSQL (11)
      • 패션 (0)
      • 독후감 (0)
      • TIL (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    프로그래머스 lv.2
    sql 코딩테스트
    프로그래머스 lv.0
    모델 추론
    wide format
    백준
    와이드 포맷 롱 포맷
    I/O Bound
    파이썬
    long format
    공공데이터 전처리
    Pandas pivot
    데이터 전처리 파이프라인
    파이썬코테
    코테
    mysql
    python3
    데이터 리모델링
    Python
    알고리즘
    CPU Bound
    Pandas groupby agg
    자바
    SWEA
    프로그래머스 lv.1
    코딩테스트
    데이터베이스
    Programmers
    프로그래머스
    Pandas melt
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
작지만 꾸준한 성장으로
[프로그래머스 LV.0] 배열 조각하기 — Python 정답 & 해설
상단으로

티스토리툴바