일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 해시를사용한집합과맵
- 백준알고리즘
- MySQL
- 문자열
- 다이나믹프로그래밍
- Image Classification
- 논문구현
- 논문리뷰
- 이분탐색
- 프로그래머스코딩테스트
- C언어
- SQL
- 정렬
- 수학
- 프로그래머스sql
- 자료구조
- 소수판정
- 정수론
- 이진탐색
- C
- 큐
- 백준
- 브루트포스알고리즘
- 프로그래머스
- 그리디
- 그리디알고리즘
- 구현
- 사칙연산
- 프로그래머스연습문제
- C++
- Today
- Total
초보 개발자의 이야기, 릿허브
[C++] 프로그래머스 수박수박수박수박수박수? 본문
1. 문제이해
코딩테스트 연습 - 수박수박수박수박수박수? | 프로그래머스 (programmers.co.kr)
길이 n을 입력받아, n의 길이만큼 "수박수박수..."
와 같은 패턴을 유지하는 문자열을 리턴하는 알고리즘을 만드는 것이 목표이다.
2. 문제풀이
"수박수박수..." 와 같은 패턴을 n의 길이만큼 리턴하는 문제이다.
예를 들어, n이 3인 경우, "수박수",
n이 4인 경우, "수박수박",
n이 5인 경우, "수박수박수"
를 리턴하는 형식이다.
즉, 숫자 n에 따라 "수박수박수..." 가 번갈아가며 나타나는 문자열을 리턴하면 된다.
그렇다면, 위와 같이 일정한 패턴으로 문자열을 리턴하려면 어떻게 해야할까?
우선 n이 홀수인 경우와 짝수인 경우로 나누어보자.
n이 홀수인 경우, "수박수, 수박수박수, 수박수박수박수..." 와 같이
"수박"이 일정횟수 반복된 후, "수"가 한번 더 붙게 된다.
반면, n이 짝수인 경우, "수박, 수박수박, 수박수박수박..." 과 같이
"수박"이 일정횟수 반복되며, 깔끔하게 떨어진다.
즉, n이 홀수인 경우에는, (n / 2)번 만큼 "수박"이 반복되고, 뒤에 "수"가 한번 더 붙게 되고,
n이 짝수인 경우에는, (n / 2)번 만큼 "수박"이 나타나는 문자열이 나오게 된다.
위와 같은 원리를 이용해 코드에 그대로 적용시켜주었다.
주어진 틀은 다음과 같았다.
3. 소스코드
#include <string>
#include <vector>
using namespace std;
string solution(int n) {
string answer = "";
int count = 0;
if(n%2 == 1){ // n이 홀수이면
count = n / 2;
for(int i=0; i<count; i++){ // n/2번 만큼 "수박"이 나타나고
answer += "수박";
}
answer += "수"; // 뒤에 "수"가 한번 더 붙게 된다.
}
else { // n이 짝수이면
count = n / 2;
for(int i=0; i<count; i++){ // n/2번 만큼 "수박"이 나타난다.
answer += "수박";
}
}
return answer;
}
2. 문제풀이에서 나타낸 그대로, if문을 이용해 n이 홀수, 짝수인 경우로 나누었다.
홀수인 경우에는 n/2번만큼 "수박"을 반복 후, "수"를 한번 더 더해주었으며,
짝수인 경우에는 n/2번 만큼 "수박"을 반복해주어 리턴했다.
프로그래머스는 레벨 1에도 주어진 틀이 벡터로 주어진 경우가 참 많은것같다..
벡터쓰는 연습을 조금씩 해나가야 하는데...😅
'코딩테스트 > 📘 프로그래머스 (programmers)' 카테고리의 다른 글
[C++] 프로그래머스 핸드폰 번호 가리기 (0) | 2021.09.11 |
---|---|
[C++] 프로그래머스 가운데 글자 가져오기 (0) | 2021.08.23 |
[C++] 프로그래머스 문자열을 정수로 바꾸기 (0) | 2021.08.17 |
[C++] 프로그래머스 2016년 (0) | 2021.08.16 |
[C++] 프로그래머스 하샤드 수 (0) | 2021.08.14 |