초보 개발자의 이야기, 릿허브

[C++] 프로그래머스 수박수박수박수박수박수? 본문

코딩테스트/📘 프로그래머스 (programmers)

[C++] 프로그래머스 수박수박수박수박수박수?

릿99 2021. 8. 21. 20:44
728x90
반응형
1. 문제이해

코딩테스트 연습 - 수박수박수박수박수박수? | 프로그래머스 (programmers.co.kr)

 

코딩테스트 연습 - 수박수박수박수박수박수?

길이가 n이고, "수박수박수박수...."와 같은 패턴을 유지하는 문자열을 리턴하는 함수, solution을 완성하세요. 예를들어 n이 4이면 "수박수박"을 리턴하고 3이라면 "수박수"를 리턴하면 됩니다. 제한

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에도 주어진 틀이 벡터로 주어진 경우가 참 많은것같다..

 

벡터쓰는 연습을 조금씩 해나가야 하는데...😅

728x90
반응형