티스토리 뷰

https://school.programmers.co.kr/learn/courses/30/lessons/140108

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


1. 접근 방식

  • 문자열이 분리되고나서 다시 x를 정하는 방법

처음에 x를 '-'로 초기화한 후, x == '-'일 때 특정 문자를 x로 설정한다. 이러면, 나중에 문자열이 분리될 때 x를 다시 '-'로 초기화함으로써 새로 시작하는 문자열의 첫 글자로 x로 설정할 수 있다.

 

  • 만약 두 횟수가 다른 상태이지만, 더 이상 읽을 글자가 없을 때를 파악하기 위해 left 변수를 사용하자.

문자열을 순회하면서 left에 문자를 누적한다. 그러다가 문자열을 분리하게 될 때 left를 빈 문자열로 초기화한다.

따라서 문자열을 모두 순회하고나서 left가 빈 문자열이 아니라면, 두 횟수가 다르지만 더 이상 읽을 글자가 없어서 순회가 종료된 것이므로 기존 answer 값에 + 1을 한다.

 

 

2. 정답 코드

def solution(s):
    answer = 0
    
    x = '-'
    left = ''
    for e in s:
        left += e
        if x == '-':
            x = e
            count = 1
            others = 0
        
        elif e == x:
            count += 1
        else:
            others += 1
            
            if count == others:
                answer += 1
                x = '-'
                left = ''
    
    return answer if not left else answer + 1
728x90