※ 백준 (Baekjoon)/[Java] 문제 풀이 ( Solve the problems)
[브론즈3] 17945. 통학의 신 (Java)
J 크
2023. 7. 21. 17:50
728x90
반응형
https://www.acmicpc.net/problem/17945
17945번: 통학의 신
x2 + 2Ax + B = 0 의 두 계수 A, B가 주어진다. A, B는 정수이며, 이 방정식의 근은 항상 정수이다. (-1000 ≤ A, B ≤ 1000)
www.acmicpc.net
곧 매일 배운 내용을 정리하여 포스팅을 해보려고 합니다. 중꺾마.
해당 문제는 서론이 길지만 결론 적으로 주어진 이차 방정식 x^2 + 2Ax + B = 0 에서 두 계수 A, B를 입력 받아 중근일 경우 하나만 출력, 아닐 경우 두 근을 모두 출력하는 문제입니다.
Example 1:
Input : 2, 3 = > Output : -3 , -1
Example 2:
Input : 1, 1 = > Output: 1, 1
코드 작성 전, 아래와 같이 솔루션을 정리하였습니다.
▶ 문제에서 근의 공식 중 a=1로 고정.
▶ 결론적으로 공식은 -b'+sqrt(b'2-ac), -b'-sqrt(b'2-ac) 두개의 근을 추출. (동일한 경우 하나만 출력)
import java.util.Scanner;
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int A = sc.nextInt();
int B = sc.nextInt();
int nRoot = (int) Math.sqrt(A*A - B);
int nResult1 = (-1*A) - nRoot;
int nResult2 = (-1*A) + nRoot;
if(nResult1 == nResult2)
System.out.println(nResult1);
else
System.out.println(nResult1 + " " + nResult2);
}
}
해당 문제는 근의 공식만 활용하면 크게 어려움이 없던 문제였습니다.
긴 글 읽어주셔서 감사합니다!
Good Luck! (피드백 고맙습니다)