본문 바로가기

Algorithms/SW Expert Academy

[Java] SW Expert Academy 1491번 문제 (탐색)

728x90

---문제---

  • 1491. 원재의 벽 꾸미기

---코드---

import java.util.Scanner;

class Solution {

	public static void main(String[] args) {
		//System.setIn(new FileInputStream("1491.txt"));
		Scanner sc = new Scanner(System.in);
		int T = sc.nextInt();
		for (int t = 1; t <= T; ++t) {
			long N = sc.nextLong();
			long A = sc.nextLong();
			long B = sc.nextLong();
			long min = Long.MAX_VALUE;
			
			if ((long) Math.sqrt(N) == Math.sqrt(N)) {
				min = 0;
			} else {
				for (long i = 1; i <= (long)Math.sqrt(N); ++i) {
					for (long j = i; (long)j*i <= N; ++j) {
						// A : 정사각형의 정도를 반영 (정사각형과 멀수록 비중 커짐)
						// B : N개에서 몇개가 남는지를 반영 (많이 남을 수록 비중 커짐)
						long tmp = A * (long) (j - i) + B * (long)(N - (long)i*j);
						if (tmp < min)
							min = tmp;
					}
				}
			}
			System.out.printf("#%d %d\n", t, min);
		}
		sc.close();
	}

}

---출처---

https://swexpertacademy.com/main/solvingProblem/solvingProblem.do

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 

반응형