반응형
문제 링크
코딩테스트 연습 - 문자열 내 p와 y의 개수 | 프로그래머스 (programmers.co.kr)
문제 풀이
코드-1
boolean solution(String s) {
int total = 0;
for(char ch : s.toLowerCase().toCharArray()) {
switch(ch) {
case 'p': total++; break;
case 'y': total--; break;
}
}
return total == 0;
}
최종적으로 p와 y의 개수 차이를 구하기 위한 total
이라는 변수를 선언했습니다.
먼저 String 의 toLowerCase()
로 활용해 모든 문자열을 소문자로 만들었습니다.
toCharArray()
로 char 타입의 배열을 순서대로 탐색합니다.
- p인 경우에는 total 에서 1일 빼고
- y인 경우에는 total 에서 1을 더합니다.
- 만약 p와 y의 개수가 같다면 total은 0이 될 것이고, 같지 않다면 0이 아닌 다른 값이 될 것입니다.
테스트 케이스 실행 속도
- 🔥 0.03ms
코드-2
boolean solution(String s) {
return s.replaceAll("[^yY]", "").length() - s.replaceAll("[^pP]", "").length() == 0;
}
- 대소문자 p를 모두 제거한 문자열과 대소문자 y를 모두 제거한 문자열의 길이가 같다면 p와 y의 개수는 같습니다.
테스트 케이스 실행 속도
- 🔥 0.1 ~ 0.5ms
코드-3
boolean solution4(String s) {
return s.chars().filter(ch -> ch == 'p' || ch == 'P').count() == s.chars().filter(ch -> ch == 'y' || ch == 'Y').count();
}
public IntStream chars()
문자열을 intstream 타입으로 변환합니다.IntStream filter(IntPredicate predicate)
대/소문자 p 만 필터링한 개수, 대/소문자 y 만 필터링한 개수가 각각 같다면 p와 y의 개수는 같습니다.
테스트 케이스 실행 속도
- 🔥 1.0 ~ 2.1ms
반응형
'Algorithm > Java' 카테고리의 다른 글
프로그래머스 - 같은 숫자는 싫어 java (0) | 2022.06.16 |
---|---|
프로그래머스 - 두 정수 사이의 합 java (0) | 2022.06.14 |
프로그래머스 - 이상한 문자 만들기 java :: 12930 (0) | 2022.02.12 |
프로그래머스 - 자연수 뒤집어 배열로 만들기 java :: 12932 (0) | 2022.02.08 |
프로그래머스 - 콜라츠 추측 java (0) | 2022.02.08 |