programmers coding test (1) : zip 함수와 join 함수

Jonah Ann·2024년 8월 12일
post-thumbnail

문제 설명

길이가 같은 두 문자열 str1과 str2가 주어집니다.

두 문자열의 각 문자가 앞에서부터 서로 번갈아가면서 한 번씩 등장하는 문자열을 만들어 return 하는 solution 함수를 완성해 주세요.

제한사항

1 ≤ str1의 길이 = str2의 길이 ≤ 10
str1과 str2는 알파벳 소문자로 이루어진 문자열입니다.

def solution(str1, str2):
    # 두 문자열의 각 문자를 번갈아 가며 결합
    result = ''.join(a + b for a, b in zip(str1, str2))
    return result

# 테스트 예시
print(solution("aaaaa", "bbbbb"))  # "ababababab"

🦏 zip()

  • 여러 iterable(예: 리스트, 문자열)을 인자로 받아 각 요소를 튜플로 묶어주는 역할
  • zip의 결과는 각 iterable의 첫번째 요소들끼리, 두번째 요소들끼리 묶인 튜플의 시퀀스
str1 = '11'
str2 = '22'

zipped = zip(str1, str2)
print(list(zipped)) # [('1', '2'), ('1', '2')]

⏳ join()

  • 문자열의 메서드
  • iterable의 각 요소를 하나의 문자열로 결합
  • join을 호출하는 문자열은 각 요소 사이에 삽입되는 구분자 역할
result = ''.join(['12', '12'])
print(result) # 1212

리스트 컴프리핸션(list comprehension)

  • 간결하게 리스트 생성하는 문법
[expression for item in terable if condition]

expression : 각 반복에서 계산될 값. 결과값이 리스트 요소로 추가됨
for item in iterable : 반복문. iterable의 각 요소에 대해 순회
if condigion : 선택사항. 조건문. 조건이 참인 경우에만 expression이 리스트에 추가됨 - ex. creating a List of Squares


squares = []
for i in range(5):
	squares.append(i**2)
print(squares) # output: [0, 1, 4, 9, 16]

=> using List Comprehension

squares = [i**2 for i in range(5)]
print(squares) # output: [0, 1, 4, 9, 16]
  • ex. Filtering Even Numbers
    => using a Loop
evens = []
for i in range(10):
	if i % 2 == 0: 
    	evens.append(i)
print(evens) # Output: [0, 2, 4, 6, 8]

=> using List Comprehension

evens = [i for i in range(10) if i % 2 == 0]
print(evens) # Output: [0, 2, 4, 6, 8]

해설

def solution(str1, str2):
    # zip을 사용해서 str1과 str2의 각 문자를 쌍으로 묶음
    zipped = zip(str1, str2)
    
    # 각 쌍의 문자를 결합하여 리스트 생성
    combined = [a + b for a, b in zipped]
    
    result = ''.join(combined)
    return result

# 테스트 예시
print(solution("aaaaa", "bbbbb"))  # "ababababab"

👩‍💻

Today, I realized that I haven't been using 'List Comprehension' correctly. I reviewed the syntax and hope to use list comprehensions properly soon.

profile
요나의 방

0개의 댓글