
안녕하세요 :)
오늘은 백준 11720번을 가지고 왔습니다.
이번 문제의 핵심은 숫자를 문자열로 보는 관점과 수를 나타내는 문자를 같은 숫자값으로 만드는 방법입니다.
먼저 숫자의 개수(a)를 입력받아주고 숫자를 공백없이 입력받고 이것을 정수로 변환하는 것이 아닌 문자열 형태로 리스트(n)에 저장합니다.
a = int(sys.stdin.readline()) n = list(map(str, sys.stdin.readline()))
문자와 같은 숫자값으로 어떻게 변환할까요 ?
아래에 문자 '5'을 예시로 들어 설명해보겠습니다.
'5'의 아스키코드값은 53입니다. 숫자 5의 값이 나오려면 53에서 48을 빼줘야합니다. 48에 해당하는 문자는 '0'으로 아래와 같이 표현할 수 있습니다.
print(ord(x) - 48) print(ord(x) - ord('0')) #출력값 5
위의 내용을 이번 문제에 적용을 해보면 아래와 같습니다.
for을 사용해서 리스트의 요소를 하나씩 꺼내줍니다. 반복하는 동안 만약에 리스트의 요소가 '\n가 아니면 문자와 같은 숫자값으로 바꿔줍니다. 그리고 cnt 변수에 저장하여 합을 구합니다.
cnt = 0 for x in n: if(x != '\n'): s = ord(x) - ord('0') cnt += s
다음은 11720번 정답 코드입니다.
import sys
a = int(sys.stdin.readline())
n = list(map(str, sys.stdin.readline()))
cnt = 0
for x in n:
if(x != '\n'):
s = ord(x) - ord('0')
cnt += s
print(cnt)