일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- UE4
- Unity3d
- 스택
- QueryDSL
- 워크플로
- 이분탐색
- 해시
- Photon
- Unity
- BFS
- UnrealEngine
- 스파르타내일배움캠프
- Inventory
- 구현
- 알고리즘
- Firebase
- 프로그래머스
- c#
- 포톤
- 유니티
- 스파르타내일배움캠프TIL
- 내일배움캠프
- 순열
- unityui
- 언리얼엔진
- 문자열
- 유클리드호제법
- Unity2D
- C++
- FSM
Archives
- Today
- Total
개발 낙서장
[프로그래머스][JAVA] 문자열 나누기 본문
문자열 나누기
https://school.programmers.co.kr/learn/courses/30/lessons/140108
풀이 방법
처음에 문제 이해를 잘 못했는데 결국 문자 x를 기준으로 문자열을 탐색해가면서 'x가 나온 횟수'와 'x가 아닌 문자가 나온 횟수'가 같아지는 부분을 기점으로 나누는 것이다.예를 들어 abcdefg라는 문자열이 있다면 첫 문자 'a'를 기준으로 잡고 탐색하는데 'b'에 도달했을 때 'a'가 나온 횟수 1, 'a'가 아닌 문자가 나온 횟수 1이므로 'ab'라는 문자열로 나눈다.
이후 'c' 문자를 기준으로 잡고 'd'에 도달했을 때 두 횟수가 각각 1이므로 'cd'라는 문자열로 나눈다.
이렇게 하면 결국 'ab', 'cd', 'ef', 'g' 총 4개의 문자열로 나눠지게 된다.문제가 문자열 나누기이지만 사실 그냥 count해주면서 비교하면 되는 간단한 문제이다.
소스 코드
더보기
class Solution {
public int solution(String s) {
int answer = 0;
int count_word = 1;
int count_not_word = 0;
Character word = s.charAt(0);
for(int i = 1; i < s.length(); i++) {
if(word.equals(s.charAt(i))) {
count_word++;
}
else {
count_not_word++;
}
if(count_word == count_not_word) {
answer++;
count_word = 0;
count_not_word = 0;
if(i < s.length() - 1) {
word = s.charAt(i + 1);
}
}
}
if(count_word > 0) {
answer++;
}
return answer;
}
}
'Algorithm > Programmers' 카테고리의 다른 글
[프로그래머스][JAVA] 둘만의 암호 (0) | 2024.02.02 |
---|---|
[프로그래머스][JAVA] 숫자 짝꿍 (0) | 2024.01.18 |
[프로그래머스][문자열][JAVA] 옹알이(2) (0) | 2024.01.16 |
[프로그래머스][Java][효율성] 기사단원의 무기 (0) | 2024.01.12 |
[프로그래머스][정렬][JAVA] 과일 장수 (0) | 2024.01.09 |
Comments