공부하기/백준

[Python] 백준 풀기 3059 - 등장하지 않는 문자의 합

XEV 2023. 2. 22. 23:09

파이썬 백준 3059번

브론즈 3

https://www.acmicpc.net/problem/3059

 

3059번: 등장하지 않는 문자의 합

입력은 T개의 테스트 데이터로 구성된다. 입력의 첫 번째 줄에는 입력 데이터의 수를 나타내는 정수 T가 주어진다. 각 테스트 데이터는 한 줄로 구성되어 있고, 문자열 S가 주어진다. S는 알파벳

www.acmicpc.net

 

 

 

 

 

문제 보기

분류: 구현, 문자열

 

 

 

 

 

문제 풀기

알파벳 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