Dev_from the Bottom

#32. Algorithm22_python) 숫자의 합_백준 11720 본문

Algorithm_study

#32. Algorithm22_python) 숫자의 합_백준 11720

고무라면 2022. 6. 2. 20:26

문제) 평균은 넘겠지

  • N개의 숫자가 공백 없이 쓰여있다. 이 숫자를 모두 합해서 출력하는 프로그램을 작성하시오.

입력)

  • 첫째 줄에 숫자의 개수 N (1 ≤ N ≤ 100)이 주어진다. 둘째 줄에 숫자 N개가 공백 없이 주어진다.
  • 둘째 줄부터 각 테스트 케이스마다 학생의 수 N(1 ≤ N ≤ 1000, N은 정수)이 첫 수로 주어지고, 이어서 N명의 점수가 주어진다. 점수는 0보다 크거나 같고, 100보다 작거나 같은 정수이다.

출력)

  • 입력으로 주어진 숫자 N개의 합을 출력한다.


 

 


step1) 테스트1 : 입력 고정하고 sum

n = 5
nums = [5 , 4, 3, 2, 1]

sum = 0

for i in nums:
    sum += i
print(sum)

>>>
15

 

 

step2) 시도1 : 실패

n = int(input())
nums = list(map(int, input().split()))

sum = 0
for i in nums:
    sum += i
print(sum)

>>>
5
54321
54321
  • 문제점 :
    • 입력 시 공백 처리가 안되어 54321 한 숫자로 인식됨
    • input( )에 대한 고민 없이 기계적으로 코드를 만들었음

 

step3) 시도2 : 성공

n = int(input())

nums_str = input()            # input()으로 받은 내용은 문자열
nums_list = []                # 숫자를 요소로 갖는 리스트 생성 

for i in nums_str:
    nums_list.append(int(i))  # 입력 받은 문자열을 한글자씩 추출하여 정수로 변환 후 리스트에 담기

sum = 0
for j in nums_list:           # sum 로직
    sum += j
print(sum)

>>>
5
54321
15
  • for문이 두 개가 존재하여, 비효율적일 것 같음 -> 간결한 코드를 더 고민해봐야

 

 

step4) 개선

n = int(input())
nums = input()

sum = 0
for i in nums:       # 문자 한글자씩 추출하여, 바로 처리
    sum += int(i)
print(sum)

>>>
5
54321
15
  • nums를 리스트로 만들기보다, 문자열로 저장되는 input( )메서드의 성질을 활용

# 배운 점

  • input( ) 메서드에 대한 이해

 

# 소회

  • 공백 없는 입력을 각각의 숫자로 처리하는 것이 핵심이었던 문제

 

Comments