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

백준 알고리즘 11720번(파이썬)

by 올커 2022. 10. 4.

 

백준 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())

 

반응형

댓글