본문 바로가기

코딩테스트 준비573

[백준] 15965번 - K번째 소수 [Java] https://www.acmicpc.net/problem/15965 1.  아이디어 에라토스테네스의 체로 소수 리스트를 미리 구하고 인덱스로 찾는 방식으로 구현했다.자연수가 최대 500,000으로 주어졌는데, 50만번째 소수가 1000만 이하 범위에 있는 점으로 좀 더 간편하게 구현했다.2. 문제풀이 에라토스테네스의 체로 소수 여부를 먼저 판정을 하고 해당 결과로 소수 리스트를 구했다.K번째 소수는 소수 리스트에서 K-1 인덱스에 위치한다는 점을 이용하면 간단하게 구할 수 있다.3. 코드 import java.io.*;import java.util.*;public class Main { public static void main(String[] args) throws IOException { .. 2024. 12. 4.
[백준] 1735번 - 분수 합 [Java] https://www.acmicpc.net/problem/1735 1.  아이디어 두 분수의 합을 기약분수로 만드려면 통분 이후 유클리드 호제법으로 약분을 하면 간단하게 해결할 수 있다.2. 문제풀이 통분으로 두 분수의 덧셈을 먼저 해주고 분자, 분모의 최대 공약수로 분자, 분모를 나눠주는 방식으로 구현했다.3. 코드 import java.io.*;import java.util.*;public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWrit.. 2024. 12. 4.
[백준] 9613번 - GCD의 합 [Java] https://www.acmicpc.net/problem/9613 1.  아이디어 GCD의 쌍은 유클리드 호제법을 활용하면 간단하게 구할 수 있다.2. 문제풀이 중복이 가능하기 때문에 반복문에서 유클리드 호제법으로 최대 공약수를 반복해서 구하면 간단하게 해결할 수 있다.이때 최대 공약수의 합은 int형 오버플로우가 발생할 수 있는 점에 주의해야 한다.3. 코드 import java.io.*;import java.util.*;public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.i.. 2024. 12. 4.
[백준] 12779번 - 상품 is 뭔들 [Java] https://www.acmicpc.net/problem/12779 1.  아이디어 약수의 개수가 홀수인 숫자는 제곱수라는 점을 활용한다.2. 문제풀이 4, 9, 16 같은 제곱수만 약수의 개수가 홀수가 되므로 해당 범위에 포함된 제곱수를 찾은 후 유클리드 호제법으로 기약분수로 출력하는 방식으로 구현했다.3. 코드 import java.io.*;import java.util.*;public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter.. 2024. 12. 3.
[백준] 9506번 - 약수들의 합 [Java] https://www.acmicpc.net/problem/9506 1.  아이디어 완전수인지 아닌지의 여부를 판단하는 문제로 일일이 약수들을 더해서 완전수가 되는지 판단하고 형식에 맞게 출력하는 방식으로 간단하게 구현했다.2. 문제풀이 1부터 N 이전까지 모든 수로 나누어보며 약수들을 리스트에 담아주고 완전수가 되는지 판단했다.이후 StringBuilder를 활용해서 완전수일 때와 완전수가 아닐 때 형식에 맞게 출력하는 방식으로 구현했다.3. 코드 import java.io.*;import java.util.*;public class Main { public static void main(String[] args) throws IOException { BufferedReader br =.. 2024. 12. 3.
[백준] 1037번 - 약수 [Java] https://www.acmicpc.net/problem/1037 1.  아이디어 약수의 특성을 활용하면 간단하게 해결할 수 있다.2. 문제풀이 특정 자연수의 약수를 크기 순으로 나열했을 때 가장 큰 약수와 가장 작은 약수의 곱, 혹은 두 번째로 큰 약수와 두 번째로 작은 약수의 곱 모두 원래 자연수가 되는 점을 활용하면 된다.3. 코드 import java.io.*;import java.util.*;public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); S.. 2024. 12. 3.
[백준] 2312번 - 수 복원하기 [Java] https://www.acmicpc.net/problem/2312 1.  아이디어 for문과 while문을 활용해서 간단하게 소인수분해를 구현할 수 있다.2. 문제풀이 2부터 점점 큰 수로 나눗셈을 해보며 소인수분해를 할 수 있는데 합성수는 이미 그 보다 작은 소수로 나누어졌기에 자연스럽게 소인수분해를 할 수 있다.소인수분해 이후 남은 수가 소수인지 1인지에 따라서 조건만 한번 더 체크해주면 된다.3. 코드 import java.io.*;public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(.. 2024. 12. 3.
[백준] 5347번 - LCM [Java] https://www.acmicpc.net/problem/5347 1.  아이디어 유클리드 호제법을 이용해서 최소 공배수를 간단하게 구할 수 있다.2. 문제풀이 유클리드 호제법으로 최대 공약수를 구하는 gcd 메서드를 작성하고 gcd를 통해 최소 공배수를 구할 수 있는 lcm 메서드를 작성하는 방식으로 구현했다.최소 공배수를 구하는 과정에서 int형 오버플로우가 날 수 있는 점만 주의해서 구현하면 된다.3. 코드 import java.io.*;import java.util.*;public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(.. 2024. 12. 3.
[백준] 13241번 - 최소공배수 [Java] https://www.acmicpc.net/problem/13241 1.  아이디어 유클리드 호제법을 이용해서 최소 공배수를 간단하게 구할 수 있다.2. 문제풀이 유클리드 호제법으로 최대 공약수를 구하는 gcd 메서드를 작성하고 gcd를 통해 최소 공배수를 구할 수 있는 lcm 메서드를 작성하는 방식으로 구현했다.문제 조건에서 long 타입을 사용하라고 한 점만 참고해서 구현하면 간단하게 해결할 수 있다.3. 코드 import java.io.*;import java.util.*;public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader.. 2024. 12. 3.
[백준] 1934번 - 최소공배수 [Java] https://www.acmicpc.net/problem/1934 1.  아이디어 유클리드 호제법을 이용해서 최소 공배수를 간단하게 구할 수 있다.2. 문제풀이 유클리드 호제법으로 최대 공약수를 구하는 gcd 메서드를 작성하고 gcd를 통해 최소 공배수를 구할 수 있는 lcm 메서드를 작성하는 방식으로 구현했다.3. 코드 import java.io.*;import java.util.*;public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWr.. 2024. 12. 3.
[백준] 2609번 - 최대공약수와 최소공배수 [Java] https://www.acmicpc.net/problem/2609 1.  아이디어 유클리드 호제법을 이용해서 최대 공약수와 최소 공배수를 간단하게 구할 수 있다.2. 문제풀이 유클리드 호제법으로 최대 공약수를 구하는 gcd 메서드를 작성하고 gcd를 통해 최소 공배수를 구할 수 있는 lcm 메서드를 작성하는 방식으로 구현했다.3. 코드 import java.io.*;import java.util.*;public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); St.. 2024. 12. 3.
[백준] 11653번 - 소인수분해 [Java] https://www.acmicpc.net/problem/11653 1.  아이디어 for문과 while문을 활용해서 소인수분해를 하는 방식으로 구현했다.2. 문제풀이 작은 수부터 나눠주면 소수인지 여부를 판단하지 않아도 소인수분해를 할 수 있는 점을 활용했다.다만 같은 수로 여러번 나눌 수 있는 점을 고려해서 while문으로 반복적으로 나누어주었고 소인수분해 이후 남은 값이 1 보다 클 경우 해당 값까지 포함해줘야 해서 이 부분까지 고려해서 구현했다.3. 코드 import java.io.*;public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new Buffer.. 2024. 12. 3.