대문자와 소문자가 섞여있는 문자열 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 |
입출력 예 #1
'p'
의 개수 2
개, 'y'
의 개수 2
개로 같으므로 true
를 return
합니다.
입출력 예 #2
'p'
의 개수 1
개, 'y'
의 개수 2
개로 다르므로 false
를 return
합니다.
class Solution {
boolean solution(String s) {
boolean answer = false;
int cntP = 0, cntY = 0;
//char로 바꾸기
char[] arrC = new char[s.length()];
for ( int i = 0; i < s.length(); i++ ) {
arrC[i] = s.charAt(i);
}
//for문을 돌려 arrS[i]의 값이 s값이면 cntS++
//y값이면 cntY++
for ( int i = 0; i < arrC.length; i++) {
if ( arrC[i] == 'p' || arrC[i] == 'P' ) ++cntP;
if ( arrC[i] == 'y' || arrC[i] == 'Y') ++cntY;
}
//cntY와 cntS가 다르다면 answer을 true로
if ( cntY == cntP ) answer = true;
return answer;
}
}
boolean answer = false;
int cntP = 0, cntY = 0;
리턴할 변수 answer
을 선언한 후 초깃값을 false
로 준다.
알파벳 p
의 갯수를 누적할 cntP
와 알파벳 y
의 갯수를 누적할 cntY
을 0
으로 초기화한다. 단, 대소문자는 구분하지 않는다.
//char로 바꾸기
char[] arrC = new char[s.length()];
for ( int i = 0; i < s.length(); i++ ) {
arrC[i] = s.charAt(i);
}
문자열 s
의 한 글자씩을 저장할 배열 arrC[]
을 선언한다. 이 때 s
의 각 한 글자씩을 저장하는 배열이므로 크기는 s.length()
로 준다.
char.At()
을 이용해 s
의 글자를 한 글자씩 arrC[]
에 저장한다.
//for문을 돌려 arrC[i]의 값이 s값이면 cntS++
//y값이면 cntY++
for ( int i = 0; i < s.length(); i++) {
if ( arrC[i] == 'p' || arrC[i] == 'P' ) ++cntP;
if ( arrC[i] == 'y' || arrC[i] == 'Y') ++cntY;
}
for문
으로 arrC[]
에 저장된 알파벳들이 p
y
와 같은지를 판별한다. 이 때 p
가 맞다면 cntP
를 증가시키고 y
가 맞다면 cntY
를 증가시켜 몇 자릿수나 있는지를 파악한다.
//cntY와 cntP가 같다면 answer을 true로
if ( cntY == cntP ) answer = true;
return answer;
}
}
만약 y
의 개수와 p
의 개수가 같다면 answer
에 true
의 값을 지정해준다. answer
의 기본값이 false
이므로 따로 else
문을 만들 필요는 없다.
answer
에 저장된 값을 리턴한다.