-
[BOJ] 숫자의 합 - 11720ComputerScience/Algorithm 2024. 4. 5. 14:27728x90
문제
성능 요약
메모리: 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()과 같은 기본적인 함수와 메서드들에 대한 이해가 필요하다.
각각이 어떻게 작동하는지 좀 더 자세히 살펴보자
- list(input().rstrip())
두 번째 입력에서 숫자들을 문자열로 받은 후, 문자열의 오른쪽 끝에 있는 개행 문자를 제거하기 위해 .rstrip() 메서드를 사용한다. 그리고 나서 list() 함수를 사용하여 이 문자열을 각 문자가 하나의 요소가 되는 리스트로 변환합니다.
예를 들어, 사용자가 "12345"를 입력했다면, 이는 ['1', '2', '3', '4', '5']로 변환됩니다. - map(int, list(input().rstrip()))
map() 함수는 두 번째 인자로 주어진 모든 요소에 첫 번째 인자로 주어진 함수를 적용한다.
여기서는 각 문자(숫자)를 정수로 변환하는 int 함수를 리스트의 모든 요소에 적용한다.
따라서 문자로 된 숫자들의 리스트가 정수로 변환된 리스트로 바뀐다.
예를 들어, ['1', '2', '3', '4', '5']는 [1, 2, 3, 4, 5]로 변환된다. - list(map(int, list(input().rstrip())))
map() 함수의 결과는 map 객체이므로, 이를 list() 함수로 다시 리스트로 변환한다.
이렇게 하여 우리는 문자열로 입력된 숫자들을 정수로 변환한 리스트 b를 얻는다. - sum(b)
sum() 함수는 리스트 b의 모든 요소들의 합을 계산한다.
'ComputerScience > Algorithm' 카테고리의 다른 글
[LeetCode] 367. Valid Perfect Score (0) 2024.04.09 [LeetCode] 166. Fraction to Recurring Decimal (0) 2024.04.09 [BOJ] 히든 넘버 - 8595 (0) 2024.04.09 [BOJ] 8진수, 10진수, 16진수 - 11816 (0) 2024.04.06 [BOJ] 소인수분해 - 11653 (0) 2024.04.05