문제
사파리월드는 인터넷으로만 존재하는 미스테리한 나라이다. 사파리월드에는 2개의 서브도메인이 seunghwan.royal.gov.sw와 kyuhyun.royal.gov.sw이 있는데, 이것이 couple.royal.gov.sw으로 합쳐질 것이다. 그러나 도메인 관리 센터 SWNIC(센터장: 김동규)에는 엄격한 룰이 있다. 두 서브도메인을 합칠 때, 유명도의 차이가 너무 차이나지 않을 경우에만 두 서브도메인을 결혼시키는 것이다. 서브도메인의 유명도는 정수이다. 두 서브도메인의 유명도가 주어졌을 때, 그 차이를 구하는 프로그램을 작성하시오.
입력 조건
첫째 줄에 두 도메인의 유명도 N과 M이 주어진다. (-2,000,000,000 ≤ N, M ≤ 2,000,000,000)
출력 조건
첫째 줄에 두 유명도의 차이 (|N-M|)을 출력한다.
풀이
그냥 단순하게 빼는 문제인가? 했는데
유명도가 음수일 수도 있다는? 예제가 있어서 절대값으로 값을 구해야한다고 한다.
절대값이란, 어떤 수의 0에서의 거리를 의미합니다. 즉, 음수인 경우에는 그 수를 양수로 변환하고, 양수는 그대로 둡니다.
예를 들어, 숫자 5의 절대값은 5이고, -3의 절대값은 3입니다. 이처럼 절대값을 구하면 결과는 항상 0 또는 양수가 됩니다.
수학적으로는 절대값을 표현할 때 |a|와 같이 표현합니다. 이 경우 a가 양수이면 |a| = a가 되고, a가 음수이면 |a| = -a가 됩니다. 이렇게 절대값은 항상 양수를 반환하기 때문에 수의 차이를 비교하는 등의 계산에 유용하게 사용됩니다.
자바로는 절대값을 해본적이 많지 않아서 Math.abs를 써준다고 하는데 abs는 아마 absolute를 의미하는 듯 하다.
Math.floor나 이런 것들은 많이 써봤는데 간만에 쓰는듯 하다.
Math.abs는 자바의 Math 클래스에 속해 있는 메소드입니다. 이 메소드는 매개변수로 전달된 값의 절대값을 반환합니다.
즉, Math.abs(N - M)는 N - M의 결과값이 양수일 경우 그대로 반환하고, 음수일 경우 그 절대값을 반환합니다. 이를 통해 두 수의 차이가 양수인지 음수인지에 상관없이 항상 양수 값을 얻을 수 있습니다. 이러한 특성 덕분에 두 수의 차이를 구할 때 자주 사용되는 메소드입니다.
결국 Math.abs라는 메서드를 알고 있는지?를 문제라 코드는 굉장히 간결하다.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// 두 도메인의 유명도 입력 받기
long N = sc.nextLong();
long M = sc.nextLong();
// 유명도 차이 계산
long difference = Math.abs(N - M);
// 유명도 차이 출력
System.out.println(difference);
}
}
예제와 동일하게 출력이 된다.
백준에서도 통과✅
정리
문제가 길어서 뭔가 거창하게 적어야할 것 같았는데 알고나니 참 간단한 문제여서 조금 허탈했다😨
아직은 새싹 단계를 풀고 있지만 결국은 많은 코드 유형을 봐야 상황마다 어떤 메서드를 적용시킬지 판단이 빨라질 것 같다는 생각이 들었다.
뭐든 자주 보고 많이 손으로 해봐야 늘거 같다.
올해 안에 새싹 단계 끝낼 수 있길 🙏
'Knowledge > Algorithm' 카테고리의 다른 글
[10872/JAVA] 팩토리얼 (0) | 2023.12.29 |
---|---|
[10951/JAVA] A+B - 4 (0) | 2023.12.23 |
[2753/JAVA] 윤년 (0) | 2023.12.21 |
[14681/JAVA] 사분면 고르기 (0) | 2023.12.20 |
[1330/JAVA] 두 수 비교하기 (0) | 2023.12.20 |
쓰임 있는 사람이 되기 위해 노력 중입니다.