📚 목차
#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 돌려서 풀었는데..
이 부분은 천천히 고쳐나가야 할 것 같다.
'C, C++ > 코딩테스트 입문 난이도' 카테고리의 다른 글
프로그래머스 코딩테스트 입문 난이도 - 잘라서 배열로 저장하기 (0) | 2023.06.25 |
---|---|
프로그래머스 코딩테스트 입문 난이도 - 문자열 밀기 (0) | 2023.06.25 |
프로그래머스 코딩테스트 입문 난이도 - 종이 자르기 (0) | 2023.06.25 |
프로그래머스 코딩테스트 입문 난이도 - 연속된 수의 합 (0) | 2023.06.25 |
프로그래머스 코딩테스트 입문 난이도 - 옹알이(1) (0) | 2023.06.25 |