일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- Unity3d
- Inventory
- 알고리즘
- Unity2D
- 워크플로
- Unity
- 스파르타내일배움캠프TIL
- 내일배움캠프
- 스파르타내일배움캠프
- 해시
- C++
- unityui
- 유니티
- 언리얼엔진
- c#
- 구현
- Firebase
- 프로그래머스
- FSM
- Photon
- 이분탐색
- 포톤
- QueryDSL
- UnrealEngine
- 스택
- 문자열
- 유클리드호제법
- UE4
- BFS
- 순열
Archives
- Today
- Total
개발 낙서장
[프로그래머스][JAVA] 문자열 나누기 본문
문자열 나누기
https://school.programmers.co.kr/learn/courses/30/lessons/140108
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
풀이 방법
처음에 문제 이해를 잘 못했는데 결국 문자 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.11.26 |
---|---|
[프로그래머스][JAVA] 둘만의 암호 (0) | 2024.02.02 |
[프로그래머스][JAVA] 숫자 짝꿍 (0) | 2024.01.18 |
[프로그래머스][문자열][JAVA] 옹알이(2) (0) | 2024.01.16 |
[프로그래머스][Java][효율성] 기사단원의 무기 (0) | 2024.01.12 |
Comments