#문자열
[프로그래머스] 문자열 내 p와 y의 개수
https://school.programmers.co.kr/learn/courses/30/lessons/12916
문제를 보았을 때 반복문을 사용하여 문자열의 문자 각각을 비교하여 p와 y의 수를 세면 될 것이라고 생각했다.
바로 charAt()을 사용하여 풀어야겠다고 생각했다.
그런데 문득 charAt은 문자열이 아닌데 equals가 가능한지 헷갈렸다.
char는 기본 데이터 타입이기 때문에 ==로 비교하는 것이 옳다.
equals는 객체의 내용을 비교하는 데에 사용하기 때문에 char에 사용할 수 없다.
class Solution {
boolean solution(String s) {
boolean answer = true;
int yCnt = 0;
int pCnt = 0;
for(int i=0; i<s.length(); i++) {
if(s.charAt(i) == 'p' || s.charAt(i) == 'P') {
pCnt++;
} else if (s.charAt(i) == 'y' || s.charAt(i) == 'Y') {
yCnt++;
}
}
if (pCnt != yCnt) {
answer = false;
}
return answer;
}
}
문제를 풀고난 후 'p'와 'P'를 따로 검사를 하는 방법보다 소문자나 대문자 한쪽으로 모두 변환 후 둘 중 하나만 검사하는 것이 더 괜찮은 방법일 것 같다는 생각이 들었다. (성공)
toUpperCase() - 대문자 변환
toLowerCase() - 소문자 변환
기본 for문을 사용하는 것이 아닌 향상된 for문을 사용하여 가독성을 더 높일 수 있다. (성공)
toCharArray() - String 문자열을 char[] 배열로 변환
이건 머리를 탁 치는 방법이었다. 정말 나는 생각지도 못한..
문제에는 이렇게 나와있었다.
"s에 'p'의 개수와 'y'의 개수를 비교해 같으면 True"
"'p', 'y' 모두 하나도 없는 경우는 항상 True를 리턴"
이 문장으로 알 수 있는 것은 'p'의 갯수 - 'y'의 갯수 = 0 이라는 것이다. 그 반대도 성립
즉, p의 갯수를 담는 변수와 y의 갯수를 담는 변수 각각 있는 것이 아닌
하나의 변수로 p가 있을 때는 +를 y가 있을 때는 -를 하여 결과가 0이 되면 true를 반환하면 되는 것이다! 0.0 (성공)
int count = 0;
p 있으면 ++ / y 있으면 --
결과가 0이면 갯수가 같거나 모두 없다는 뜻