https://www.acmicpc.net/problem/11720
11720번: 숫자의 합
첫째 줄에 숫자의 개수 N (1 ≤ N ≤ 100)이 주어진다. 둘째 줄에 숫자 N개가 공백없이 주어진다.
www.acmicpc.net
가장 먼저 든 생각은 파이썬에서도 문자열에 인덱스를 매겨 반복문을 사용할 수 있다는 점을 이용했다. 하지만 머릿 속에 문자를 굳이 형변환하지 않고도 할 수 있는 방법이 있을텐데를 고민했다.
N = int(input())
string = str(input())
sum = 0
for char in string:
sum += int(char)
print(sum)
정답이긴 하지만 더 좋은 풀이가 있을 것이라 생각해서 다른 사람들 풀이를 봤다.
N = int(input())
print(sum(map(int, input())))
파이썬의 map을 이해하고 있다면 이것이 왜 정답인지 알 수 있다. map은 이터러블한 객체를 하나씩 뽑아둔 객체임을 알 수 있다.
test = list(map(int, input()))
print(test)
54321을 입력하면 [5, 4, 3, 2, 1]이 나온다. map 자체로 출력하면 map object가 나오기 때문에 리스트로 형변환해서 그 결과를 확인한 것이다. 이를 이용해 객체를 도출해내어 sum 메소드를 사용해 이를 더한 것을 알 수 있다.
import sys
N = int(sys.stdin.readline())
string = map(str, sys.stdin.readline())
sum = 0
for char in string:
sum += int(char)
참고로 sys 모듈에 있는 stdin.readline() 메소드를 사용하기 위해서는 \n 개행 문자에 대해 신경써야한다. 따라서 .rstrip과 같은 은 것을 사용해야할 것이다.
'ps > boj' 카테고리의 다른 글
8393번 Python (0) | 2024.04.06 |
---|---|
1924번 Python (0) | 2024.04.06 |
11721번 Python (0) | 2024.04.06 |
10951번 Python (0) | 2024.04.04 |
구간 합 구하기 5 (0) | 2024.03.24 |