hoon's bLog

Java 프로그래머스 문자열 내 p와 y의 개수 자바 본문

코딩테스트/프로그래머스

Java 프로그래머스 문자열 내 p와 y의 개수 자바

개발한기발자 2022. 9. 14. 13:49
반응형

문제 출처 : https://school.programmers.co.kr/learn/courses/30/lessons/12916

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


[문제 설명]

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

[나의 풀이]

class Solution {
    boolean solution(String s) {
        boolean answer = true;
        char[] ch = s.toLowerCase().toCharArray();
        int pCnt = 0, yCnt = 0;
        for (int i = 0; i < ch.length; i++) {
            if (String.valueOf(ch[i]).equals("p"))
                pCnt++;
            else if (String.valueOf(ch[i]).equals("y"))
                yCnt++;
            else continue;
        }
        if(pCnt == yCnt)
            answer = true;
        else
            answer = false;

        return answer;
    }
}

풀다 보니 코딩 테스트 문자열 관련 문제에서 하나의 String을 toCharArray()를 이용해서,

문자 배열로 이용하여 연산하는 문제들이 많으니, 잊지 말고 기억하자!

[다른 사람들의 풀이-1]

class Solution {
    boolean solution(String s) {
        s = s.toUpperCase();
        //입력값 s를 받아 대문자로 변환하여
        //chars()로 char 형변환 후, P와 Y개수가 여부에 따라 true/false return
        return s.chars().filter( e -> 'P'== e).count() == s.chars().filter( e -> 'Y'== e).count();
    }
}

[다른 사람들의 풀이-2]

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

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

        if (count == 0)
            return true;
        else
            return false;
    }
}

[정리]

개인 피셜 난이도 : ★

오랜만에 글을 올렸다.

코딩은 사실 미리 했지만, 다시 리뷰하면서 돌아보는 것 자체가,

생각보다 귀찮은 일인지 몰랐다...(추석 연휴도 한몫한 듯)

3년 차임에도, 아직도 개발자 마인드가 덜 박혀있는 것 같다...

이직도 해야 하는 이 시점에서 점점 핑곗거리만 많아지는 듯하다.

천천히 쉬운 문제부터 다잡고 초심 찾자!

 

끝.

728x90
반응형