
-Code
import java.util.*;
import java.io.*;
public class BOJ16306 {
public static void main(String[] args) throws Exception {
BufferedReader br =
new BufferedReader(new InputStreamReader(System.in));
int v = Integer.parseInt(br.readLine());
List<Integer> divList = new ArrayList<>();
for (int n = 1; n <= Math.sqrt(v) + 1; n++) {
if (v % n == 0) divList.add(n);
}
// 정답 구하기
int answer = Integer.MAX_VALUE;
for (int i = 0; i < divList.size(); i++) {
int valFirst = divList.get(i);
for (int j = i; j < divList.size(); j++) {
int valSecond = divList.get(j);
if (v % (valFirst * valSecond) == 0) {
int valThird = v / (valFirst * valSecond);
// 각 마주보는 변을 구하고 * 2
int result = 2 * (valFirst * valSecond + valFirst * valThird + valSecond * valThird);
answer = Math.min(answer, result);
}
}
}
System.out.println(answer);
}
}
처음에 한 가지 방식만으로 계산해서 계산식이 틀렸습니다. 그래서 접근 방법을 보니 약수들을 가지고 각 변에 사용하는 개수를 구하고 마주 보는 변을 구하기 위해 *2 하는 방식을 알게 되어 로직을 짰고 추가적으로 세 변의 크기가 같은 경우를 빼버려서 해당 부분을 수정하니 해결되었습니다.
'Beakjoon&프로그래머스 > Java' 카테고리의 다른 글
| [백준/Java] 11060번 점프 점프 (0) | 2026.01.12 |
|---|---|
| [프로그래머스/Java] H-Index (0) | 2026.01.12 |
| [프로그래머스/Java] 여행경로 (0) | 2026.01.11 |
| [백준/Java] 11660번 구간 합 구하기 5 (0) | 2026.01.11 |
| [백준/Java] 15990번 1, 2, 3 더하기 5 (0) | 2026.01.11 |