본문 바로가기
Baekjoon 자바 코드/일반 수학

[백준] 2903번 중앙 이동 알고리즘 풀이 코드 (Java 자바)

by 망댕이 2024. 12. 17.
반응형

 

일정한 규칙에 따라 점점 늘어나는 점들의 개수를 출력하는 문제이다.

접근 방법)

이 문제는 점의 개수가 특정 규칙에 따라 증가하는 패턴을 찾아서 최종적으로 점의 개수를 구하는 문제이다. 복잡해 보이지만 한 변의 점 개수의 규칙을 이해하면 금방 해결할 수 있다.

 

점의 개수 증가 규칙

한 변의 점 개수가 N에서 시작했다고 가정하면, 다음 단계에서는 (N-1) + N만큼 점이 찍힌다.

이 규칙을 반복적으로 적용하면 한 변의 점 개수를 구할 수 있다.

 

누적합과 제곱 활용

한 변의 점 개수를 구한 후, 그 값을 제곱하면 전체 점의 개수를 구할 수 있다.

이를 for문누적 합을 활용하여 구현하면 된다.

 

 

정답 코드 1)

import java.util.*;
import java.lang.*;
import java.io.*;

// The main method must be in a class named "Main".
class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        int N = sc.nextInt();
        int l_num = 2; // 처음 한 변의 길이

        for(int i = 1; i <= N; i++){
            int l_center = l_num - 1; // 다음 과정으로 넘어갈 때 추가되는 점 개수
            l_num = l_num + l_center; // 앞 과정의 점 개수 + 추가된 점 개수
        }
        System.out.print((int)Math.pow(l_num, 2)); //Math 클래스를 사용
        //System.out.print(l_num*l_num); //곱하기 연산 사용 (결과는 같음)
    }
}
반응형