favicon Jay Lee DevLog

📚 목차
#include <string>
#include <vector>

using namespace std;

int GetValue(vector<int> vCommon, bool& bMul)
{
    int nResult[2]{0};
    int nValue = 0;
    bMul = false;
    for(int i=1; i<3; i++)
        nResult[i-1] = vCommon[i] - vCommon[i-1];
    
    nValue = nResult[0];
    for (int i=1; i<2; i++)
    {
        if (nValue == nResult[i]) // 등차
            return nValue;
        else // 등비
        {
            bMul = true;
            int j=2;
            while(true)
            {
                if (nValue * j == nResult[i])    
                    return j;   
                
                j++;
            }
        }
    }
}

int solution(vector<int> common) {
    int answer = 0;
    bool bMulti;
    int nValue = GetValue(common, bMulti); 
    int nLastValue = common[common.size() - 1];
    if (bMulti)
        answer = nLastValue * nValue;         
    else
        answer = nLastValue + nValue;   
    
    return answer;
}

나는 일단 그냥 문제를 닥치는대로

생각나는대로 풀어봤는데,

풀고 나서 다른 사람의 풀이 눌러서 확인해보니

머리 좋은 사람이 많은 것 같았다.

 

일단 나는 메인쪽 소스는 짧은게 좋다고 생각하기 때문에

해결하는 부분은 대부분 따로 나눠두는 편이라,

이번에도 그렇게 했다.

 

풀이는 뭐 없다.

진짜 그냥 문제대로, vector에 내용을 꺼내서

각 인덱스간의 차이를 구하고

이를 토대로 등차인지 등비인지 구하고,

등차면 몇씩 증가되는지,

등비면 몇씩 증가되는지 구해서

최종 값에 더해줬다.

 

풀긴했는데, 이런식으로 풀면

항상 범위에 관한 문제가 발생하는 것 같다.

이번에도 while 돌려서 풀었는데..

이 부분은 천천히 고쳐나가야 할 것 같다.

 

 

+ Recent posts

/ /

Contact

📧 dlwjdwls60@naver.com


블로그에 내용이 있으면 해당 글을 보여주며, 없으면 내용이 복사된 채로 ChatGPT로 연결됩니다.