[ BOJ / Python ] 10384번 팬그림
이번 문제는 모든 알파벳을 포함하는 배열과 알파벳의 수를 세기 위한 배열을 먼저 만들고, 문자열에 존재하는 알파벳에 해당하는 인덱스 값을 증가시킨 후 알파벳의 수를 세기 위한 배열에서 가장 작은 수에 따라 알맞은 출력값을 출력하여 해결하였다. 입력되는 문자열에 대소문자가 모두 가능하므로 lower함수를 통해 우선 문자열을 소문자로 모두 변환해주었다.
- n을 입력받는다.
- 배열 alphabet에 모든 알파벳을 저장한다.
- 0부터 n까지의 i에 대한 for문을 돌린다. (케이스의 수 만큼 반복하기 위함)
- 알파벳의 수를 셀 때에 사용할 0이 26개 들어간 cnt배열을 선언한다.
- 문자열 case를 입력받는다.
- case를 소문자로 변환시킨다.
- 0부터 case의 길이까지 반복하는 j에 대한 for문을 돌린다.
-> 만약 case[j]가 alphabet 배열에 존재할 경우 cnt 배열의 case[j]에 해당하는 alphabet 배열의 인덱스 원소를 1 증가시킨다. - 만약 cnt배열의 최소값이 0이라면 "Case (i+1): Not a pangram"을 출력시킨다.
- 만약 cnt배열의 최소값이 1이라면 "Case (i+1): Pangram!"을 출력시킨다.
- 만약 cnt배열의 최소값이 2이라면 "Case (i+1): Double pangram!!"을 출력시킨다.
- 이 외에는 "Case (i+1): Triple pangram!!!"을 출력시킨다.
Code
n=int(input())
alphabet=['a','b','c','d','e','f','g','h','i','j','k','l','n','m','o','p','q','r','s','t','u','v','w','x','y','z']
for i in range(n):
cnt = [0] * 26
case=str(input())
case=case.lower()
for j in range(len(case)):
if case[j] in alphabet:
cnt[alphabet.index(case[j])]+=1
if min(cnt)==0:
print('Case %d: Not a pangram'%(i+1))
elif min(cnt)==1:
print('Case %d: Pangram!'%(i+1))
elif min(cnt)==2:
print('Case %d: Double pangram!!'%(i+1))
else:
print('Case %d: Triple pangram!!!'%(i+1))
n=int(input())
alphabet=['a','b','c','d','e','f','g','h','i','j','k','l','n','m','o','p','q','r','s','t','u','v','w','x','y','z']
for i in range(n):
cnt = [0] * 26
case=str(input())
case=case.lower()
for j in range(len(case)):
if case[j] in alphabet:
cnt[alphabet.index(case[j])]+=1
if min(cnt)==0:
print('Case %d: Not a pangram'%(i+1))
elif min(cnt)==1:
print('Case %d: Pangram!'%(i+1))
elif min(cnt)==2:
print('Case %d: Double pangram!!'%(i+1))
else:
print('Case %d: Triple pangram!!!'%(i+1))
Author And Source
이 문제에 관하여([ BOJ / Python ] 10384번 팬그림), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@xx0hn/BOJ-Python-10384번-팬그림저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)