ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [BOJ] 숫자의 합 - 11720
    ComputerScience/Algorithm 2024. 4. 5. 14:27
    728x90

    문제

     

    성능 요약

    메모리: 31120 KB, 시간: 44 ms

    분류

    • 구현
    • 수학
    • 문자열

    접근 방법

    일렬로 들어오는, 구분자가 없는 문자열을 어떻게 처리할지 고민했다.

    split() 함수를 사용할 수 있었다. 하지만 split()은 공백, 쉽표 등의 구분자가 존재해야만 했고 이를 사용할 수 없다는 것을 알게 되었다.

    공백이 없는 문자열을 자르기 위해서는 list()를 사용할 수 있었다.

     

    하지만 list()는 input()으로 들어온 모든 문자열을 문자 하나씩 원소화한다. 따라서 '\n'과 같은 개행문자도 원소에 포함한다.

    이를 위해서 rstrip()을 활용해 '\n'을 제거하였다.

    정답

    import sys
    input = sys.stdin.readline
    
    n = int(input())
    
    b = list(map(int, list(input().rstrip())))
    
    print(sum(b))

     

    후기

    input(), strip(), list(), sum()과 같은 기본적인 함수와 메서드들에 대한 이해가 필요하다.

    각각이 어떻게 작동하는지 좀 더 자세히 살펴보자

    1. list(input().rstrip())
      두 번째 입력에서 숫자들을 문자열로 받은 후, 문자열의 오른쪽 끝에 있는 개행 문자를 제거하기 위해 .rstrip() 메서드를 사용한다. 그리고 나서 list() 함수를 사용하여 이 문자열을 각 문자가 하나의 요소가 되는 리스트로 변환합니다.
      예를 들어, 사용자가 "12345"를 입력했다면, 이는 ['1', '2', '3', '4', '5']로 변환됩니다.
    2. map(int, list(input().rstrip()))
      map() 함수는 두 번째 인자로 주어진 모든 요소에 첫 번째 인자로 주어진 함수를 적용한다.
      여기서는 각 문자(숫자)를 정수로 변환하는 int 함수를 리스트의 모든 요소에 적용한다.
      따라서 문자로 된 숫자들의 리스트가 정수로 변환된 리스트로 바뀐다.
      예를 들어, ['1', '2', '3', '4', '5']는 [1, 2, 3, 4, 5]로 변환된다.
    3. list(map(int, list(input().rstrip())))
      map() 함수의 결과는 map 객체이므로, 이를 list() 함수로 다시 리스트로 변환한다.
      이렇게 하여 우리는 문자열로 입력된 숫자들을 정수로 변환한 리스트 b를 얻는다.
    4. sum(b)
      sum() 함수는 리스트 b의 모든 요소들의 합을 계산한다.

     

Designed by Tistory.