백준 11720번_파이썬 알고리즘
Q. 백준 11720. 숫자의 합
N개의 숫자를 공백 없이 입력받은 후, 이 숫자들의 총 합을 구하여 출력하는 프로그램을 작성한다.
(1) 입력 : 첫째 줄에는 입력받을 총 숫자의 갯수 N을 입력받는다.(1 ≤ N ≤ 100)
둘째 줄에는 공백없이 N개의 숫자를 입력받는다.
(2) 출력 : 입력받은 모든 숫자의 합을 출력한다.
A. 풀이
- 이번 백준 알고리즘 문제도 코드가 길지는 않다. 아래 코드를 살펴본다,
# Q 백준 11720. 숫자의 합
N = int(input())
numbers = map(int, list(input()))
print(sum(numbers))
- 먼저 입력받을 총 숫자의 갯수 N을 입력받기 위해 N이라는 변수에 'input()'을 사용해서 숫자를 입력 받는다.
숫자라는 조건이 있고, N 변수를 숫자 상태로 활용할 수 있다고 판단하여 'int()'로 감싸주었다.
- 두 번째로 각 숫자를 입력받아야 한다. 입력받기 위해서는 'input()'을 사용한다.
- 입력받은 일련의 숫자 문자열은 합을 계산하기 위해 각각의 개별 요소로 쪼개주어야 한다. 이를 위해서 'list()'함수 안에 넣어주었다.
- list함수 내에는 문자열이어야 하므로 input()으로 받은 문자열은 숫자이긴하나 문자열 상태로 두기 위해 int()를 사용하지 않았다.
※ Tip(1) : list(문자열)을 사용하면 각 문자열의 각 요소별로 하나하나 리스트에 넣어준다.
ex) list('12345') = ['1', '2', '3', '4', '5']
- list에 넣어준 각 요소들의 총 합을 구해야 한다. 이를 위해서는 각 요소가 문자열 상태가 아닌 정수상태로 변환해주어야 한다. 리스트의 각 요소를 정수로 변환하기 위해서 'map()' 함수를 사용하고, 옵션으로 'int'를 넣어주었고, 이를 통해 얻어진 리스트는 numbers라는 이름의 리스트에 할당한다.
※ Tip(2) : map(옵션, 리스트) - 각 리스트의 요소에 '옵션'의 속성을 적용한다.
- 리스트 number는 N개의 정수(integer)로 이루어진 리스트이다. 각 요소의 총합을 구하기 위해서 'sum()' 함수를 사용하였다. 함수를 적용하고 정상적으로 출력하기 위해 'print()' 함수로 전체를 감싸준다.
R. 리뷰
- 사실 숫자라는 조건이기 때문에 int로 감싸주었지만, 아래 입력되는 숫자에 구속력이 없다.
그렇기 때문에 int가 없어도 문제에 크게 영향을 주진 않을 것으로 보인다.(채점은 어떻게 될지 모르겠다.)
- 두번째 문장 'numbers = map(int, list(input()))' 에 if문을 씌워서 구속력을 줄 수 있지만, 백준에서는 처리 속도를 간혹 채점 요소로 반영하기 때문에 구속력 없이 사용하도록 코드를 짰고, 크게 문제없이 처리됨을 확인할 수 있었다.
- 문자열을 list()로 감쌌을 경우 각 문자열 요소마다 리스트로 변경해준 점이 이 문제에서 가장 인상깊은 코드였다.
list(input())
'DEV > 백준 알고리즘' 카테고리의 다른 글
백준 알고리즘 2675번(파이썬) (0) | 2022.10.06 |
---|---|
백준 알고리즘 10809번(파이썬) (0) | 2022.10.05 |
백준 알고리즘 11654번(파이썬) (0) | 2022.10.03 |
백준 알고리즘 4344번(파이썬) (0) | 2022.10.02 |
백준 알고리즘 8958번(파이썬) (0) | 2022.10.01 |
댓글