1. 문제 정보
문제 링크: https://www.acmicpc.net/problem/2743
문제 요약: 영어로만 이루어진 단어 하나가 주어질 때 그 단어의 길이를 출력하는 문제입니다
2. 풀이
접근 방식
- 문제 요구사항은 "입력받은 문자열의 길이를 출력하라"는 것입니다. Python은 문자열의 길이를 구하는 내장 함수 len()을 제공하기때문에 이걸 활용하면 해결할 수 있습니다.
- 알고리즘/자료구조
- 입력: 문자열 (String)
- 처리: Python의 내장 함수 len()
- 출력: 정수 (Integer)
- 입력 처리
- Python에서 표준 입력을 받을 때는 input() 또는 sys.stdin.readline()을 사용합니다.
- input(): 한 줄을 읽어오며, 끝에 있는 줄바꿈 문자(\n)를 포함하지 않습니다.
- sys.stdin.readline(): 한 줄을 읽어오며, 끝에 줄바꿈 문자(\n)를 포함합니다.
- 이 문제에서는 어떤 것을 사용해도 무방하지만, sys.stdin.readline()을 사용할 경우 줄바꿈 문자도 길이에 포함될 수 있으므로 rstrip() 메소드를 사용해 제거해주는 것이 안전합니다.
- 복잡도
- 시간 복잡도: 문자열을 입력받는 데 O(L), len() 함수는 O(1)입니다.
여기서 L은 문자열의 길이입니다. L의 최대값이 100이기 떄문에 빠릅니다. - 공간 복잡도: 입력받은 문자열을 저장할 O(L)의 공간이 필요합니다.
- 시간 복잡도: 문자열을 입력받는 데 O(L), len() 함수는 O(1)입니다.
핵심 코드
알고리즘이 매우 간단하여 전체 코드가 곧 핵심 코드입니다. sys.stdin.readline을 사용하는 것이 좋을 것 같았습니다
import sys
word = sys.stdin.readline().rstrip()
length = len(word)
print(length)
3. 회고
- 어려웠던 점: 문제는 매우 간단하여 특별히 어려운 점은 없었지만 input()과 sys.stdin.readline()의 차이를 정확히 알고 rstrip()을 적절히 사용하는 것이 중요할 것 같습니다. 이 문제에서는 input()만 사용해도 정답 처리가 되는 것 같습니다.
- 개선할 점: 코드를 더 짧게 줄여 한 줄로 만들 수도 있습니다. 가독성 측면에서는 변수에 저장하고 출력하는 위의 풀이 방식이 더 정확할 수 있습니다.
- import sys print(len(sys.stdin.readline().rstrip()))
'개발 > 백준 알고리즘' 카테고리의 다른 글
| [백준] 2480: 주사위 세개 (Python) (0) | 2025.10.20 |
|---|---|
| [백준] 2884: 알람 시계 (Python) (0) | 2025.10.11 |
| [백준] 14681: 사분면 고르기 (Python) (0) | 2025.10.04 |
| [백준] 2753번: 윤년 (0) | 2025.10.01 |
| [백준] 1330: 두 수 비교하기 (0) | 2025.09.28 |