17088. ๋ฑ์ฐจ์์ด ๋ฐํ
by rlaehddnd0422https://www.acmicpc.net/problem/17088
๋ฑ์ฐจ์์ด์ ์ฑ์ง์ ์ด์ฉํ ๋ธ๋ฃจํธํฌ์ค
- ๋ฑ์ฐจ์์ด์ n๋ฒ์งธ ํญ์ A(n) = A(n-1) + D
- ๋ฑ์ฐจ์์ด์ ๊ณต์ฐจ D๋ ๋๋ฒ์งธํญ์์ ์ฒซ์งธํญ์ ๋นผ์ ๊ตฌํ ์ ์๋ค.
- ๊ฐ๋ฅํ ์ฒซ์งธํญ์ A[0]-1, A[0], A[0]+1 ์ธ ๊ฐ์ง๊ฐ ์๊ณ , ๊ฐ๋ฅํ ๋์งธํญ์ A[1]-1,A[1],A[1]+1 ์ธ ๊ฐ์ง, ์ด 3*3 = 9๊ฐ์ง๊ฐ ์๋ค.
- ์ด๋ ๊ฒ 9๊ฐ์ง์ ๊ณต์ฐจ๊ฐ์ ๊ณ์ฐํด ์ค ๋ค์, ์ธ๋ฒ์งธ ํญ๋ถํฐ ์์ ๊ณ์ฐํ ๊ณต์ฐจ๊ฐ์ ํตํด ํด๋น ํญ์ ๊ฐ๊ณผ ์ฐจ์ด๊ฐ +1, -1์ด ์์ผ๋ฉด ์ฐ์ฐ ํ์๋ฅผ ๋ํด์ค๋ค.
์์ค์ฝ๋
#include <iostream>
#include <vector>
#include <algorithm>
#include <utility>
#define FASTio ios_base :: sync_with_stdio(false), cin.tie(NULL), cout.tie(NULL)
#define endl '\n'
using namespace std;
int n;
int ans = -1;
/*
์ฒซ๋ฒ์งธํญ, ๋๋ฒ์งธํญ ๊ฒฐ์
-> ๊ณต์ฐจ๊ณ์ฐ
-> 3๋ฒ์งธํญ๋ถํฐ ํด๋น ํญ๊ฐ์ด ๊ณต์ฐจ+0 ์ ๊ฐ์ผ๋ฉด continue;
-> ๊ณต์ฐจ-1 or ๊ณต์ฐจ+1๊ณผ ๊ฐ์ผ๋ฉด ans++; an += diff;
-> ์ต์ cnt = ans
vector<int> a(100000);
int main()
{
FASTio;
cin >> n;
for(int i=0;i<n;i++)
{
cin >> a[i];
}
if(n==1)
{
cout << 0 << endl;
return 0;
}
for(int d1=-1;d1<=1;d1++)
{
for(int d2=-1;d2<=1;d2++)
{
int cnt = 0;
if(d1!=0) cnt++;
if(d2!=0) cnt++;
int a0 = a[0] + d1;
int a1 = a[1] + d2;
int diff = a1-a0;
int an = a1 + diff;
bool isit = true;
// 3๋ฒ์งธ ํญ๋ถํฐ ๊ฒ์ฌ
for(int i=2;i<n;i++)
{
if(a[i]==an)
{
an +=diff;
continue;
}
if(a[i]-1==an) cnt++;
else if(a[i]+1==an) cnt++;
else
{
isit = false;
break;
}
an += diff;
}
if(isit==true)
{
if(ans==-1 || ans>cnt)
ans = cnt;
}
}
}
cout << ans << endl;
return 0;
}
'๐ CS > Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
5014. ์คํํธ๋งํฌ (0) | 2023.01.28 |
---|---|
3187. ์์น๊ธฐ ๊ฟ (0) | 2023.01.27 |
17089. ์ธ ์น๊ตฌ (0) | 2023.01.24 |
15686. ์นํจ ๋ฐฐ๋ฌ (0) | 2023.01.23 |
16968 / ์ฐจ๋ ๋ฒํธํ 1 (0) | 2023.01.20 |
๋ธ๋ก๊ทธ์ ์ ๋ณด
Study Repository
rlaehddnd0422