문제
https://www.acmicpc.net/problem/11720
<특이점>
코드
#1번 풀이
import sys
sum = 0
numlist = sys.stdin.readlines()
for c in numlist[1].rstrip():
sum += int(c)
print(sum)
풀이
예제 4번을 보지 못하고 주어지는 수가 10 이상일 경우에는 어떻게 구분하지?... 이죠랄 떨고 있었음ㅋ
근데 진짜로 십의자리 이상인 숫자는 어떻게 구분할까?... 일의자리 숫자만 더 한다는 조건은 없었는데..
어쨌든 문제를 너무 꼬아생각하는건 팩트같다..
우선 readlines()를 이용해 입력 값을 한번에 처리했고, 입력 받은 값 중 2번째 값만 사용했다.
readlines가 입력값을 str형으로 리스트로 받아오는 것을 이용해 인덱스를 통해 접근했고,
for i in "문자열" → 이 문자열 안 char 1개씩 가져오는 것을 이용, 한 글자씩 int로 캐스팅 해준 후 더해줬다.
✔ 대신 입력 받을 때 54321이면, 개행문자까지 포함 되어 '54321\n'로 받아오기때문에 rstrip으로 제거해줘야 함
다른 풀이
#2번 풀이
cnt = int(input())
sum = 0
numlist = list(input())
for n in range(cnt):
sum += int(numlist[n])
print(sum)
→ input()도 필요에 따라 이용할 수 있다. input도 입력값을 str으로 받아오는데, 이때 받아온 str을 list형으로 바꿔주면
요소 1개씩 분리되어 저장됨을 이용했다 (ex. 123 ⇒ ['1', '2', '3'])
첫번째로 입력받는 테스트 케이스를 이용해 인덱스에 접근해 계산이 가능하다.
#3번 풀이
cnt = int(input())
sum = 0
numlist = input()
for c in numlist:
sum += int(c)
print(sum)
→ 마찬가지로 input을 이용하되, for문에 문자열 그대로 넣어 1글자씩 꺼내 int형으로 변환 후 더하는 방식이다.
이렇게 짧은 계산일경우 input이 더 시간소요가 적을 수도 있다. (rstrip같은 별도의 메서드가 필요 없으므로)
str을 바로 이용해야 하는 경우, 필요에 따라 input() 메서드를 사용하는게 더 빠른 접근일 수 있다.
'Algorithm > Beakjoon' 카테고리의 다른 글
[Python] 백준 8393번_합 (0) | 2022.08.03 |
---|---|
[Python] 백준 1924번_2007년 (0) | 2022.08.02 |
[Python] 백준 11719번_그대로 출력하기 2 (0) | 2022.08.01 |
[Python] 백준 11718번_그대로 출력하기 (0) | 2022.08.01 |
[Python] 백준 10951번_A+B - 4 (0) | 2022.07.30 |