728x90
출처: https://www.acmicpc.net/problem/15894
📌 문제
📌 나의 코드
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
long n = scan.nextLong(); //가장 아랫부분의 정사각형 개수
System.out.println(n * 4);
scan.close();
}
}
📌 풀이 과정
1. 데이터 타입 선택하기
• 입력되는 n의 값의 조건이 1 ≤ n ≤ 10^2 으로 주어져 있습니다.
• int의 최대값은 2,147,483,647 ( 2^{31} - 1 )로, 10^9 보다 크기 때문에 n이 10^9 범위에 도달하면 문제없이 저장할 수 있습니다.
• 하지만, n 값을 기반으로 계산을 수행하다가 결과 값이 2,147,483,647 를 초과하면 오버플로우가 발생합니다.
• 범위를 초과하여 오버플로우가 발생하면 계산 결과가 엉뚱한 값이 되므로, 입력 조건에 따라 더 큰 범위를 처리할 수 있는 long이 필수입니다.
• 따라서, 입력받는 n의 데이터 타입을 long으로 설정하여 풀이하였습니다.
long n = scan.nextLong();
2. 세로 길이
가장 아랫부분의 정사각형의 개수 n값 * 1 에 양쪽 대칭이므로 * 2를 하여 세로 길이 합을 구할 수 있습니다.
→ 세로길이 = 2 * n
3. 가로 길이
파란 동그라미 2개를 합치면 길이 1이다. 맨 윗변 + 중간 가로변 = n , 맨 아랫변 = n임을 확인할 수 있습니다.
→ 가로길이 = n + n = 2 * n
4. 도형의 둘레의 길이
세로길이합 + 가로길이합 = 2 * n + 2 * n = 4 * n
728x90
'📍 코딩테스트 > 백준' 카테고리의 다른 글
[백준/Java] #2480 주사위 세개 (0) | 2024.09.01 |
---|---|
[백준/Java] #10810 공 넣기 (1) | 2024.09.01 |
[백준/Java] #3052 나머지 (0) | 2024.09.01 |