본문 바로가기

분식집/파이썬

프로그래머스 옹알이(1)

조건

=>응애는 "aya", "ye", "woo", "ma" 네가지의 옹알이를 사용한 옹알이만 할 수 있음.

문자 배열중 네가지 옹알이가 아닌 다른 옹알이가 들어 있으면 구현이 불가능.

 

주어진 리스트 중에서 응애가 구현할 수 있는 언어의 수를 구하라.

 

 

고안 해 본 구현 방식

  1. 리스트를 만들어서 옹알이로 구현가능한 4!개의 옹알이 기입 후 주어진 리스트와 비교, 존재하는 옹알이 수 만 추려냄.
  2. 각 옹알이의 시작 언어는 "a","y',"w","m" 네 가지로 중복하지 않음. 따라서 for문과 if문을 이용해 리스트의 시작이 a=>aya를 빼냄,  a!=리스트 라면 y로 넘어가서 y=>ye를 뺴냄의 네가지 기작 반복. 남아 있는게 없다면 count+=1
  3. *문자열을 이용한 방식이므로, 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