java42 [java] 백준4928 베르트랑 공준 입력범위롸 소수를 찾는 메소드에 주의한다. Math.sqrt(num)는 해당하는 num의 제곱근을 double타입으로 반환한다. 즉 7을 넣으면 2.xxxx를 반환하는 것이다. 여기서 헷갈린 점은 만약 isPrime에 2가 들어간다면? 이었다. 2%2 == 0이니 안걸러지는거 아닐까 하는 생각이다. 하지만 이는 잘못된 생각이었다. 2의 제곱근은 1.xx이므로 반복문이 작동하지 않고 바로 true로 가기 때문이었다. 경계값에서 좀 더 주의할 필요가 있어 보인다. import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { public static void .. 2024. 1. 29. [java] 백준 1929 소수 구하기 소수를 구하는 메소드만 만들줄 알면 매우 간단하다. import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader((System.in))); StringTokenizer st = new StringTokenizer(br.readLine()); // 공백 입력을 위한 stringTokenixer int N = Integer.parseInt(st.ne.. 2024. 1. 29. [java] 백준 4134 다음 소수 이 문제는 주어진 값에 대해 크거나 작은 수 중 가장 가까운 소수를 수하는 문제이다. 제한시간이 1초인 문제이기 때문에 반복문의 범위가 굉장히 중요한 것으로 생각된다. 주의할 점은 입력받은 수의 크기가 최대 40억이기 때문에 int대신 long타입을 써야한다. 소수인지 판별해 알려주는 isPrime메소드를 만들었다. 소수면 true, 아니면 false를 반환한다. 2보다 작은 값은 소수가 아니기 때문에 false를 반환한다. 소수가 아닌 숫자들은 해당 수의 제곱근보다 작거나 같은 값을 무조건 약수로 가진다. 따라서 반복문 범위를 제곱근까지만 해도 해당 수가 소수가 아닌 것을 판별할 수 있다(제곱근보다 작거나 같은 수로 나누어 진다면). 가장 가까운 소수를 출력해야 하기에 0, 1에 대해 2로 출력하는 에.. 2024. 1. 29. [java] 백준 2485 가로수 이 문제는 최대공약수를 잘 활용해야 하는 문제이다. 이 문제를 잘 이해해 보면 "주어진 나무들의 간격을 일정하게 했을 때 최소 몇 그루의 나무가 필요한가?" 가 핵심이다. 그렇다면 주어진 나무들의 간격을 최대한 넓게 유지해야 할 것이다. 즉 우리는 나무사이의 간격의 최대값 즉 최대공약수를 알아내야한다. 그렇다면 최소한 몇 그루가 필요한지 알게되고, 기존에 심긴 나무수를 제외하면 정답을 맞추게 된다. 우선 생각나는대로 코드를 만들었다. import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.ArrayList; public class Main { public static void main(String[] args) t.. 2024. 1. 26. [java] 백준 1735 분수 합 분수의 합을 기약분수로 구하는 문제이다. 기약분수란 더 이상 약분이 되지 않는 분수를 의미한다. 그렇다면 기약분수는 어떻게 구하는 것일까? 각 수가 더 이상 나누어지지 않기 위해서는 통분한 후 최대공약수로 나누면 해결된다. 최대공약수를 구하는 공식은 아래 글에 정리되어 있다. https://miacoder.tistory.com/42 [java] 백준 13241 최소공배수 자바 이 풀이는 유클리드 호제법을 사용하여 최대공약수와 최소공배수를 구하는 문제이다. 유클리드 호제법이란 최대공약수를 구하는 공식이다. 위와 같이 a, b가 있을 때 b가 0이 될 때 까지 재귀함 miacoder.tistory.com 예를 들어보자 6/10 과 5/15가 있다. 여기서 각 값을 통분한다. 그렇다면 90/150, 50/15.. 2024. 1. 26. [java] 백준 13241 최소공배수 자바 이 풀이는 유클리드 호제법을 사용하여 최대공약수와 최소공배수를 구하는 문제이다. 유클리드 호제법이란 최대공약수를 구하는 공식이다. 위와 같이 a, b가 있을 때 b가 0이 될 때 까지 재귀함수로 돌린다는 것을 알 수 있다. 위 공식을 통해 입력받은 값의 최대공약수를 구할 수 있다. 그렇다면 최소공배수는 어떻게 구하는가? 최소공배수는 a * b / gcd(a, b)로 계산할 수 있다. 코드로 풀어보면 다음과 같다. import java.util.*; import java.io.BufferedReader; import java.io.InputStreamReader; public class Main { public static void main(String[] args) throws Exception { Bu.. 2024. 1. 26. 이전 1 2 3 4 5 ··· 7 다음