[BOJ 백준] 19532번 : 수학은 비대면강의입니다 – Kotlin[코틀린]

문제

자세한 문제 내용은 ‘수학은 비대면강의입니다‘를 클릭하세요.

풀이

이 문제는 브루트 포스 알고리즘을 이용하거나, 2차 방정식의 특성을 이용하여 풀 수 있습니다.

브루트 포스 알고리즘을 사용한다면, x와 y 값이 -999에서 999까지의 범위로 주어졌으므로, 모든 경우를 탐색하며 대입한 값을 확인해봅니다.

연립방정식을 사용한다면 다음의 풀이 과정을 거칩니다.

주어진 연립방정식은 다음과 같습니다.

 ax + by = c \\ dx + ey = f

가감법을 사용하여 이 연립방정식을 풀기 위해서는 먼저 한 변수를 제거해야 합니다. 이를 위해 두 방정식을 적절히 곱하여 두 방정식의 x 또는 y의 계수를 동일하게 만들 수 있습니다.

예를 들어, x의 계수를 동일하게 만들기 위해 첫 번째 방정식에 d를 곱하고, 두 번째 방정식에 a를 곱합니다.

 adx + bdy = cd \\ adx + aey = af

이제 두 방정식을 빼면 x 항이 사라집니다:

 (bdy - aey) = (cd - af)

이를 y에 대해 정리하면, 아래와 같은 식으로 정리됩니다.

 y = (cd - af) / (bd - ae)

x 또한 동일한 과정을 통해 식을 정리합니다.

테스트 코드

프로덕션 코드

브루트 포스 알고리즘 사용

연립방정식 풀이 사용

결과

제출번호 62098145가 브루트 포스 알고리즘을 사용한 코드를 제출한 결과이고, 제출번호 62098191가 연립방정식을 사용한 코드를 제출한 결과입니다. 연립방정식을 사용한 코드가 메모리 사용량이나 처리 시간에서 조금 더 좋은 성능을 보이고 있습니다.

실행 결과

카테고리: BOJ(백준) | 댓글 남기기 | 편집
이 글은 카테고리: BOJ(백준)에 포함되어 있습니다. 고유주소를 북마크하세요.

댓글 남기기