
💻 프로그래머스 - 수박수박수박수박수박수?
👉 문제 보러 가기🧩문제 설명
🧩문제 요약
- "수박"이라는 2글자 패턴이 반복됨
- 문자열의 총 길이는 n과 같아야 함
- 예시:
- n = 3 ➝ "수박수"
- n = 4 ➝ "수박수박"
- n = 5 ➝ "수박수박수"
🔍 풀이 코드 1
def solution(n):
answer = ''
for i in range(n):
if i % 2 == 0:
answer += '수'
else:
answer += '박'
return answer
🔍 풀이 코드 2
def solution(n):
answer = ''
result = []
for i in range(n):
result.append('수' if i % 2 == 0 else '박')
answer = ''.join(result)
return answer
✅ join()
- join() 함수는 리스트에 담긴 문자열 요소들을 하나의 문자열로 합쳐주는 함수입니다.
'구분자'.join(리스트)
- '구분자'는 요소 사이에 넣을 문자입니다 (공백, 쉼표 등)
words = ['수', '박', '수']
result = ''.join(words) # 구분자 없이 합침
print(result) # 출력: 수박수
print(','.join(words)) # 쉼표 구분자 사용 → 수,박,수
print(' '.join(words)) # 공백 구분자 사용 → 수 박 수
🔍 풀이 코드 3
def solution(n):
return ("수박" * (n // 2 + 1))[:n]
✅ ("수박" * (n // 2 + 1))[:n]
- 슬라이싱[:n]을 사용하여 앞에서 만든 긴 문자열에서 n글자만 잘라서 반환합니다.
- 예:
- n = 5 → "수박수박수박"[:5] → "수박수박수"
- n = 6 → "수박수박수박"[:6] → "수박수박수박"
✨ 마무리 정리
✅ 문자열 슬라이싱이란?
문자열에서 일정한 부분을 잘라내는 문법입니다.
text = "수박수박수박"
print(text[0:2]) # 수박 (0번부터 1번까지)
print(text[2:4]) # 수박 (2번부터 3번까지)
print(text[:4]) # 시작 생략 → 0부터 시작 → 수박수 (처음부터 3번까지)
print(text[4:]) # 끝 생략 → 마지막까지 → 박수박 (4번부터 끝까지)
- 시작인덱스: 포함
- 끝인덱스: 포함하지 않음 (exclusive)
✅ 음수 인덱스
text = "수박수박"
print(text[-1]) # '박' (마지막 글자)
print(text[-2:]) # '수박' (뒤에서 두 번쨰부터 끝까지)
print(text[:-1]) # '수박수' (마지막 글자 전까지)
✅슬라이싱에 step을 줄 수도 있어요
text = "수박수박수박"
print(text[::2]) # 짝수 인덱스만: '수수수' (0, 2, 4... 인덱스만)
print(text[1::2]) # 홀수 인덱스만: '박박박' (1, 3, 5... 인덱스만)
📌 아직 배우는 중이라 부족한 부분이 있을 수 있습니다.
혹시 잘못된 내용이나 더 나은 방법이 있다면 알려주세요 🙏
감사합니다! 😄
'Languages > Python' 카테고리의 다른 글
[프로그래머스] n의 배수 고르기 (python) (0) | 2025.04.24 |
---|---|
[프로그래머스] 특정 문자 제거하기 (python) (0) | 2025.04.23 |
[프로그래머스] 문자열 내림차순으로 배치하기 (python) (1) | 2025.04.18 |
[프로그래머스] 약수의 개수와 덧셈 (python) (0) | 2025.04.18 |
[프로그래머스] 제일 작은 수 제거하기 (python) (0) | 2025.04.17 |