본문 바로가기
코딩테스트 준비/프로그래머스

[프로그래머스][C++] 그림 확대

by 스테디코디스트 2023. 10. 26.
반응형

<문제 소개>


<소스 코드>

#include <string>
#include <vector>

using namespace std;

vector<string> solution(vector<string> picture, int k) 
{
    vector<string> answer;
    
    for(int i = 0; i < picture.size(); i++)
    {
        string expandStr;
        
        for(int j = 0; j < picture[i].size(); j++)
        {
            for(int n = 0; n < k; n++)
            {
                expandStr += picture[i][j];         
            }
        }
        
        for(int n = 0; n < k; n++)
        {
            answer.push_back(expandStr);            
        }
    }
    
    return answer;
}

<풀이과정>

1. picture의 크기만큼 반복하며 매 반복시 추가될 확장한 문자열 expandStr을 선언한다.

2. 이후 각 문자열의 문자들을 반복하며, 내부에서 k번만큼 반복해서 해당 문자열을 expandStr에 넣어 k배 만큼 늘린 문자열을 만들어준다.

3. 문자열을 모두 만든 이후, answer에 해당 문자열을 넣어준다.

4. 위 반복이 끝난 뒤 answer을 리턴해준다.


<코멘트>

for문 3번인게 조금 지저분하지만 어렵진 않게 풀었다.

다른 분들 풀이를 봤는데, 내부의 3번째 반복문을 없애고 k배만큼 나머지 반복문을 늘려서 문자열을 만들 때 i,j대신 i/k, j/k을 이용해 한번에 넣는 방식으로 신박하게 푼 풀이가 있었다.


<제출결과>