새소식

알고리즘 문제풀이/프로그래머스

[문자열] 프로그래머스 문자열 내 p와 y의 개수 c++, java 풀이

  • -

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

문제 정리

  1. 대문자와 소문자가 섞여있는 문자열 s가 주어진다.
  2. s에 'p'의 개수와 'y'의 개수를 비교해 같으면 true / 다르면 false를 return한다.
  3. p와 y모두 하나도 없는 경우에는 true를 리턴한다.
  4. 대문자와 소문자는 구분하지 않는다.
  5. s의 길이는 50이하이다.

문제 풀이

문자열의 길이가 최대 50이므로 모두 탐색하면 된다.

  1. 대소문자를 구분하지 않기 위해 주어진 문자열을 소문자로 바꾼다
  2. 문자열을 캐릭터 배열로 변환한다. (하지 않고 substring으로 해도 됨)
  3. 그리고 문자를 하나씩 검사하며 p라면 p의 개수 count, y라면 y의 개수 count
  4. 마지막에 p와 y의 개수를 비교하여 같다면 true, 다르면 false를 반환한다.

문자열 내 p와 y의 개수 자바 코드

import java.util.*;
class Solution {
    public static void main(String[] args){
        String s = "pPoooyY";

        System.out.println(solution(s));
    }

    public static boolean solution(String s) {
        int p = 0;
        int y = 0;
        char[] chs = s.toLowerCase().toCharArray();    // 소문자로 바꾼후 문자배열로 변환
        for(int i=0; i<chs.length; i++){
            if(chs[i] == 'p')    // p의 개수
                p++;
            else if(chs[i] == 'y')    // y의 개수
                y++;
        }

        if(p == y)
            return true;
        else
            return false;
    }
}

문자열 내 p와 y의 개수 c++ 풀이

#include <string>

using namespace std;

bool solution(string s) {
    int pNum = 0, yNum = 0;

    for (int i = 0; i < s.size(); i++) {
        s[i] = tolower(s[i]);
        if (s[i] == 'y') yNum++;
        if (s[i] == 'p') pNum++;
    }

    if (pNum == 0 && yNum == 0) return true;

    if (pNum == yNum) return true;
    else return false;
}
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.