주어진 문자열에서 모음과 자음의 개수를 각각 세어서 출력하는 프로그램을 작성한다. 문자열의 길이는 최대 100이다.
입력 예시
첫째 줄에 문자열이 주어진다.
출력 예시
모음 개수와 자음 개수를 각각 "Vowels: 값", "Consonants: 값" 형식으로 출력한다.
예제 테스트케이스
예제 1
ProgrammingIsFun
Vowels: 5
Consonants: 11
예제 2
HelloWorld
Vowels: 3
Consonants: 7
정답 코드
s = input()
vowels = 0
consonants = 0
for ch in s:
if ch in "aeiouAEIOU":
vowels += 1
else:
consonants += 1
print(f"Vowels: {vowels}")
print(f"Consonants: {consonants}")
1. 코드 설명
이 코드는 입력된 문자열을 앞에서부터 한 글자씩 확인하면서, 현재 문자가 모음이면 vowels를 1 증가시키고, 그렇지 않으면 consonants를 1 증가시키는 방식이다.
문자열 전체를 끝까지 확인한 뒤, 모음 개수와 자음 개수를 각각 정해진 형식으로 출력한다.
먼저 문자열을 입력받는다.
s = input()
그다음 모음 개수와 자음 개수를 셀 변수 두 개를 0으로 시작한다.
vowels = 0
consonants = 0
이후 문자열 s를 앞에서부터 한 글자씩 순회한다.
for ch in s:
여기서 ch에는 문자열의 각 문자가 차례대로 들어간다.
예를 들어 입력이 HelloWorld이면 H, e, l, l, o 같은 식으로 하나씩 들어간다.
현재 문자가 모음인지 확인하는 부분은 다음과 같다.
if ch in "aeiouAEIOU":
vowels += 1
else:
consonants += 1
ch in "aeiouAEIOU"는 현재 문자가 a, e, i, o, u 또는 대문자 A, E, I, O, U 중 하나인지 검사하는 뜻이다.
참이면 모음이므로 vowels를 증가시키고, 거짓이면 자음으로 보고 consonants를 증가시킨다.
예를 들어 ProgrammingIsFun을 순회하면
- o, a, i, I, u는 모음이므로 vowels가 증가하고
- 나머지 문자는 자음이므로 consonants가 증가한다.
마지막에는 계산된 값을 문제에서 요구한 형식대로 출력한다.
print(f"Vowels: {vowels}")
print(f"Consonants: {consonants}")
따라서 문자열 전체를 한 번만 보면서 모음과 자음 개수를 각각 셀 수 있다.
2. 사용된 문법과 표현
input()
s = input()
- 한 줄을 문자열로 입력받는다.
- 사용 형태:
input()
for문
for ch in s:
- 문자열의 문자를 앞에서부터 하나씩 꺼내 반복한다.
- 사용 형태:
for 변수 in 반복가능한값:
실행할 코드
in
ch in "aeiouAEIOU"
- 어떤 값이 문자열 안에 포함되어 있는지 확인한다.
- 사용 형태:
값 in 문자열
if문
if ch in "aeiouAEIOU":
vowels += 1
else:
consonants += 1
- 조건이 참인지 거짓인지에 따라 다른 코드를 실행한다.
- 사용 형태:
if 조건:
실행할 코드
else:
실행할 코드
+=
vowels += 1
consonants += 1
- 기존 값에 1을 더한 뒤 다시 저장한다.
- 사용 형태:
변수 += 값
f-string
print(f"Vowels: {vowels}")
- 문자열 안에 변수 값을 넣어 출력한다.
- 사용 형태:
f"문자열 {변수}"
print()
print(f"Vowels: {vowels}")
print(f"Consonants: {consonants}")
- 값을 화면에 출력한다.
- 사용 형태:
print(값)
3. 실수하기 쉬운 부분
모음 문자열에 대문자를 넣지 않는 경우
if ch in "aeiou":
vowels += 1
else:
consonants += 1
- 대문자 모음 A, E, I, O, U를 모음으로 세지 못한다.
모음이 아닌 문자를 모두 자음으로 처리하는 경우
else:
consonants += 1
- 이 코드는 문제에서 영문자만 들어온다고 볼 때는 괜찮지만, 공백이나 숫자가 포함되면 그것까지 자음으로 세게 된다.
출력 형식을 다르게 쓰는 경우
print(vowels, consonants)
- 문제는 "Vowels: 값", "Consonants: 값" 형식을 요구하므로 출력 형식이 틀린다.
문자열 전체를 한 번에 비교하려는 경우
if s in "aeiouAEIOU":
vowels += 1
- 이 코드는 문자열 전체를 검사하므로 한 글자씩 세는 문제에 맞지 않는다.
4. 핵심 정리
이 문제는 문자열을 한 글자씩 보면서 현재 문자가 모음 목록에 포함되는지만 검사하면 해결된다.
핵심은 for문으로 문자 하나씩 순회하고, 모음이면 vowels, 아니면 consonants를 증가시키는 것이다.
'Univ > Python Programming' 카테고리의 다른 글
| [문제 17] 두 문자열의 공통 문자 찾기 - Python 풀이 (0) | 2026.04.17 |
|---|---|
| [문제 16] 주어진 숫자에서 소수 - Python 풀이 (0) | 2026.04.17 |
| [문제 14] 배열에서 짝수와 홀수 구분하기 - Python 풀이 (0) | 2026.04.16 |
| [문제 13] 문자열 뒤집기와 대소문자 변경 - Python 풀이 (1) | 2026.04.15 |
| Python `::` 슬라이싱 문법 (0) | 2026.04.15 |