본문 바로가기
Python

Python/ join/ zip

by YUNZEE 2025. 8. 28.
728x90

1️⃣ join 이란?

파이썬에서 "구분자".join(리스트)는
리스트 안의 문자열들을 하나로 이어붙이는 메서드

words = ["pro", "gram", "mers"]
result = "".join(words)
print(result)   # programmers
  • "" : 빈 문자열을 구분자로 사용 → 그냥 붙임
  • " ".join(words) → "pro gram mers" (공백으로 구분)

 즉, join은 문자열을 합칠 때 쓰는 효율적인 방법임

2️⃣ zip 이란?

zip은 두 개(또는 그 이상)의 리스트를 쌍으로 묶어주는 함수

a = ["apple", "banana", "cherry"]
b = [1, 2, 3]

for x, y in zip(a, b):
    print(x, y)
 
출력
apple 1
banana 2
cherry 3

zip(a, b)는 [("apple", 1), ("banana", 2), ("cherry", 3)] 같은 형태로 묶어줌

 

3️⃣ 위의 함수를 사용해서 코드 분석하기

 
def solution(my_strings, parts): 
    return ''.join([x[y[0]:y[1]+1] for x,y in zip(my_strings, parts)])

🔎 분석

1. zip(my_strings, parts)

my_strings와 parts를 같은 인덱스끼리 묶음.

my_strings = ["progressive", "hamburger", "hammer", "ahocorasick"]
parts = [[0, 4], [1, 2], [3, 5], [7, 7]]

zip - 결과

("progressive", [0, 4])
("hamburger", [1, 2])
("hammer", [3, 5])
("ahocorasick", [7, 7])

 

 

2. 리스트 컴프리헨션 부분

[x[y[0]:y[1]+1] for x,y in zip(my_strings, parts)]
  • x는 문자열 (예: "progressive")
  • y는 인덱스 구간 (예: [0, 4])
  • x[y[0]:y[1]+1] → x[0:5] → "progr"

결과 리스트:

["progr", "am", "mme", "r"]

3. ''.join(...)

  • 리스트 안 문자열을 전부 이어 붙임
  • "progr" + "am" + "mme" + "r"
  • 최종 결과 = "programmers"

✅ 정리

  • join → 문자열 합치기
  • zip → 여러 리스트를 인덱스 맞춰 묶기
  • 이 문제 풀이 흐름:
    1. 문자열과 인덱스 구간을 짝지음 (zip)
    2. 각 구간대로 문자열을 잘라냄 (슬라이싱)
    3. 잘라낸 것들을 리스트에 모음
    4. 전부 합쳐 최종 문자열 반환 (join)
728x90