새벽_나그네
12시 지난 새벽
새벽_나그네
전체 방문자
오늘
어제
  • 분류 전체보기
    • TIL
    • DevLog
    • Algorithm
    • ComputerScience
    • etc

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 스파르타코딩클럽
  • portfolio
  • 내일배움캠프
  • til
  • AI트랙
  • TodayILearned
  • 내일배움카드
  • 개발일지
  • 코딩
  • 국비지원
  • Github
  • Python
  • machine learning
  • 내일배움단
  • 자기주도학습
  • 코딩프로젝트
  • 프로그래머스
  • docker
  • 코린이
  • Selenium 4

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
새벽_나그네

12시 지난 새벽

Algorithm

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

2023. 1. 11. 15:44

문제

문제 설명

문자열 s가 입력되었을 때 다음 규칙을 따라서 이 문자열을 여러 문자열로 분해하려고 합니다.

  • 먼저 첫 글자를 읽습니다. 이 글자를 x라고 합시다.
  • 이제 이 문자열을 왼쪽에서 오른쪽으로 읽어나가면서, x와 x가 아닌 다른 글자들이 나온 횟수를 각각 셉니다. 처음으로 두 횟수가 같아지는 순간 멈추고, 지금까지 읽은 문자열을 분리합니다.
  • s에서 분리한 문자열을 빼고 남은 부분에 대해서 이 과정을 반복합니다. 남은 부분이 없다면 종료합니다.
  • 만약 두 횟수가 다른 상태에서 더 이상 읽을 글자가 없다면, 역시 지금까지 읽은 문자열을 분리하고, 종료합니다.

문자열 s가 매개변수로 주어질 때, 위 과정과 같이 문자열들로 분해하고, 분해한 문자열의 개수를 return 하는 함수 solution을 완성하세요.

 

입력 & 출력

입출력 예

sresult

"banana" 3
"abracadabra" 6
"aaabbaccccabba" 3

 

풀이 과정

1. 정답인 answer가 늘어나는 경우는 간단하게 생각해서 x의 개수와 x가 아닌 것의 개수가 일치할 때이고 이를 조건문에서 판별할 수 있게 구성한다. 이는 코드의 6번째 줄에 기입되어 있다.

- 처음 시작할 때는 x와 other count가 모두 0이므로 answer의 값이 1 증가하면서 시작되는데 개념적으로는 모순되지만 첫 번째 경우를 제외하고 마지막에 1을 더하는 것과 그냥 첫번째 경우에도 1을 증가하고 시작하는 것이 결과적으로 같아서 유지하였다.

 

2. 1번의 조건문 판별은 문자열 s를 한 개씩 순회하면서 실행하여야 하므로 for문을 이용해서 s를 하나씩 순회하도록 구성한다.

 

3. 만약 개수가 일치하지 않는 다면 두 가지 중에 하나를 수행한다. 첫 번째로는 x가 확인하는 문자열 s의 한 개의 unit과 같을 경우 x의 값이 하나 더 나온 것이므로 x_count의 증가 이런 경우가 아닌 경우 other_number_count의 증가를 하는 방식이다.

 

4. 이렇게 1번의 x의 개수와 ohter_number의 개수를 판별할 때 x 값을 변경하면서 진행하면서 answer값을 증가시키면 원하는 값을 얻을 수 있다.

 

코드

def solution(s):
    answer = 0
    x_count = 0
    other_number_count = 0
    for i in s:
        if x_count == other_number_count:
            answer += 1
            x = i
        if x == i:
            x_count += 1
        else:
            other_number_count += 1
    return answer

 

저작자표시 비영리 변경금지

'Algorithm' 카테고리의 다른 글

[프로그래머스] 개인정보 수집 유효기간  (0) 2023.01.11
[프로그래머스] 다항식 더하기 - 반쪽 리뷰  (0) 2022.12.17
[프로그래머스] 소수 찾기 - 2번째  (0) 2022.12.17
[프로그래머스] 구명보트  (0) 2022.10.22
[프로그래머스] 평행  (0) 2022.10.04
    'Algorithm' 카테고리의 다른 글
    • [프로그래머스] 개인정보 수집 유효기간
    • [프로그래머스] 다항식 더하기 - 반쪽 리뷰
    • [프로그래머스] 소수 찾기 - 2번째
    • [프로그래머스] 구명보트
    새벽_나그네
    새벽_나그네
    IT, 프로그래밍, 정보, 스마트스토어

    티스토리툴바