[백준 17362] 수학은 체육과목 입니다 2 (C#, C++) - soo:bak
작성일 :
문제 링크
설명
손가락을 엄지부터 새끼손가락까지 갔다가 다시 돌아오는 패턴으로 세어나갈 때, n번째에 해당하는 손가락 번호를 구하는 문제입니다.
접근법
1, 2, 3, 4, 5, 4, 3, 2가 반복되므로 주기는 8입니다. n을 8로 나눈 나머지에 따라 손가락 번호가 결정됩니다. 나머지가 0이면 8번째 위치인 2번 손가락이고, 나머지가 1이면 1번 손가락입니다. 이 대응 관계를 배열에 저장해두고 바로 출력하면 됩니다.
Code
C#
1
2
3
4
5
6
7
8
9
10
11
using System;
class Program {
static void Main() {
var n = long.Parse(Console.ReadLine()!);
var r = (int)(n % 8);
var map = new int[] {0, 1, 2, 3, 4, 5, 4, 3, 2};
if (r == 0) r = 8;
Console.WriteLine(map[r]);
}
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
ll n; cin >> n;
int r = n % 8;
int m[9] = {0, 1, 2, 3, 4, 5, 4, 3, 2};
if (r == 0) r = 8;
cout << m[r] << "\n";
return 0;
}