☕Language: Java
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
|
class Solution {
boolean solution(String s) {
// 1. s에 'p'의 개수와 'y'의 개수를 비교해 같으면 True, 다르면 False를 return
// 2. 'p', 'y' 모두 하나도 없는 경우는 항상 True를 리턴'
// 3. 개수를 비교할 때 대문자와 소문자는 구별하지 않음
boolean answer = true;
int cnt = 0;
s = s.toLowerCase();
for(int i=0; i<s.length(); i++){
char c = s.charAt(i);
if(c=='p'){
cnt++;
}
if(c=='y'){
cnt--;
}
}
if(cnt!=0){
answer = false;
}
return answer;
}
}
|
🤔 해설
1. toLowerCase()
- 대소문자 -> 소문자로 통일
2. for문 + if문
- p일 때는 cnt +1, y일 때는 cnt -1로 stack과 유사하게 구현
- cnt가 0일 때만 true 반환
😮 이 외의 풀이
1
2
3
4
5
6
7
8
|
class Solution {
boolean solution(String s) {
s = s.toUpperCase();
return s.chars().filter( e -> 'P'== e).count() == s.chars().filter( e -> 'Y'== e).count();
}
}
|
* 람다식 사용
1
2
3
4
5
6
7
|
class Solution {
boolean solution(String s) {
return s.replaceAll("[^yY]", "").length() - s.replaceAll("[^pP]", "").length() == 0 ? true : false;
}
}
|
* 정규식 사용
- s.replaceAll("[^yY]", "")
- y 또는 Y가 아닌 문자 제거(공란으로 replace)
🚨 문자열을 두 번 수정하고 두 번 길이를 계산하므로 효율적이지 않을 수 있음
🔗 소스 코드
GitHub
📚 참고 자료
'Computer > Algorithm_Java' 카테고리의 다른 글
[Algorithm_Java] 연속된 부분 수열의 합 (Success) (0) | 2023.10.13 |
---|---|
[Algorithm_Java] 2016년 (Success) (0) | 2023.10.12 |
[Algorithm_Java] 24480번 알고리즘 수업 - 깊이 우선 탐색 2 (Success) (0) | 2023.10.08 |
[Algorithm_Java] 15652번 N과 M (4) (Success) (1) | 2023.10.05 |
[Algorithm_Java] 24479번 알고리즘 수업 - 깊이 우선 탐색 1 (Success) (0) | 2023.10.02 |