본문 바로가기
프로그래머스 문제풀어보기

[Lv.0] 문자열 내 p와 y의 개수

by dantriss 2022. 10. 12.

https://school.programmers.co.kr/learn/courses/30/lessons/12916

 

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

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

제한사항

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

 

class Solution {
    boolean solution(String s) {
        boolean answer = true;
        int pCount = 0;
        int yCount = 0;
        String[] arry = s.toLowerCase().split("");
        for (int i = 0; i<arry.length;  i++) {
            if("p".equals(arry[i])){
                pCount++;
            }else if("y".equals(arry[i])){
                yCount++;
            }
        }if(pCount!=yCount){
            return false;
        }
        

        return answer;
    }
}

 

문자열 s에 있는 y의 갯수를 세기위한 int타입의 변수명 yCount, p의 갯수를 세기위한 int타입의 변수명 pCount 선언

문제에서 '개수를 비교할 때 대문자와 소문자는 구별하지 않습니다' 라고 했기 때문에 toLowerCase()를 이용해 문자열 s에 있는 문자들을 전부 소문자로 변환해서 갯수를 셀수 있게 한다.

*toUpperCase()를 이용하면 전부 대문자로 변환가능

split("")을 이용해 빈공간을 기준으로 잘라 배열로 저장할 수 있다. ( String[] arry = s.toLowerCase().split(""))

만약 문자p가 배열arry[i]번째에 있다면 pCount의 갯수를 증가시키고(if("p".equals(arry[i])){ pCount++; })

같은 방법으로 문자y가 배열arry[i]번째에 있다면 yCount의 갯수를 증가시킨다(else if("y".equals(arry[i])){ yCount++; })

그리고 해당방법을 String타입의 배열 arry에서 0번째 자리에서 i번째자리까지 하나씩 비교를 해야하기 때문에 반복문을 이용한다. i가 0번째 자리에서 배열arry의 길이만큼 그 후에 후위연산자에 의해 1씩 증가시킨다 (for (int i = 0; i<arry.length;  i++))

문제에서 p와y의 갯수가 같지 않다면 fasle를 리턴하라고 했기 때문에 반복문이 끝난 pCount와 yCount의 갯수가 같지 않다면 (if(pCount!=yCount)) false를 반환한다 (return false;)

그외 p와y의 갯수가 같다면 true를 반환해야하는데 boolean타입의 변수 answer를 true로 설정했기때문에

answer를 반환해도 되고(return answer), 변수answer를 삭제하고  true를 반환해도 된다

댓글