1. 문제 설명
문제 링크: 프로그래머스 - 문자열의 앞의 n글자
문자열 my_string과 정수 n이 매개변수로 주어질 때, my_string의 앞의 n글자로 이루어진 문자열을 반환하는 함수를 작성하는 문제입니다.
제한 사항
my_string은 숫자와 알파벳으로 이루어져 있습니다.- 1 ≤
my_string의 길이 1,000 - 1 ≤ n ≤
my_string의 길이
입출력 예
| my_string | n | result |
| ProgrammerS123 | 11 | ProgrammerS |
| He110WOr1d | 5 | He110 |
입출력 예 # 1
- 예제 1번의
my_string에서 앞의 11글자는 “ProgrammerS” 이므로 이 문자열을 return 합니다.
입출력 예 # 2
- 예제 2번의
my_string에서 앞의 5글자는 “He110” 이므로 이 문자열을 return 합니다.
2. 접근 방식 및 풀이
이 문제는 반복문(for 루프)을 돌며 문자를 하나씩 더해갈 수도 있지만, 파이썬에서는 슬라이싱(Slicing)이라는 아주 편리한 문법을 제공합니다.
• 슬라이싱 기본 형태: 문자열[시작인덱스 : 끝인덱스]
◦ 시작 인덱스부터 끝 인덱스 바로 앞까지의 문자를 잘라냅니다.
• 처음부터 n개의 글자를 가져와야 하므로, 인덱스 0부터 n-1까지 잘라내면 됩니다. 즉, my_string[0:n]이 됩니다.
• 시작 인덱스가 0일 경우 생략할 수 있으므로 최종적으로 my_string[:n]이라는 간결한 코드가 완성됩니다.
3. 결과
PYTHON
def solution(my_string, n):
# 인덱스 0부터 n-1까지의 문자열을 슬라이싱하여 반환합니다.
# 시작 인덱스 0은 생략 가능하므로 [:n]으로 작성합니다.
return my_string[:n]
4. 복잡도 분석
시간 복잡도: O(n)
- 파이썬에서 문자열 슬라이싱은 잘라내는 길이 n에 비례하여 시간이 소요됩니다. 최대 1,000자리를 자르는 것이므로 제한 시간 내에 매우 빠르게 동작합니다.
공간 복잡도: O(n)
- 기존 문자열의 일부분을 복사하여 길이가 n인 새로운 문자열 객체를 생성하고 반환하므로, n만큼의 메모리 공간이 사용됩니다.
5. 깨달은 점
- 파이썬의 슬라이싱 문법(
[start:stop:step])의 직관성과 편리함을 다시 한번 느낄 수 있는 문제였습니다. - 다른 언어(Java, C++ 등) 였다면
substring메서드를 호출해야 했겠지만, 파이썬은 대괄호와 콜론(:) 기호만으로 문자열을 쉽게 다룰 수 있어 코딩 테스트에서 문자열 처리에 특히 강점이 있다는 것을 확인했습니다.
![[프로그래머스] 문자열의 앞의 n글자 (Python)](https://app.notion.com/images/page-cover/texturelabs_glass_132S.jpg)