코딩 테스트

[프로그래머스] (Lv.1) 문자열 내 p와 y의 개수

ImKDM 2022. 9. 1. 12:11
728x90

문제


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

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

 

 

-  출력 예시  -

정답 코드


<  내 정답 코드  >

class Solution {
    boolean solution(String s) {
        int cntP = 0;
        int cntY = 0;
        
        for (int i = 0; i < s.length(); i++) {
            char ch = Character.toLowerCase(s.charAt(i));
            if (ch == 'p') {
                cntP++;
            } else if (ch == 'y') {
                cntY++;
            }
        }
        
        return cntP == cntY;
    }
}

 

<  타인 답변 코드  >

class Solution {
    boolean solution(String s) {
        int count = 0;
        s = s.toLowerCase();

        for (int i = 0; i < s.length(); i++) {
            if (s.charAt(i) == 'p') {
                count++;
            } else if (s.charAt(i) == 'y') {
                count--;
            }
        }

        return count == 0;
    }
}

이것을 주의하자!


-  String 문자열을 toCharArray( ) 메서드를 통해 하나씩 꺼낸 다음 바로 일괄적으로 소문자로 바꿨다. 대소문자를 구분하지 않기 때문에 소문자든, 대문자든 통일할 필요가 있기 때문이다. 그리고 ' p ' 와 ' y ' 가 등장할 때마다 카운트를 하나씩 올렸다. 만약 둘 다 나타나지 않을 땐 초기값 0 으로 true 가 나온다.

 

-  char 형의 대문자, 소문자 변경은 반드시 Collections 클래스명을 붙여야 한다. 그리고 매개변수에 변경하고자 하는 알파벳을 넣는다. String 문자열의 대소문자 변경 메서드와 약간 차이가 있다.

 

-  타인 답변 코드를 보면 count 변수 하나로 처리했다. 일반적으론 p 와 y 변수를 하나씩 만들텐데,  + , - 를 이용해서 count 가 0 이면 동일하게 등장했다고 볼 수 있도록 했다. 이런 발상의 전환은 좋은 시도이다.