꾸준하고 즐겁게

Programmers Coding Test 연습 문제 - 문자열 내 p와 y의 개수 (Python -> C++) 본문

Coding Test/Programmers

Programmers Coding Test 연습 문제 - 문자열 내 p와 y의 개수 (Python -> C++)

wj9183 2021. 6. 17. 21:29
728x90

https://programmers.co.kr/learn/courses/30/lessons/12916?language=cpp 

 

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

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

programmers.co.kr

 

 

 

대문자와 소문자가 섞여있는 문자열 s가 주어집니다. s에 'p'의 개수와 'y'의 개수를 비교해 같으면 True, 다르면 False를 return 하는 solution를 완성하세요. 'p', 'y' 모두 하나도 없는 경우는 항상 True를 리턴합니다. 단, 개수를 비교할 때 대문자와 소문자는 구별하지 않습니다.
예를 들어 s가 "pPoooyY"면 true를 return하고 "Pyy"라면 false를 return합니다.
제한사항
  • 문자열 s의 길이 : 50 이하의 자연수
  • 문자열 s는 알파벳으로만 이루어져 있습니다.

def solution(s):
    p = s.lower().count("p")
    y = s.lower().count("y")
    if p == y:
        answer = True
    else :
        answer = False
    
    return answer

파이썬 코드다.

문자열을 전부 소문자로 만들고 p와 y의 갯수를 세서, 그 갯수가 서로 같으면 True, 아니면 False를 리턴한다.

 

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

bool solution(string s)
{
    int i;
    for(i = 0; i < s.size(); i++)
    {    
        s[i] = tolower(s[i]);
    }
    int p = count(s.begin(), s.end(), 'p');
    int y = count(s.begin(), s.end(), 'y');
    bool answer;
        
    
    
    if(p==y)
    {
        answer = true;
    }
    else
    {
        answer = false;
    }

    return answer;
}

가장 애먹은 건 역시 C++ 함수를 잘 모른다는 점이다.

이 글 쓰면서 C++ 이라는 단어 타이핑하기도 더럽게 번거롭다.

 

반복문으로 주어진 문자열을 한글자씩 전부 소문자로 바꿨다.

그리고 count 함수로 각 알파벳의 갯수를 찾았다.

애초에 파이썬 코드를 C++로 옮겨보는 공부를 하고 있는 거기 때문에 더 설명할 것도 없다.

728x90