https://www.acmicpc.net/problem/15813
15813번: 너의 이름은 몇 점이니?
소윤이는 성필이에게 단단히 화가 났다. 성필이가 자꾸 소윤이의 이름을 놀리는 것이다! 극대노한 소윤이는 이름에 대해 많은 검색을 하던 도중 "이름점수"라는 것을 발견하게 된다. 이름 점수
www.acmicpc.net
문제 해석
첫 번째 줄에 이름의 길이를 입력한다
두 번째 줄에 대문자로 띄어쓰기 없이 이름을 입력한다.
이후 이름의 점수를 출력한다.
코드
a = int(input())
b = input()
ans = 0
for i in range(a):
ans += (ord(b[i]) - 64)
print(ans)
문제 풀이
내가 이 문제를 처음 풀었을 때 처럼 A = 1, B = 2... Z = 26까지 변수를 만들고 대입하는 방법도 존재는 할 것이다.
그러나 비효율적이고, 혹시나 시간초과가 뜨거나 하는 등의 이유로 풀지 못한다면 자괴감이 들기 좋을것이다.
따라서 이 코드에서는 아스키코드를 사용해 보려 한다.
밑에서 두 번째 코드를 보면, ans += (ord(b[i]) - 64) 라는 부분이 존재한다.
A는 아스키코드로 65이며, B는 66, C는 67... 이렇게 Z까지 가게 된다.
여기서 문자를 아스키코드로 바꾸어 주는게 ord()이다.
즉, 각 아스키코드에서 64씩을 빼주면 빠르고 자연스럽게 A=1, B=2... Z=26임이 성립하게 되는 것이다.
이후 ans에 그 값을 더해 문제를 해결할 수 있다.
'백준' 카테고리의 다른 글
[BOJ/python] 18409번 母音を数える (Counting Vowels) (0) | 2022.03.20 |
---|---|
[BOJ/python] 15633번 Fan Death (1) | 2022.03.20 |
[BOJ/python] 23739번 벼락치기 (1) | 2022.03.20 |
[BOJ/python] 4435번 중간계 전쟁 (0) | 2022.03.20 |
[BOJ/python] 11094번 꿍 가라사대 (0) | 2022.03.20 |