투로드
Coder ToLoad
투로드
전체 방문자
오늘
어제

블로그 메뉴

  • 홈
  • 알고리즘
  • CS
  • GITHUB
  • 태그
  • 분류 전체보기 (69)
    • Toy Project (0)
      • EternalSNS (0)
    • Algorithm (46)
      • BaekJoon (38)
      • Programmers (7)
      • Code Tree (1)
    • Computer Science (13)
      • JAVA (7)
      • DataBase (4)
    • Backend (7)
      • Spring (2)
      • JPA (2)
      • Django (3)
    • Mobile (2)
      • Android (2)
    • Unity (1)

인기 글

최근 글

hELLO · Designed By 정상우.
투로드

Coder ToLoad

Algorithm/Programmers

[JAVA] Programmers : 문자열 나누기

2022. 12. 3. 11:46

문제

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

해결방법

조건에 맞게 문자열을 분리하고 분리된 횟수를 찾는 문제

처음 읽은 글자와 다른 글자의 수가 서로 일치될 때 분리를 해야한다.

 

예를 들어 "aaabbaccccabba" 의 경우 a가 기준이 되어서 aaabbacc 일때 a의 개수가 4개이고 a를 제외한 bbcc가 4개여서 이 타이밍에 분리가 된다.

 

즉 기준 문자와 다른 문자 수가 일치가 되지않으면 계속 분리하지않고 진행이 된다.

아까 위의 예시로 추가적으로 설명을 작성하면 aaabb인 상태에서는 a의 개수가 3개이고 a를 제외한 bb는 2개여서 분리되지 않고 진행이 된 것이다.

 

이를 이용해서 코드를 작성했다.

또 기준 문자와 다른 문자가 일치하지 않는 상태에서 종료가 된다면 분리를 해주는게 또 다른 조건이라서 마지막에 조건문을 추가해주었다.

 

코드

class Solution {
    public int solution(String s) {
        int answer = 0;
        
        // 기준 문자
        char stWord = s.charAt(0);
        int stCnt = 1; 
        
        // 다른 문자
        int otherCnt = 0;
        
        for (int i = 1; i < s.length(); i++) {
            char word = s.charAt(i);
            
            if (stWord == word) stCnt++;
            else otherCnt++;            

            // 일치하면 분리
            if (stCnt == otherCnt) {
                answer++;
                
                // 추가로 탐색이 가능하다면 값 초기화
                if (s.length() > i + 1) {
                    stCnt = 1;
                    otherCnt = 0;
                    stWord = s.charAt(++i);
                }
            }
        }
        
        // 횟수가 다른 상태에서 종료됬을 때도 분리
        if (stCnt != otherCnt) answer++;
        
        return answer;
    }
}

 

 

저작자표시 비영리 (새창열림)

'Algorithm > Programmers' 카테고리의 다른 글

[JAVA] Programmers : 등산코스 정하기  (0) 2022.09.07
[JAVA] Programmers : 배달  (0) 2022.05.02
[JAVA] Programmers : 피로도  (0) 2022.05.02
[JAVA] 행렬 테두리 회전하기  (0) 2021.05.03
[JAVA] 광고 삽입  (0) 2021.05.01
    'Algorithm/Programmers' 카테고리의 다른 글
    • [JAVA] Programmers : 등산코스 정하기
    • [JAVA] Programmers : 배달
    • [JAVA] Programmers : 피로도
    • [JAVA] 행렬 테두리 회전하기
    투로드
    투로드
    훌륭한 프로그래머가 되어가는 과정을 담아보는 중입니다.

    티스토리툴바