프로그래머스 문자열 내 p와 y의 개수 풀이
문제 정리
- 대문자와 소문자가 섞여있는 문자열 s가 주어진다.
- s에 'p'의 개수와 'y'의 개수를 비교해 같으면 true / 다르면 false를 return한다.
- p와 y모두 하나도 없는 경우에는 true를 리턴한다.
- 대문자와 소문자는 구분하지 않는다.
- s의 길이는 50이하이다.
문제 풀이
문자열의 길이가 최대 50이므로 모두 탐색하면 된다.
- 대소문자를 구분하지 않기 위해 주어진 문자열을 소문자로 바꾼다
- 문자열을 캐릭터 배열로 변환한다. (하지 않고 substring으로 해도 됨)
- 그리고 문자를 하나씩 검사하며 p라면 p의 개수 count, y라면 y의 개수 count
- 마지막에 p와 y의 개수를 비교하여 같다면 true, 다르면 false를 반환한다.
문자열 내 p와 y의 개수 자바 코드
import java.util.*;
class Solution {
public static void main(String[] args){
String s = "pPoooyY";
System.out.println(solution(s));
}
public static boolean solution(String s) {
int p = 0;
int y = 0;
char[] chs = s.toLowerCase().toCharArray(); // 소문자로 바꾼후 문자배열로 변환
for(int i=0; i<chs.length; i++){
if(chs[i] == 'p') // p의 개수
p++;
else if(chs[i] == 'y') // y의 개수
y++;
}
if(p == y)
return true;
else
return false;
}
}
문자열 내 p와 y의 개수 c++ 풀이
#include <string>
using namespace std;
bool solution(string s) {
int pNum = 0, yNum = 0;
for (int i = 0; i < s.size(); i++) {
s[i] = tolower(s[i]);
if (s[i] == 'y') yNum++;
if (s[i] == 'p') pNum++;
}
if (pNum == 0 && yNum == 0) return true;
if (pNum == yNum) return true;
else return false;
}