Languages/Python

[프로그래머스] 수박수박수박수박수박수? (python)

genie0000 2025. 4. 17. 22:30
link icon

💻 프로그래머스 - 수박수박수박수박수박수?

👉 문제 보러 가기

 

🧩문제 설명

수박수박수박수박수박수? 문제

🧩문제 요약

  • "수박"이라는 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... 인덱스만)

 

 

 


📌 아직 배우는 중이라 부족한 부분이 있을 수 있습니다.
혹시 잘못된 내용이나 더 나은 방법이 있다면 알려주세요 🙏
감사합니다! 😄