반응형
해당 문제는 수열과 관련된 문제이다. 나는 수학을 정말 못하는구나를 다시금 느꼈다. 규칙을 찾아서 식을 만들기만 하면 되는데, 식을 세우는 데에 있어서 변수가 조금이라도 생기면 머리가 하얘진다..그래서 시간이 좀 걸렸다.
최소한으로 이동하는 경우를 = 1을 기준으로 감싸는 각 줄을 이동하는 경우. 따라서 각 줄마다 늘어나는 숫자에 대한 공식을 구현하면 된다.
1. 벌집에서 1을 기준으로 바깥을 감싸는 줄의 숫자의 갯수를 구한다.
첫째줄(=1 자신)은 1개, 둘째 줄은 6개, 셋째 줄은 12개... 그리고 식으로 도출해보면,
-> 6(n-1) (n>1, n=1일땐 1) 이라는 식이 나온다.
2. 위 식을 참고하여 이번엔 각 줄까지 포함되는 수를 구한다. (n = x일때 몇 까지의 수가 벌집을 감싸는지)
n = 1 -> 1+0 //6(1-1)=0
n = 2 -> 1+6(2-1)
n = 3 -> 1+6(2-1)+6(3-1)
n = 4 -> 1+6(2-1)+6(3-1)+6(4-1)
아까 1번 규칙 6(n-1)에서 n에 1을 넣어주게 되면 어차피 0이 나오므로,
2번 규칙에서는 n=1일때에도 규칙을 통일할 겸 6(n-1)을 넣어주면 좋다.
즉 벌집안의 k번째 줄까지는 1 + 6(n-1) + 6(n) + .... + 6(k-2) + 6(k-1) 까지의 숫자가 있다.(k>0) 이를 이용해서 코딩을 하면 된다.
import java.util.Scanner;
public class exam {
public static void main(String args[]) {
Scanner scan = new Scanner(System.in);
int N = scan.nextInt();
int total = 1, counter = 1;
while (true) {
total += 6 * (counter - 1);
if (total >= N)
break;
else
counter++;
}
System.out.print(counter);
}
}
머리가 나쁜 바람에 초깃값 설정을 고려하여 식을 구현하는 데 있어서 시간을 많이 썼다..
반응형
'[백준]' 카테고리의 다른 글
[BaekJoon/백준] 2869번 (0) | 2020.09.13 |
---|---|
[BaekJoon/백준] 1193번 (0) | 2020.09.10 |
[BaekJoon/백준] 2839번 (0) | 2020.09.08 |
[BaekJoon/백준] 1712번 (0) | 2020.09.08 |
[BaekJoon/백준] 8단계 "문자열" (0) | 2020.09.05 |