프로그래머스 파이썬 기초 해석 :: 문자열 섞기(join, zip, append/insert)
프로그래머스 URL
https://school.programmers.co.kr/learn/courses/30/lessons/181942
프로그래머스 코딩 카테고리
코딩 기초 트레이닝
Day 3 연산 - 문자열 섞기
Lv.0
문제 설명
길이가 같은 두 문자열 str1과 str2가 주어집니다.
두 문자열의 각 문자가 앞에서부터 서로 번갈아가면서 한 번씩 등장하는 문자열을 만들어 return 하는 solution 함수를 완성해 주세요.
제한 사항
1 ≤ str1의 길이 = str2의 길이 ≤ 10
str1과 str2는 알파벳 소문자로 이루어진 문자열입니다.
문제 이해
[입력값] str1, st2 둘다 문자열
[출력값] answer 문자열
반복문 필요 - 두 문자열의 [0]자리 출력, [1] 자리 출력 ,,, 이 필요하기 때문에
(while문 보다는 for문)
------------------------
내가 푼 풀이
def solution(str1, str2):
answer = ''
for i in range(len(str1)):
answer += str1[i]
answer += str2[i]
return answer
고칠점
answer += str1[i] + str2[i]
다른 문제풀이 해석
def solution(str1, str2):
answer = ''.join([str1[i] + str2[i] for i in range(len(str1))])
return answer
위 코드는 join 함수의 인자 자리에 리스트 컴프리헨션을 썼다.
for문 리스트 컴프리헨션 문법은 중괄호랑 둥근 괄호 다 가능한데, 저장하는 방식은 다르다.
result = [x for i in range(범위)] #리스트로 저장됨
result = (x for i in range(범위)) #제너레이티브 표현식(일회성)으로 저장됨, 메모리 덜잡아먹음
join()은 문자열을 합칠때 쓰는 것으로, str + str2의 문자열 + 연산 기능과 같다.
'문자열구분자'.join(문자열 요소들)
문자열 구분자 : ' ' 작은 따음표 안에 공백이든 \n 줄바꿈이든 넣을 수 있음
문자열 요소들 : 반복 가능한 범위를 가진 문자열 요소들 ex) word = ['a', 'b', 'c']
2. zip()
zip 함수는 n개의 Iterable(리스트, 튜플, 문자열처럼 반복 가능한 객체)을 묶어서 튜플로 표현하는 함수이다.
(예제는 아래참고)
numbers = [1, 2, 3]
letters = ['A', 'B', 'C']
zipped = zip(numbers, letters)
def solution(str1, str2):
answer = ''
for i,j in zip(str1,str2):
answer += i+j
return answer
3. 리스트로 반환, append / insert
def solution(str1, str2): answer = [] for i in range(len(str1)): answer.append(str1[i]) answer.append(str2[i]) return ''.join(answer)
입출력이 문자열이라서, 굳이 리스트로 안해도 될 것 같긴한데 다양한 방법을 공부해볼려고 추가해보았다.
리스트에 요소를 추가할때, 두가지 메서드가 있다.
① 객체명.append(넣고자하는 요소)
객체의 마지막 자리에 새로운 요소를 추가하는 것.
#리스트
fruits = ["apple", "banana", "orange"]
fruits.append("grape")
print(fruits)
② 객체명.insert(인덱스, 넣고자하는 요소)
객체의 원하는 자리에 새로운 요소를 추가하는 것.
#리스트
fruits = ["apple", "banana", "orange"]
fruits.insert(1, "grape")
print(fruits)
------------------------
느낀점
문자열, 리스트에서 계속 나오는 반복 가능한 객체인 iterable에 대해서 점점 알아가고 있다. 문자열이랑 리스트는 다르면서도 참 비슷한 구석이 많은 것 같다. 한 문제, 한 문제를 풀 수록 몰랐던 함수나 메서드 등 신기한 문법을 알게되는 것 같다.
기초가 오래 걸리더라도 튼튼하게 쌓아보도록 노력하자
댓글
댓글 쓰기