티스토리 뷰
문제 링크 : https://www.acmicpc.net/problem/1614
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll f, n;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
cin >> f >> n;
ll sum = 0;
if(f==1) sum = n*8;
else if(f==2)
{
if(n%2==0) sum = n*4+1;
else sum = n*4+3;
}
else if(f==3) sum = n*4+2;
else if(f==4)
{
if(n%2==0) sum = n*4+3;
else sum = n*4+1;
}
else sum = n*8+4;
cout << sum;
return 0;
}
각 손가락에 대해 규칙을 찾아서 해결하는 문제이다.
엄지 손가락의 경우 1부터 시작하여 다시 다친 손가락이 1까지 오기 위한 사이클이 총 8개이다.
따라서 입력받은 n에 8을 곱하면 답이 된다.
새끼손가락의 경우도 비슷한데, 기존 8사이클에 더하여 처음 이동 가능한 1, 2, 3, 4 4개를 더해준다.
그리고 중지의 경우는 다친 손가락에 다시 도달하는 경우를 체크하면 한 사이클이 4이다.
또한 앞서 3으로 가기전 1, 2에 대한 카운팅으로 n*4+2가 된다.
검지와 약지의 경우도 마찬가지로 사이클이 4이지만, 1->5 방향인지 5->1 방향인지에 따라 더해지는 갯수가 달라진다.
검지와 1->5 방향인 경우, 기본 1 2 3 4 사이클에 추가 가능한 5, 4, 3 으로 인해 3이 더해진다.
검지와 5->1 방향인 경우, 5 4 3 2 사이클에 추가 가능한 1으로 인해 1이 더해진다.
따라서 방향을 짝수 홀수 인지 계산하여 규칙을 적용시켜주면 된다.
'백준 > 실버' 카테고리의 다른 글
[백준 14929번] 귀찮아 (SIB) (C++) (0) | 2025.08.17 |
---|---|
[백준 3060] 욕심쟁이 돼지 (C++) (0) | 2025.08.13 |
[백준 2057번] 팩토리얼 분해 (C++) (0) | 2025.07.10 |
[백준 17269번] 이름궁합 테스트 (C++) (0) | 2025.07.09 |
[백준 5671번] 호텔 방 번호 (C++) (0) | 2025.07.08 |