Algorithm/String

[프로그래머스] 옹알이(2)

킹우현 2023. 7. 22. 16:33

def solution(babbling):
    answer = 0
    prefix_list = ['a','y','w','m']
    
    global current
    current = ''
    
    def check(string):
        
        global current
        
        list_str = list(string)
        
        index = 0
        
        while(index <= len(list_str)-1):
            char = list_str[index]
            
            if current == char or char not in prefix_list:
                current = ''
                return False
            
            if char == 'a':
                temp_string = ''.join(list_str[index:index+3])
                if temp_string != 'aya':
                    current = ''
                    return False
                else:
                    index += 3
            
            elif char == 'y':
                temp_string = ''.join(list_str[index:index+2])
                if temp_string != 'ye':
                    current = ''
                    return False
                else:
                    index += 2
                    
            elif char == 'w':
                temp_string = ''.join(list_str[index:index+3])
                if temp_string != 'woo':
                    current = ''
                    return False
                else:
                    index += 3
                    
                    
            elif char == 'm':
                temp_string = ''.join(list_str[index:index+2])
                if temp_string != 'ma':
                    current = ''
                    return False
                else:
                    index += 2
            current = char
        current = ''
        return True
        
    for i in babbling:
        if check(i):
            answer += 1
    
    return answer

이번 문제는 이전에 풀었던 옹알이(1) 문제의 심화버전으로, 연속으로 같은 발음을 할 수 없다는 조건이 더해진 문제이다.

 

이전의 풀이와 동일하게 문자열을 확인하는 함수(check)를 선언하고, while문으로 연속적으로 발음을 하거나 할 수 없는 발음을 하였을 때 False를 반환하도록 하였다.

 

다른 사람들의 풀이를 보니 할 수 있는 발음을 다른 문자열로 대체해서 풀이하였는데, 다른 사람들의 풀이를 보면서 새롭게 알게 된 문자열 관련 함수들을 정리하고자 한다.

 

.replace()

replace()문자열을 변경하는 함수이다. 문자열 안에서 특정 문자를 새로운 문자로 변경하는 기능을 가지고 있다.

 

사용 방법은 '변수. replace(old, new, [count])' 형식으로 사용한다.

- old : 현재 문자열에서 변경하고 싶은 문자
- new: 새로 바꿀 문자
- count: 변경할 횟수. 횟수는 입력하지 않으면 old의 문자열 전체를 변경한다. 기본값은 전체를 의미하는 count=-1로 지정되어있다. 

 

.strip(), .lstrip(), rstrip()

strip()을 이용하면 문자열에서 특정 문자를 제거할 수 있다. Python의 String은 다음 함수를 제공한다.

- strip([chars]) : 인자로 전달된 문자를 String의 왼쪽과 오른쪽에서 제거합니다.
- lstrip([chars]) : 인자로 전달된 문자를 String의 왼쪽에서 제거합니다.
- rstrip([chars]) : 인자로 전달된 문자를 String의 오른쪽에서 제거합니다.

인자를 전달하지 않을 수도 있으며, 인자를 전달하지 않으면 String에서 공백을 제거한다.

 

인자로 문자 1개를 전달하면 그 문자와 동일한 것을 모두 제거하고, 인자로 여러 문자를 전달하면 그 문자들과 동일한 것들을 모두 제거합니다.

👉🏻 동일하지 않은 문자가 나올 때까지 제거 !