본문 바로가기
개발/백준 알고리즘

[백준] 2743: 단어 길이 재기 (Python)

1. 문제 정보

문제 링크: https://www.acmicpc.net/problem/2743

문제 요약: 영어로만 이루어진 단어 하나가 주어질 때 그 단어의 길이를 출력하는 문제입니다


2. 풀이

접근 방식

  1. 문제 요구사항은 "입력받은 문자열의 길이를 출력하라"는 것입니다. Python은 문자열의 길이를 구하는 내장 함수 len()을 제공하기때문에 이걸 활용하면 해결할 수 있습니다.
  2. 알고리즘/자료구조
    • 입력: 문자열 (String)
    • 처리: Python의 내장 함수 len()
    • 출력: 정수 (Integer)
  3. 입력 처리
    • Python에서 표준 입력을 받을 때는 input() 또는 sys.stdin.readline()을 사용합니다.
    • input(): 한 줄을 읽어오며, 끝에 있는 줄바꿈 문자(\n)를 포함하지 않습니다.
    • sys.stdin.readline(): 한 줄을 읽어오며, 끝에 줄바꿈 문자(\n)를 포함합니다.
    • 이 문제에서는 어떤 것을 사용해도 무방하지만, sys.stdin.readline()을 사용할 경우 줄바꿈 문자도 길이에 포함될 수 있으므로 rstrip() 메소드를 사용해 제거해주는 것이 안전합니다.
  4. 복잡도
    • 시간 복잡도: 문자열을 입력받는 데 O(L), len() 함수는 O(1)입니다.
      여기서 L은 문자열의 길이입니다. L의 최대값이 100이기 떄문에 빠릅니다.
    • 공간 복잡도: 입력받은 문자열을 저장할 O(L)의 공간이 필요합니다.

 

핵심 코드

알고리즘이 매우 간단하여 전체 코드가 곧 핵심 코드입니다. 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()))