반응형
풀이
시작 범위와 끝 범위를 가지고 아래와 같이 표현할 수 있다는 것을 확인하였다.
위의 표를 가지고 아래와 같이 공식을 유추할 수 있다.
서로의 관계 3가지로 정답을 구할 수 있다.
int start = 0;
int gap = 1;
int answer = 1;
while (true)
{
if (n >= (6 * start + 2 ) && n <= (6 * (start + gap) + 1))
{
Console.WriteLine(answer + 1);
return;
}
start = start + gap;
gap++;
answer++;
}
01 시작 범위와 끝 범위의 관계(gap 변수)
같은 번호에서도 시작 범위와 끝범위의 관계가 다음 번호로 가면 등차가 1씩 증가한다. 그러므로 반복문이 돌때마다 1씩 값을 증가 시켜준다.
02 현재 범위의 마지막 숫자 구하기
현재 범위의 마지막 숫자 = (현재 시작 숫자 + 현재 관계 차이) 이다.
이러한 관계들을 가지고 유추한 공식은 아래와 같다.
03 다음 범위의 시작 숫자 구하기
다음 범위의 시작숫자 = (앞선 관계 차이 + 현재 시작 숫자) 이다.
코드 완성본
using System;
using System.Collections.Generic;
namespace baek2
{
class Program
{
static void Main(string[] args)
{
double n = double.Parse(Console.ReadLine());
if (n == 1) Console.WriteLine(1);
else
{
int start = 0;
int gap = 1;
int answer = 1;
while (true)
{
if (n >= (6 * start + 2 ) && n <= (6 * (start + gap) + 1))
{
Console.WriteLine(answer + 1);
return;
}
start = start + gap;
gap++;
answer++;
}
}
}
}
}
반응형
댓글