※ 백준 (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! (피드백 고맙습니다)