일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 그리디
- 소수판정
- 문자열
- 논문구현
- 백준
- 사칙연산
- 그리디알고리즘
- 해시를사용한집합과맵
- 큐
- C++
- C
- 프로그래머스
- 자료구조
- Image Classification
- 이진탐색
- 정렬
- 이분탐색
- 프로그래머스연습문제
- 다이나믹프로그래밍
- 백준알고리즘
- 논문리뷰
- SQL
- MySQL
- 수학
- 프로그래머스코딩테스트
- 브루트포스알고리즘
- C언어
- 정수론
- 프로그래머스sql
- 구현
- Today
- Total
초보 개발자의 이야기, 릿허브
[C++] 프로그래머스 문자열 내 p와 y의 개수 본문
1. 문제이해
코딩테스트 연습 - 문자열 내 p와 y의 개수 | 프로그래머스 (programmers.co.kr)
주어진 문자열 s에서 p와 y의 개수가 같으면 true, 다르면 false를 반환하는 알고리즘을 구현하는 것이 목표이다.
2. 문제풀이
문자열 s 내의 p와 y의 개수가 같은지 다른지를 출력하는 프로그램이다.
한가지 주의해야 할 점은 true, false를 출력하는 것이 아닌, 반환하는 것이라는 점에 있다.
프로그래머스는 처음 시작할 때 기본적인 틀을 제공하는데, 여기서는 다음 그림과 같이
bool solution(string s) {} 라는 틀을 제공해주어 그대로 사용했다.
문자열 s내의 p와 y의 개수가 같은지를 확인하기 위해,
문자열의 처음부터 마지막까지 p가 나오면 count, y가 나오면 따로 count 해주는 방식을 채택했다.
3. 소스코드
#include <cstring>
#include <iostream>
using namespace std;
bool solution(string s) {
bool check;
int countp = 0;
int county = 0;
for (int i = 0; i < s.size(); i++) {
if (s[i] == 'P' || s[i] == 'p') {
countp++;
}
if (s[i] == 'Y' || s[i] == 'y') {
county++;
}
}
if (countp == county || (countp == 0 && county == 0)) {
check = true;
}
else {
check = false;
}
return check;
}
위에서 주어진 틀에 맞추어 코드를 작성했다.
(다 삭제하고 int main()으로 하고 반환이 아닌 출력 방식을 선택했더니 에러가 났다.
bool solution의 매개변수인 string s를 삭제하고 따로 입력받았더니, 그것 또한 에러가 났다.)
for문과 if문을 통해, 입력받은 문자열 내에 p와 y가 존재하는지 확인하고, (대소문자는 구분하지 않았다.)
존재하면 각각 countp, county를 증감시켜주었다.
이후 마지막 if-else문을 통해 countp와 county의 개수가 같으면,
즉, 문자열 내의 p와 y의 개수가 같으면 true, 아니면 false를 반환해주었다. (둘다 0일때도 true를 반환해주었다.)
프로그래머스는 처음 시도해봤는데, 백준보다 까다로운것같은 느낌이 들었다..
무조건 정해진 틀을 써야한다니...😶
앞으로 더 풀어봐야 알겠지만, 일단 오늘은 문제가 많이 어렵지 않아 금방 코드를 고칠 수 있었던 것 같다.
'코딩테스트 > 📘 프로그래머스 (programmers)' 카테고리의 다른 글
[C++] 프로그래머스 문자열을 정수로 바꾸기 (0) | 2021.08.17 |
---|---|
[C++] 프로그래머스 2016년 (0) | 2021.08.16 |
[C++] 프로그래머스 하샤드 수 (0) | 2021.08.14 |
[C++] 프로그래머스 자릿수 더하기 (0) | 2021.08.13 |
[C] 프로그래머스 두 정수 사이의 합 (0) | 2021.08.12 |