[백준/JAVA] 중앙 이동 알고리즘
2025. 3. 3. 23:54ㆍ코딩테스트/백준
문제
https://www.acmicpc.net/problem/2903
문제 정리
종이를 n번 접었을 때, 나타낼 수 있는 점을 겹치는 점 빼고 출력해라!
이게 처음 문제를 봤을 땐 정말 무슨 말인지 모르겠어서
직접 그려보기로 했다
마지막은 그리기 빡세서 못 그린 게 맞습니다
여튼 그림으로 정리해보니 쉬웠다
종이를 접으면 한 변의 점의 갯수를 제곱한 것 만큼의 점이 생기고,
이 점이 증가하는 식은 1, 2, 4, 8...
자신을 더해서 증가하는, 그니까 2진수 증가를 대입하니 쉬웠다
작성 코드
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
//초기상태는 점 4개
int answer = 0;
//초기 한 변의 점의 수는 2개
int point = 2;
//초기 증가는 1개
int add = 1;
for (int i = 0; i < N; i++) {
//한 변의 점의 갯수
point = point + add;
answer = point * point;
//증가는 2배씩 늘어남
add += add;
}
System.out.println(answer);
sc.close();
}
}
'코딩테스트 > 백준' 카테고리의 다른 글
[백준/JAVA] No.2720 세탁소 사장 동혁 (0) | 2025.03.03 |
---|---|
[백준/JAVA] No. 2750 수 정렬하기 (1) | 2025.03.02 |
[백준/level 1] No 1043. 나머지 (JAVA) (0) | 2025.01.26 |
[백준/level 1] No 18108. 1998년생인 내가 태국에서는 2541년생?! (JAVA) (0) | 2025.01.26 |
[백준/level 1] No 1008. A/B (JAVA) (0) | 2025.01.26 |