[ BOJ / Python ] 10384번 팬그림

황승환·2021년 12월 15일
0

Python

목록 보기
49/498

이번 문제는 모든 알파벳을 포함하는 배열과 알파벳의 수를 세기 위한 배열을 먼저 만들고, 문자열에 존재하는 알파벳에 해당하는 인덱스 값을 증가시킨 후 알파벳의 수를 세기 위한 배열에서 가장 작은 수에 따라 알맞은 출력값을 출력하여 해결하였다. 입력되는 문자열에 대소문자가 모두 가능하므로 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))

profile
꾸준함을 꿈꾸는 SW 전공 학부생의 개발 일기

0개의 댓글