문제: https://school.programmers.co.kr/learn/courses/30/lessons/140108
1. 코드
class Solution {
public int solution(String s) {
int answer = 0;
while(!s.isBlank()) {
char start = s.charAt(0);
int n1 = 0, n2 = 0;
for(int i = 0; i < s.length(); i++) {
if(start == s.charAt(i))
n1++;
else
n2++;
if(n1 == n2) {
s = s.substring(i + 1);
answer++;
break;
}
}
if(n1 != n2) {
answer++;
break;
}
}
return answer;
}
}
2. 설명
while(!s.isBlank()) {
char start = s.charAt(0);
int n1 = 0, n2 = 0;
문자열이 비어지는 상태까지 반복하며 start에는 문자열의 첫 번째 문자를 저장합니다. n1은 첫 번째 문자가 나오는 개수이며, n2는 첫 번째 문자가 아닌 다른 문자가 나오는 수입니다.
for(int i = 0; i < s.length(); i++) {
if(start == s.charAt(i))
n1++;
else
n2++;
if(n1 == n2) {
s = s.substring(i + 1);
answer++;
break;
}
}
반복문을 통해서 문자열의 문자들에게 접근하는데 해당 문자가 첫 번째 문자와 동일하다면 n1을 아니라면 n2를 증가시킵니다. 그리고 n1과 n2가 일치하면 현재까지 읽은 문자열을 제거한 뒤 answer를 증가시킵니다.
if(n1 != n2) {
answer++;
break;
}
만약 for문이 종료되었는데 n1과 n2가 불일치하다면 더 이상 읽을 문자가 없다는 의미이기에 answer를 증가시키고 while문에서 탈출합니다. 그리고 answer를 반환하면 문제는 해결됩니다.
3. 정리
- 문제에 적힌 조건 그대로 따르면 쉽게 해결된다.
출처: 프로그래머스 코딩 테스트 연습,
https://school.programmers.co.kr/learn/challenges
'컴퓨터 > 프로그래머스' 카테고리의 다른 글
프로그래머스 - 64061번: 크레인 인형뽑기 게임 [Java] (0) | 2023.08.10 |
---|---|
프로그래머스 - 160586번: 대충 만든 자판 [Java] (2) | 2023.08.09 |
프로그래머스 - 42576번: 완주하지 못한 선수 (0) | 2023.08.07 |
프로그래머스 - 42862번: 체육복 [Java] (0) | 2023.08.06 |
프로그래머스 - 133499번: 옹알이 (2) [Java] (0) | 2023.08.05 |