[백준] 2903

ninano05·2026년 3월 27일

2의 거듭제곱
2의 거듭제곱은 시프트 연산으로 구할 수도 있다.
1 << N 은 2의 N제곱이라는 뜻
ex)
1 << 0 이면, 왼쪽으로 0칸 이동 => 즉 1(이진수)
1 << 1 이면, 왼쪽으로 1칸 이동 => 즉 10(이진수)라서 2가 된다.
1 << 2 이면, 왼쪽으로 2칸 이동 => 즉 100(이진수) 라서 4가 된다.
.
.
.

Math 클래스 메서드
Math.pow()는 거듭제곱을 계산해 주는 메서드이다.
ex) Math.pow(N, 2)이면 N*N N의 2제곱을 의미한다.
Math.sqrt()는 제곱근을 구해주는 메서드이다.
ex) Math.sqrt(4) = 2

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

public class Main {

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

        int N = Integer.parseInt(br.readLine());
        int row = 2; // 초기 상태

        // 한줄에 생기는 점의 개수를 계산한다.
        for(int i=0; i<N; i++) {
            row = (row*2) -1;
        }
        bw.write(row*row+"\n");
        bw.flush();
        bw.close();
        br.close();
    }
}
import java.util.*;
import java.io.*;

public class Main {

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

        int N = Integer.parseInt(br.readLine());
        int row = 0; // 초기 상태

        // 한줄에 생기는 점의 개수를 계산한다.
        for(int i=0; i<N; i++) {
            row = (1 << N)+1;
        }
        bw.write((int)Math.pow(row,2)+""); // Math.pow()는 double 타입으로 반환 된다. 
        bw.flush();
        bw.close();
        br.close();
    }
}
profile
초보 개발자

0개의 댓글