Code about AI/Python
[Python] 백준 1264번: 모음의 개수, if ~ in, for 문자 in 문자열
도비(Doby)
2022. 3. 1. 14:33
https://www.acmicpc.net/problem/1264
이번 문제에서는 2가지 문법을 배울 수 있었다.
- if ~ in
- for 문자 in 문자열
우선 내가 짠 코드(정답)부터 보자
while True:
s = input()
if s == "#":
break
#print(s)
cnt = 0
for i in range(0, len(s)):
if (s[i] == 'a' or s[i] == 'e' or s[i] == 'i'
or s[i] == 'o' or s[i] == 'u' or s[i] == 'A'
or s[i] == 'E' or s[i] == 'I' or s[i] == 'O'
or s[i] == 'U'):
cnt += 1
print(cnt)
if문이 상당히 길어서 비효율적으로 보여서 다른 사람들도 이렇게 길게 짰을까 싶어서 구글링 해보았다.
if ~ in
if c in 'aeiouAEIOU':
4줄에 걸쳤던 if문을 한 줄로 정리할 수 있었다.
+ c는 문자형 변수
+ 파이썬은 문자열을 '(작은따옴표)로도 묶을 수 있음
>> c라는 문자형 변수가 저 문자열 중 원소와 같은 것이 있냐고 묻는 문법이다.
>> C++에 비해 간단명료하게 나타낼 수 있었다.
for 문자 in 문자열
for c in s:
len() 함수를 통하여 문자열의 길이를 구하고, for의 범위를 알려준 뒤 s[i]를 통해 문자를 반환하여 조건을 비교했었는데
그럴 필요 없었다.
in 다음에 오는 변수에 따라 c가 타입이 정해져서 간단명료하게 표현할 수 있었다.
이는 문자열뿐만 아니라 아직 배우지 않은 파이썬 자료구조(tuple, list, dictionary)도 마찬가지다.
뿐만 아니라 더 얻을 수 있었던 지식은
- 파이썬은 들여 쓰기에 따라 코드 블록이 구성된다.
- 논리 연산자는 C++(&&, ||)과 달리 and, or 이러한 방법으로 표현된다.
[AC 코드]
while True:
s = input()
if s == '#':
break
cnt = 0
for c in s:
if c in 'aeiouAEIOU':
cnt += 1
print(cnt)
728x90