[ C++ ] 프로그래머스 Level1: 문자열 내 p와 y의 개수
✏️ PS/Programmers

[ C++ ] 프로그래머스 Level1: 문자열 내 p와 y의 개수

반응형

 

안녕하세요? 수구리입니다.

이번 문제는 문자열에 관련된 내용입니다.

문제는 아래와 같습니다.

 

문제 설명

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

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

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

 

아래에는 문제 링크를 남겨두겠습니다.

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

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

 

코딩테스트 연습 - 문자열 내 p와 y의 개수

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

programmers.co.kr

 

 

[ 나의 풀이 ]

#include <string>
#include <iostream>
#include <algorithm>
using namespace std;

bool solution(string s)
{
    int count = 0;
    
    for (int i = 0; i < s.size(); i++){
        s[i] = tolower(s[i]);
        if (s[i] == 'p') count++;
        else if (s[i] == 'y') count--;
    }
    
    if (count == 0) return 1;
    else return 0;
    
}

 

 

 

[ 설명 ]

1. 우선 입력 param으로 들어온 string의 size만큼 순회하는 반복문을 만들어줍니다.

2. tolower 함수를 통해서 요소 하나씩 소문자로 변환한 뒤 다시 string s에 저장해줍니다.

3. 그다음 만약 해당 문자 s [i]가 'p' 라면 count 값을 1 증가시킵니다.

4. 만약 문자가 'y' 라면 count 값을 1 감소시킵니다.

5. for문을 빠져나온 후 count가 0이라면 즉, p와 y의 개수가 동일하다면 TRUE를 return 하고,

6. 0이 아니라면 즉, p와 y의 개수가 다르므로 FALSE를 return 하면 됩니다.

 

 

 

반응형