[JAVA 문제 풀이] 299. 문자열 나누기

프로그래머스 (140108)
Stupefyee's avatar
Jun 04, 2025
[JAVA 문제 풀이] 299. 문자열 나누기
notion image
 

내가 작성한 코드

class Solution { public int solution(String s) { StringBuilder sb = new StringBuilder(); // 최종 문자열 비교를 위한 StringBuilder int answer = 0; int same = 0; // 첫글자와 같은 개수 int different = 0; // 첫글자와 다른 개수 char firstChar = s.charAt(0); for(int i = 0; i < s.length(); i++) { // 현재 문자와 첫번째 문자 비교 if(firstChar == s.charAt(i)) { same++; } else { different++; } // 같은 문자와 다른 문자의 개수가 같아지면 if(same == different) { String cut = s.substring(i - different - same + 1, i + 1); // 잘라낸 문자열 sb.append(cut); // StringBuilder에 추가 answer++; // 카운트 초기화 same = 0; different = 0; // 다음 문자로 첫글자 변경 if(i + 1 < s.length()) { firstChar = s.charAt(i + 1); } } } // 길이가 다름 >> 따로 노는 문자열 존재 >> 마지막에 추가가 return sb.length() == s.length() ? answer : answer + 1; } }
 

다른 사람의 코드

class Solution { public int solution(String s) { char prev = '1'; int same = 0, different = 0, answer = 0; for (char c : s.toCharArray()) { // 첫글자일 경우 if (prev == '1') { prev = c; same++; answer++; // 문자열 시작시 카운트 증가 } else if (prev == c) { same++; } else { different++; } if (same == different) { prev = '1'; same = 0; different = 0; } } return answer; } }
  • 나는 문자열을 끊은 뒤에 answer을 증가시켰다면 다른 사람은 문자열 시작시에 증가시킴 → 내 코드의 마지막 문자열끼리의 검증을 없앨 수 있음
Share article

stupefyee