문자열 나누기

2025. 2. 7. 00:10·코딩 테스트/프로그래머스

문제

문제 해석

1. 첫 글자를 읽는다.

2. 같음과 다름을 숫자로 기록하고

3. 문자열의 길이만큼 반복해서 읽는데

4. 읽어나가면서 일치,불일치를 횟수를 세고

5. 일치와 불일치가 같아지면 멈추고 분리한다.(실제로 분리는 안한다)

6. 다음 분리를 위해서 Answer에 분리횟수를 더하면서 일치 불일치 횟수를 초기화한다.

7. 문자열의 길이에 딱 맞게 분리될 수 있으므로 이를 고려해서 새로운 첫 문자를 갱신한다.

8. 문자열 순회가 끝나고 난 뒤, 일치와 불일치가 같지 않아 잘리지 않은 경우가 있을 수 있으므로 예외처리를 해준다.

 

코드

#include <string>

using namespace std;

int solution(string s) {
    // 첫 글자를 읽고
    char FirstAlphabet = s[0];
    // 같음 / 다름을 저장하고
    size_t Same = 0;
    size_t Diff = 0;
    
    // 문자열의 길이
    size_t Length = s.length();
    
    int Answer = 0;
    for(int IDX = 0; IDX < Length; ++IDX)
    {        
        // 읽어나가면서 일치여부에 따라 횟수를 세고
        FirstAlphabet == s[IDX] ? ++Same : ++Diff;
        // 처음 같아지는 경우 멈추고 분리한다.
        if(Same == Diff)
        {
            // 다음 분리를 위해 더하고
            Same = 0;
            Diff = 0;
            ++Answer;
            
            // 문자열의 길이에 딱 맞게 분리될 수 있으므로 그걸 고려해서 새로운 첫 문자를 갱신한다.
            if(IDX + 1 < Length) FirstAlphabet = s[IDX + 1];            
        }
    }
    
    // 일치와 불일치가 같지 않아 잘리지 않은 경우에 대한 예외처리
    if(0 < Same)
    {
        ++Answer;
    }
    
    return Answer;
}

 

다른사람의 풀이

1. 반복문에서 예외처리를 하는 게 아니라 반복문 외부에서 예외처리 수행(이걸 보고 나도 변경했다.)

 

회고

1. 반복문의 외부에서 처리하면 되는 것에 대한 주의가 필요하다.

 

'코딩 테스트 > 프로그래머스' 카테고리의 다른 글

둘만의 암호  (0) 2025.02.24
대충 만든 자판  (2) 2025.02.07
체육복  (0) 2025.02.04
숫자 짝궁  (2) 2025.02.03
옹알이 (2)  (1) 2025.01.31
'코딩 테스트/프로그래머스' 카테고리의 다른 글
  • 둘만의 암호
  • 대충 만든 자판
  • 체육복
  • 숫자 짝궁
DevJoo1120
DevJoo1120
  • DevJoo1120
    Jin's Programming
    DevJoo1120
  • 전체
    오늘
    어제
    • 분류 전체보기 (142)
      • 포트폴리오 (7)
        • Castlevania: Aria of Sorrow.. (7)
        • [UE5] KILL Everything (0)
      • C++ (0)
      • 라이브러리 (1)
      • 다이렉트X11 (0)
      • Unreal Engine (11)
        • Unreal Document (1)
        • 이것 저것 (8)
        • UI (1)
      • 자료구조 및 알고리즘 (0)
      • 책 정리 (3)
        • 코딩 테스트 합격자 되기 C++ 편 (10)
      • 코딩 테스트 (32)
        • 프로그래머스 (32)
      • 스파르타 코딩 언리얼 1기 (9)
        • 특강 (0)
        • C++와 Unreal Engine으로 3D .. (2)
      • TIL(Today I Learned) (63)
      • 영어 공부 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Unreal Engine 5
    정렬
    프로그래머스
    정리
    코딩 테스트
    팀 프로젝트
    Til
    문자열
    map
    코딩 테스트 합격자 되기 c++ 편
    코딩테스트
    책 정리
    반복문
    Study
    C++
    과제
    WINAPI
    이중 반복문
    스파르타 코딩 클럽
    배열
  • hELLO· Designed By정상우.v4.10.5
DevJoo1120
문자열 나누기
상단으로

티스토리툴바