대문자와 소문자가 섞여있는 문자열 s가 주어집니다. s에 'p'의 개수와 'y'의 개수를 비교해 같으면 True, 다르면 False를 return 하는 solution를 완성하세요. 'p', 'y' 모두 하나도 없는 경우는 항상 True를 리턴합니다. 단, 개수를 비교할 때 대문자와 소문자는 구별하지 않습니다.
예를 들어 s가 "pPoooyY"면 true를 return하고 "Pyy"라면 false를 return합니다.
- 문자열 s의 길이 : 50 이하의 자연수
- 문자열 s는 알파벳으로만 이루어져 있습니다.
s answer "pPoooyY" true "Pyy" false
- 'p'의 개수 2개, 'y'의 개수 2개로 같으므로 true를 return 합니다.
- 'p'의 개수 1개, 'y'의 개수 2개로 다르므로 false를 return 합니다.
class Solution {
boolean solution(String s) {
boolean answer = true;
int p = 0;
int y = 0;
s = s.toUpperCase();
for(int i=0; i<s.length(); i++){
char c = s.charAt(i);
if(c == 'Y'){
y++;
}else if(c == 'P'){
p++;
}
}
answer = y == p? true : false;
return answer;
}
}
class Solution {
boolean solution(String s) {
s = s.toUpperCase();
return s.chars().filter( e -> 'P'== e).count() == s.chars().filter( e -> 'Y'== e).count();
}
}
class Solution {
boolean solution(String s) {
s = s.toLowerCase();
int count = 0;
for (int i = 0; i < s.length(); i++) {
if (s.charAt(i) == 'p')
count++;
else if (s.charAt(i) == 'y')
count--;
}
if (count == 0)
return true;
else
return false;
}
}
➡️ 다시 풀어볼 때 마지막 if문에서 살짝 고민했는데 charAt(i)가 p와 같을 때 갯수를 늘리고 y와 같을 때 갯수를 줄이는데 만약 각각의 갯수가 3개라고 가정하면 p와 같을 때 ++ 3이다가 y와 같을 때 -3이 돼서 0이 됨!!! 그니까 0이면 true 같으니까. 0이 아니면 false다!!! 이렇게 푼 사람 대박 똑똑이
이번이 레벨1 3개 풀어보는데 처음에 감도 못잡았다😢 근데 그래도 풀이 보니까 이해는 간다!! 아무래도 String 클래스가 매우 중요한거 같다 또 toUpperCase() 쓴 거 까먹고 밑에서 소문자로 찾고 있었음;; 개수이기 때문에 ++ 잊지말기!!
다른풀이 보니까 람다식을 활용해 한줄로 푸는 사람도 있고 두번째 다른풀이가 변수를 하나만 설정해 푸는 정말 좋은 아이디어였다 참고하겠음!!!