Coding Test/Programmers_Python

[프로그래머스] 문자열 나누기

  • -
728x90


문제


코드 설계 유의사항

1. 첫 글자를 담고, 이를 세는 변수 추가, 다음 글자가 같다면 새로 담지 않고 세는 변수를 1 증가

2. 첫 글자와 다른 글자가 나온 횟수 변수 추가, 첫 글자 count 변수과 값이 같아지면 첫 번째 문자 값을 옮긴 후 분리하기

3. 분리 할 때마다 이를 세는 변수를 증가시키고, 분해하지 못하면 종료하기


코드

# 풀이 추가
def solution(s):
    # count 할 배열 미리 생성, 처음에는 첫 번째 글자 저장
    # 두 번째와 세 번째에는 각각 s[0]과 동일하고, 다른 문자를 세는 자리이다
    answer = 0
    count = [s[0], 0, 0]
    # count에 저장된 변수들의 조건에 맞게 작성하고 문제에 나온 조건에 따라 마지막에 한 번 더 분리한다
    for i in range(len(s)-1):
        if count[0] == s[i]:
            count[1] += 1
        else:
            count[2] += 1
        if count[1] == count[2]:
            answer += 1
            count = [s[i+1], 0, 0]
    answer += 1
    return answer

문제를 풀다보면 굳이 문자를 나눠야 하나 싶었다

count한 수들이 같아지면 분리하는 것 대신 확인해야 할 첫 번째 index를 바로 다음으로 보내버리면 되는 것이었다

문제에 적힌 마지막에 두 수가 달라도 분리하고 종료하라는 조건이 들어가서 마지막에 +1을 더해주었다

그렇게 해서 전체반복없이 코드 작성이 완료되었다


출력

수많은 테스트 케이스에도 끄덕없는 코드가 완성되었다 !


End

728x90
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.