-

문자열 내 p와 y 개수(Level 1) 본문

프로그래머스 문제 풀이

문자열 내 p와 y 개수(Level 1)

흣차 2021. 9. 23. 00:03
728x90
반응형

문제 설명

 

대문자와 소문자가 섞여있는 문자열 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 합니다.

 

 

문제 분석 및 코드 해설

 

sb를 배열에 넣기 위해서 split메소드를 이용하여 각 배열마다 쪼개서 넣습니다.

그리고 sb[i]의 값이 소문자일 때만 값을 저장하는 것인줄 알았는데 알고보니 대문자도 포함하여 상정된 문제였습니다.

괜히 10분 정도 더 쓴 것 같아서 아쉽네요. 다음엔 문제를 더 꼼꼼하게 읽어 봐야겠습니다.

 

sb[i] == "p"라고 처음에 썼다가 charAt(i)도 아닌데 잘못 풀이하여 여기서도 시간을 잡아먹었습니다. 다음부턴 문자열 비교는 charAt(i) 또는 equals메소드로 문자열을 찾는 것이 나아 보입니다. 

 

코딩하시는 모든 분들 화이팅.

class Solution {
    boolean solution(String s) {
        boolean answer = true;
        
        String[] sb = s.split("");
        int f = 0;
        int g = 0;
        for(int i = 0; i < sb.length; i++) {
           if(sb[i].equals("p") || sb[i].equals("P")) {
               f++;
           }
            else if(sb[i].equals("y") || sb[i].equals("Y")){
                g++;
            }
        }
        if(f == g)
            answer = true;
        else
            answer = false;
        return answer;
    }
}
728x90
반응형
Comments