조건
=>응애는 "aya", "ye", "woo", "ma" 네가지의 옹알이를 사용한 옹알이만 할 수 있음.
문자 배열중 네가지 옹알이가 아닌 다른 옹알이가 들어 있으면 구현이 불가능.
주어진 리스트 중에서 응애가 구현할 수 있는 언어의 수를 구하라.
고안 해 본 구현 방식
- 리스트를 만들어서 옹알이로 구현가능한 4!개의 옹알이 기입 후 주어진 리스트와 비교, 존재하는 옹알이 수 만 추려냄.
- 각 옹알이의 시작 언어는 "a","y',"w","m" 네 가지로 중복하지 않음. 따라서 for문과 if문을 이용해 리스트의 시작이 a=>aya를 빼냄, a!=리스트 라면 y로 넘어가서 y=>ye를 뺴냄의 네가지 기작 반복. 남아 있는게 없다면 count+=1
- *문자열을 이용한 방식이므로, replace함수를 이용한 옹알이의 대체 방식으로 진행.
=>S의 말을 들으니, 2번과 3번 방식은 굉장히 유사하며, 3번이 유용하다고 하여 3번으로 진행.
**replace함수의 사용 방식
인자.replace("대체할 문자열", "대체 시킬 문자열")의 방식으로 사용 가능.
**len함수의 사용 방식
len.(리스트)=>리스트의 인자 갯수 반환.
<내가 진행한 방식>
def solution(babbling):
k=0
t=[]
for i in babbling:
ret=i
ret=ret.replace("aya","^")
ret=ret.replace("ma","^")
ret=ret.replace("woo","^")
ret=ret.replace("ye","^")
ret=ret.replace("^","")
if len(ret)>0:
continue
else:
t.append(ret)
return len(t)
<s가 진행한 방식>
baby=['aya','ye','woo','ma']
count = 0
for i in babbling:
for j in baby:
i = i.replace(j,'')
if len(i) ==0:
count+=1
else:
print(i)
return count
=>해당 방식의 경우 wyeoo 라는 입력이 들어왔을때
ye를 뺸 뒤 woo또한 문자열로 인식해서 통과시키는 오류 발생
해당 방식에서, replace를 바로 공백문자로 바꾸는게 아니라, 중간자를 거친 뒤, 처리해야
오류가 발생하지 않는다.
i=i.replace(j,"^")
(두번째 for문 밖에서)
i=i.replace("^", "")
과 같은 방식으로 진행하면 문제 X
'분식집 > 파이썬' 카테고리의 다른 글
Programmers- to Capital (0) | 2023.08.24 |
---|---|
리스트에 값 넣는법 (0) | 2023.02.03 |
반복문 조건문 내부의 continue 함수 (0) | 2023.02.03 |
do while 문! (0) | 2023.02.03 |
range()함수 (0) | 2023.02.03 |