본문 바로가기
알고리즘/코딩 - 프로그래머스

[Java][프로그래머스][Level 1] 문자열 내 p와 y의 개수

by 주남2 2019. 3. 28.
반응형

문제 설명

대문자와 소문자가 섞여있는 문자열 s가 주어집니다. s에 'p'의 개수와 'y'의 개수를 비교해 같으면 True, 다르면 False를 return 하는 solution를 완성하세요. 'p', 'y' 모두 하나도 없는 경우는 항상 True를 리턴합니다. 단, 개수를 비교할 때 대문자와 소문자는 구별하지 않습니다.

예를 들어 s가 pPoooyY면 true를 return 하고Pyy라면 false를 return 합니다.

 

제한사항

  • 문자열 s의 길이 : 50 이하의 자연수
  • 문자열 s는 알파벳으로만 이루어져 있습니다.

생각

먼저 대문자를 소문자로 바꿔주는 작업이 필요하다. 가장 원시적인 방법은 char로 만들어서 32를 넣어주면 대문자가 된다. 이렇게 되면 for문을 써야 하고 각각 인덱스의 요소마다 변환시켜줘야 해서 한 번에 변화시켜주는 toLowerCase()를 사용했다! toLowerCase()를 사용하면 문자열 전체를 소문자로 바꿔주고 반대로 toUpperCase()를 사용하면 대문자로 바꿔준다!! 이런 걸 기억해두면 두고두고 잘 쓰이니 기억하자.

 

후에 소문자 p와 y의 개수를 세면 되니 for문을 돌면서 개수를 세주고 같다면 true 아니면 flase를 return 해주면 된다.

 

코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
class Solution {
    boolean solution(String s) {
        boolean answer = true;
 
        s = s.toLowerCase();
        
        String[] s1 = new String[s.length()];
        int[] p_y = {0,0};
        s1 = s.split("");
        
        for(int i=0; i<s1.length; i++) {
            if(s1[i].equals("p")) {
                p_y[0]++;
            } else if(s1[i].equals("y")) {
                p_y[1]++;
            }
        }
        
        if(p_y[0]==p_y[1]) {
            answer = true;
        } else {
            answer = false;
        }
 
        return answer;
    }
}
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4f; text-decoration:none">Colored by Color Scripter
 

추가

고수분들의 풀이를 보면 다시 Arrays.stream().filter()~~ 가 등장했다..! 이 방식은 아직도 적응되지 않아 힘들다. ㅠㅠ

그리고 처음부터 소문자로 바꾸는 것이 아닌 'P'와 'p'를 같게 보고 개수를 추가해주는 방법도 괜찮은 것 같다.

반응형