ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 문자열 나누기
    코딩테스트 연습 2023. 11. 17. 11:38

    문제 설명

    제한사항

    입출력 예 및 설명

    내 풀이

    def solution(s):
        answer = 0
        
        true, false = 0,0 # s의 첫번째 문자열과 같으면 true, 다르면 false
        first_str = s[0] # s의 첫번째 문자열
        
        for i, string in enumerate(s):
            if first_str == string: # s의 첫번째 문자열과 같으면 true에 1 증가
                true += 1
            else:                   # s의 첫번째 문자열과 다르면 false에 1 증가
                false += 1
            if true == false:       # true와 false가 같다면(분리 조건)
                answer += 1         # 분리된 문자열 개수 1증가
                true, false = 0,0   # true, false 초기화
                if i == len(s)-1:   # 만약에 현재 index가 문자열 s길이-1 과 같다면(현재 index가 마지막 index라면)
                    pass            # pass(지금이 s의 마지막이니까 i+1 하면 에러남)
                else:               # 그게 아니라면 (지금이 s의 마지막이 아니라면)
                    first_str = s[i+1]  # first_str을 s[i+1]로 재설정
                    
        if true != false:  
        # s를 다 돌았는데 true랑 false랑 같지 않다는 건 마지막까지 분리되지 않은 문자열이 있다는 것. 
        # 그럼 지금까지 읽은 문자열을 분리하고 종료하라고 문제설명에 나와있으니까
        # 결국에 분리된 문자열을 하나 증가하는 것과 동일하다.
            answer += 1
        return answer

    채점 결과


    다른 사람 풀이

    from collections import deque
    
    def solution(s):
    
        ans = 0
    
        q = deque(s)    
        while q:
            a, b = 1, 0       # 여기서 a는 s[0]번째는 s[0]랑 비교하면 무조건 1증가될 거니까 1이라고 초기화
            x = q.popleft()   # s의 첫번째 문자, popleft()를 하면서 s = s[1:]이 된다
    
            while q:
                n = q.popleft() # s의 첫번째 문자, popletf()를 하면서 s = s[1:]이 된다
                if n == x:
                    a += 1
                else:
                    b += 1
    
                if a == b:
                    ans += 1
                    break
        if a != b:
            ans += 1
    
        return ans

     

    큐로 푼 코드가 있어서 가져와봤다!

     

    다른 사람 풀이 채점 결과

    좌 : 내 풀이 채점결과 / 우 : 다른 사람 풀이 채점 결과

    대체적으로 큐로 짠 코드가 속도가 빠른 것 같다!

    근데 테스트 케이스가 다 똑같은 건가? 랜덤인가?? -> 확인해봐야할듯

     

     

    출처: 프로그래머스 코딩 테스트 연습

    '코딩테스트 연습' 카테고리의 다른 글

    명예의 전당 (1)  (0) 2023.11.27
    옹알이 (2)  (0) 2023.11.18
    개인정보 수집 유효기간(2023 KAKAO BLIND RECRUITMENT)  (1) 2023.11.16
    카드 뭉치  (0) 2023.11.15
    둘만의 암호  (0) 2023.11.14
Designed by Tistory.