본문 바로가기
[백준]

[BaekJoon/백준] 2292번

by Hevton 2020. 9. 9.
반응형

해당 문제는 수열과 관련된 문제이다. 나는 수학을 정말 못하는구나를 다시금 느꼈다. 규칙을 찾아서 식을 만들기만 하면 되는데, 식을 세우는 데에 있어서 변수가 조금이라도 생기면 머리가 하얘진다..그래서 시간이 좀 걸렸다.

 

최소한으로 이동하는 경우를 = 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