N번까지 가는 횟수의 초기값은 2이고(물론 N이 1인 경우는 초기값이 1이어야 했다), Min값과 Max값을 구하면 그 안에 포함되는 경우에 한해 횟수가 동일하다는 것이다.
즉, Min, Max값만 구할 수 있으면 문제를 풀 수 있었다.
Min값은 2를 기준으로 시작해서 8, 20, 38,... Max값은 7, 19, 37, 61,...
Min값은 6, 12, 18,... 6의 배수로 증가하고 Max값은 12, 18, 24,... 마찬가지로 6의 배수로 증가했다. 다만 Max값은 12(6x2)부터 증가되는 차이가 있었다.
소스
package com.baek.algo;
import java.util.Scanner;
public class Q2292 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int cnt = 2;
if(n == 1) {
cnt = 1;
} else {
int i = 0;
int min = 2;
int max = 1;
while(true) {
min = min + (6 * i);
max = max + (6 * (i + 1));
if(n >= min && n <= max) {
cnt = cnt + i;
break;
}
i = i + 1;
}
}
System.out.println(cnt);
sc.close();
}
}