
난이도: ★★☆☆☆ • solved on: 2025-07-06

자료구조
알고리즘/기법
핵심 키워드
- 문제 분해
- 각 단계마다 한 변의 점 개수를 구하고, 그 제곱을 출력한다.
- 한 변의 점 개수 = 2ⁿ + 1
- 총 점의 개수 = (2ⁿ + 1)²
- 핵심 로직 흐름
입력 n point = (int)Math.pow(2, n) + 1 출력 point * point- 예외 처리
- n=0일 때 2^0 + 1 = 2+1=3 → 9 (문제 조건과 맞음)
import java.util.*;
import java.lang.*;
import java.io.*;
class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.valueOf(br.readLine());
System.out.print((int)Math.pow(2+(Math.pow(2,n)-1),2));
}
}
- 문제 분해
- 2ⁿ을 구할 때 Math.pow 대신 비트 시프트 연산(
1 << n)을 사용한다.- 한 변의 점 개수 = (1 << n) + 1
- 총 점의 개수 = ((1 << n) + 1)²
- 핵심 로직 흐름
입력 n point = (1 << n) + 1 출력 point * point- 예외 처리
- n=0인 경우에도 올바르게 동작
import java.io.*;
class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
int point = (1 << n) + 1;
System.out.print(point * point);
}
}
방법 1 :
- 시간 복잡도 : O(1)
- 공간 복잡도 : O(1)
방법 2 :
- 시간 복잡도 : O(1)
- 공간 복잡도 : O(1)
double형 변환 없이 int로 정확하게 값을 구할 수 있다.비슷한 유형 (GPT 추천) :
확장 문제 (GPT 추천) :