Java/코딩테스트

[백준] 2903번: 중앙 이동 알고리즘 (JAVA)

다아빈 2025. 4. 3. 20:16
728x90
반응형

문제: https://www.acmicpc.net/problem/2903

문제 접근

규칙을 찾는 문제였던 거 같습니다!

그래서 바보인 저는 냅다 노트를 꺼내서 그림부터 그렸는데요!!

 

규칙 찾는데 시간이 너무 오래걸렸었는데..

어찌하다 점의 개수에 대한 규칙? 을 찾았습니다!

(바보여서 4번 반복한 것까지 그려 봤어요 ㅋㅋ..)

  • 초기 점의 개수: 한 변에 있는 점 2개 -> 2의 제곱
  • 1번: 한 변에 있는 점 3개 -> 3의 제곱
  • 2번: 한 변에 있는 점 5개 -> 5의 제곱
  • 3번: 한 변에 있는 점 9개 -> 9의 제곱
  • 4번: 한 변에 있는 점 17개 -> 17의 제곱

그래서 제곱을 빼고 숫자에만 집중에 봤습니다:

 

2 -> 3 -> 5 -> 9 -> 17 

 

숫자가 (1, 2, 4, 8,..) 이렇게 2의 거듭제곱 꼴로 증가더라구요!

그래서 코드에 그대로 적용해보았습니다.

전체 코드

import java.io.*;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        int dot = 2;
        int input = Integer.parseInt(br.readLine());

        for(int i = 0; i < input; i++) {
            dot += (int)Math.pow(2, i);
        }

        bw.write((int)Math.pow(dot, 2) + "");
        bw.flush();
    }
}

다른 분들은 3-4줄로 푸시던데..

역시나 저는 아직 많이 부족하네요ㅠㅠ

 

그리고 저는 규칙 찾는 것도 넘 어려웠는데,

정답률을 보고는 많이 연습해야겠다고 느꼈답니다.

 

더 발전하도록 노력하겠습니다.

감사합니다!

728x90
반응형