해당 게시글은 [Java] 어서와! 자료구조 알고리즘은 처음이지?https://programmers.co.kr/learn/courses/13577를 간략히 요약한 게시글이며 모든 출처는 해당강의에 있습니다
p와 y의 갯수를 구하는 문제입니다. 대소문자를 구분하지 않으며 정확한 갯수가 아니라 같은지만 구하면 됩니다. p와 y가 서로 상반되게 값을 +와 -을 하면 될거샅습니다.
먼저 p와y가 아닌 문자들을 모두 제거하고 한문자씩 p인지 y인지 증감하며 갯수를 구하였습니다.
class Solution {
boolean solution(String s) {
//대소문자 구분X, py제외 제거
s = s.toLowerCase().replaceAll("[^py]","");
//갯수를 세알림
int count = 0;
//한 문자씩 비교
for(int i = 0; i< s.length();i++){
switch(s.charAt(i)){
case 'p': //p는 +1
count++;
break;
case 'y': //y는 -1
count--;
break;
}
}
//p의 갯수와 y의 갯수가 동일한지?
return count == 0;
}
}
모두 소문자로 바꾼후 p와 y의 갯수를 문자열의 문자 하나씩 비교하면서 count
변수를 +1와 -1를 하였습니다.
굳이 for문을 할 필요가 없습니다. 문자의 갯수를 String.length()
로 구할 수 있을 것입니다.
class Solution {
boolean solution(String s) {
int p = s.replaceAll("[^pP]","").length(); //p의 개수
int y = s.replaceAll("[^yY]","").length(); //y의 개수
//p와 y의 갯수가 동일한지?
return p == y;
}
}
p(P)의 갯수를 해당 문자만 남겨둬서 .length()
메서드로 갯수를 구하였습니다. 마찬가지로 y(Y)의 갯수도 같은 방법으로 구하였습니다.
p
와 y
변수에 각각 문자의 갯수가 저장됩니다. 같은지만 구분하는 문제이므로 p == y
로 비교합니다.