inblog logo
|
stupefyee
    알고리즘문제풀기

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

    프로그래머스 (140108)
    Stupefyee's avatar
    Stupefyee
    Jun 04, 2025
    [JAVA 문제 풀이] 299. 문자열 나누기
    Contents
    내가 작성한 코드다른 사람의 코드
    school.programmers.co.kr
    https://school.programmers.co.kr/learn/courses/30/lessons/140108
    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
    Contents
    내가 작성한 코드다른 사람의 코드

    stupefyee

    RSS·Powered by Inblog