-
문제 설명
제한사항
입출력 예 및 설명
내 풀이
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