문제
문제파악
- 위 구역을 보면 n번째 범위에 있는 구역까지 n번 이동함을 볼 수 있다.
- 빨간선이 구역의 시작과 끝을 비교할수 있음을 알수있다.
- 1, 〔1 < n <= 7〕, 〔7 < n <= 19〕, 〔19 < n <= 37〕 ... 〔앞구역 시작 x 6 x (이동거리-1) < n <= 앞구역 끝 x 6 x 이동거리〕
문제풀이
: 위 조건에 맞춰서 구현을 해보겠다.
- 1 입력시 바로 출력
- i = 1, j = 7 → n>i && n<=j :: (탈출조건)
- i += 6 * (cnt - 1), j += 6 * (cnt) :: (구역설정)
소스코드
#include<iostream>
using namespace std;
int main() {
cin.tie(NULL);
cout.tie(NULL);
ios_base::sync_with_stdio(false);
unsigned int n;
cin >> n;
int cnt = 1;
if (n == 1) {
cout << cnt ;
return 0;
}
for (int i = 1, j = 7; ; i += 6 * (cnt - 1), j += 6 * (cnt)) {
cnt++;
if (n > i && n <= j) {
break;
}
}
cout << cnt << endl;
return 0;
}
'문제풀이' 카테고리의 다른 글
BaekJoon(1085)::직사각형에서 탈출 (0) | 2021.07.19 |
---|---|
BaekJoon(2869)::달팽이는 올라가고 싶다 (0) | 2021.07.19 |
BaekJoon(2839)::설탕 배달 (0) | 2021.07.19 |
BaekJoon(2164)::카드2 (0) | 2021.07.19 |
BaekJoon(18258)::큐2 (0) | 2021.07.19 |