파이썬 백준 3059번
브론즈 3
https://www.acmicpc.net/problem/3059
문제 보기
분류: 구현, 문자열
문제 풀기
알파벳 A 부터 Z 까지 아스키코드로 변환 저장된 리스트를 생성한다.
[65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90]
입력으로 주어진 문자에서 알파벳을 하나씩 꺼내어 (아스키코드로 변환 - 65) 의 index 를 찾아 value 를 0 으로 바꾼다.
aCode = ord(t)
alphabet_check[aCode - 65] = 0
이 과정을 모두 진행한 리스트에 남아있는 숫자들의 합을 구한다.
예) ABCDEFGHIJKLMNOPQRSTUVW
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 89, 90]
코드 보기
import sys
inputdata = sys.stdin.readline
def fnNotAppearing(text):
alphabet_check = [0] * 26
for i in range (26):
alphabet_check[i] = 65 + i
print(alphabet_check) ## TEST PRINT.
for t in text:
aCode = ord(t)
alphabet_check[aCode - 65] = 0
print(alphabet_check) ## TEST PRINT.
print(sum(alphabet_check))
if __name__ == "__main__":
testCase = int(inputdata().strip())
for _ in range (testCase):
text = str(inputdata().strip())
print(text) ## TEST PRINT.
fnNotAppearing(text)
'''
ABCDEFGHIJKLMNOPQRSTUVW
[65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90]
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 89, 90]
267
A
[65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90]
[0, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90]
1950
'''
추가 하기
chr() : 아스키코드를 문자로 반환.
ord() : 문자를 아스키코드로 반환.
chr(65) # A
ord('A') # 65
'공부하기 > 백준' 카테고리의 다른 글
[Python] 백준 풀기 16435 - 스네이크버드 (0) | 2023.02.24 |
---|---|
[Python] 백준 풀기 15000 - CAPS (0) | 2023.02.23 |
[Java] 백준 풀기 8545 - Zadanie próbne (0) | 2023.02.21 |
[Python] 백준 풀기 9076 - 점수 집계 (0) | 2023.02.19 |
[Java] 백준 풀기 10822 - 더하기 (0) | 2023.02.18 |