Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 인프런
- 혼공파
- 자바
- Kotlin
- 정보처리기사
- 카카오코테
- Til
- 안드로이드
- 코틀린
- 안드로이드스튜디오
- 코테
- 혼공챌린지
- 혼공단
- MySQL
- join
- Android
- groupby
- select
- CS
- 티스토리챌린지
- 기술면접
- 정처기
- 프로그래머스
- java
- SQL
- 알고리즘
- 자료구조
- 오블완
- 스터디
- doitandroid
Archives
- Today
- Total
Welcome! Everything is fine.
[프로그래머스/Lv.1] 문자열 나누기 - Java 본문
728x90
📌 문제
📌 풀이
문자열을 순회하며 x와 x가 아닌 다른 글자들이 나온 횟수가 같아질때 문자열을 분리한 후, 그 개수를 반환하는 문제이다. 우선 x가 나온 횟수를 저장할 변수 count와 x가 아닌 다른 글자들이 나온 횟수를 저장할 변수 other를 만들었다. 또한 문자열 s의 첫 번째 문자를 char형 변수 c에 저장하였다. 문자열 s의 길이만큼 for문을 돌며 count와 other가 같을 경우 answer를 1증가시키고, c에 다음 문자를 넣는다. c와 같은 문자가 나오면 count를 1증가, 다른 문자가 나오면 other를 1증가시킨다.
for (int i = 0; i < s.length(); i++) {
if (count == other) {
answer++;
c = s.charAt(i);
}
if (c == s.charAt(i)) count++;
else other++;
}
📌 전체 코드
class Solution {
public int solution(String s) {
int answer = 0;
int count = 0;
int other = 0;
char c = s.charAt(0);
for (int i = 0; i < s.length(); i++) {
if (count == other) {
answer++;
c = s.charAt(i);
}
if (c == s.charAt(i)) count++;
else other++;
}
return answer;
}
}
아래 코드는 맨 처음 풀 때 못풀어서 보고 쓴 답안인데 위 코드가 더 깔끔해보인다.
import java.util.*;
class Solution {
public int solution(String s) {
int answer = 0;
int idx = 0;
char x = s.charAt(0);
int otherCount = 0;
int xCount = 1;
for (int i = 1; i < s.length(); i++) {
if (x == ' ') {
x = s.charAt(i);
continue;
}
if (x == s.charAt(i)) xCount++;
else otherCount++;
if (xCount == otherCount) {
x = ' ';
answer++;
otherCount = 0;
xCount = 1;
}
}
if (x != ' ') answer++;
return answer;
}
}
'프로그래머스 > Lv.1' 카테고리의 다른 글
[프로그래머스/Lv.1] 완주하지 못한 선수 - Java (0) | 2024.05.06 |
---|---|
[프로그래머스/Lv.1] 다트 게임(2018 KAKAO BLIND RECRUITMENT) - Java (0) | 2024.04.29 |
[프로그래머스/Lv.1] 둘만의 암호 - Java (0) | 2024.04.29 |
[프로그래머스/Lv.1] 숫자 짝꿍 - Java (0) | 2024.04.27 |
[프로그래머스/Lv.1] 옹알이(2) - Java (0) | 2024.04.27 |