목록Study/Problem Solving (163)
전공공부
설명 이건 해답을 주고 문제를 풀어나간다고 생각하고 풀면 된다. 기존의 서로 다른 진법으로 변환된 수 2개가 주어지면 이때 변환된 기존의 값 X 값과 어떤 진법으로 각각 변환했는지 보는 문제다. 그래서, 2진법 부터 36 진법 부터 모두 변환하며 진행하며 이때, long 값의 범위를 넘어가는 값은 에러처리 또는 Impossible 처리를 해주면 된다. 아래 코드는 API를 이용했지만, 실제로 변환하는 식을 구현해서 변환 하는 것이 좋을 것 같다. 코드 package Math; import java.util.Scanner; public class BOJ_21275 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); ..
설명 1일 1문제 하는 사람들에게는 필요한 문제다. 코드 package Simulation; public class BOJ_10171 { public static void main(String[] args) { System.out.println("\\ /\\\n" + " ) ( ')\n" + "( / )\n" + " \\(__)|\n"); } } 10171번: 고양이 아래 예제와 같이 고양이를 출력하시오. www.acmicpc.net
설명 이제껏 풀었던 기법을 모두 사용했다 (유클리드 호제법 : 최소공배수) lcm = (a*b) / GCD(a,b); private static long lcm(long a ,long b) { long lcm = 0L; for (int i = 0; i < primes.size(); i++) { lcm = (a*b) / gcd(a, n); } return lcm; } 소수 구하기는 모두 시도 하되 Math.sqrt(n) 만큼 반복문을 돌리기 private static boolean isPrime(long n) { if (n < 2) return false; for (int i = 2; i * i
설명 서로소를 구하는 방법은 서로 다른 수끼리 최대공약수를 구했을때 1이 나오면 서로소임을 판별한다. 우리는 이를 위해서 최대 공약수를 GCD로 구하고 진행하면된다. 평균을 구하기 때문에 ans,cnt 변수를 각각 double으로 사용했다. 코드 package Math; import java.util.Scanner; public class BOJ_21920 { public static void main(String[] args) throws Exception{ Scanner sc = new Scanner(System.in); int N = sc.nextInt(); int A[] = new int[N]; for(int i = 0; i < N; i++){ A[i] = sc.nextInt(); } int X ..
설명 0,1의 예외처리를 잘 하지 못하여서 틀렸습니다를 여러번 봤던 문제다. 코드 import java.util.Scanner; public class Main { public static void main(String[] args) throws Exception { Scanner sc = new Scanner(System.in); int t = sc.nextInt(); while (t-- > 0) { long n = sc.nextLong(); if(n == 0 || n == 1){ System.out.println(2); continue; } while (true) { boolean check = true; for (long i = 2; i
설명 키워드는 소수를 구할때는 자신이 보는 숫자의 제곱근까지만 반복문을 돌려서 보면 되는것을 이용한다는 것이다. 코드 package Math; import java.util.*; public class BOJ_2960 { public static void main(String[] args) throws Exception { Scanner sc = new Scanner(System.in); int N = sc.nextInt(); int K = sc.nextInt(); int cnt = 0; Map map = new HashMap(); for (int i = 2; i
설명 유클리드 호제법을 이용한다. 최대 공약수를 구하는 식을 이용해서 최대 공약수를 구하고 최소 공배수를 구하기 위해서 각각의 숫자를 곱하고 이를 최대 공약수로 나눈다. 애초에 최대로 공통된 약수를 각각의 숫자로 나누면 공통된 약수중 가장 큰 수로 나누었으니 최소의 공통된 약수를 볼 수 있는 것이므로 이를 이용한다. 그리고, 이 사용한 유클리드 호제법은 GCD(a,b) == GCD(b,r) 을 이용한 것인데, a > b 일때, a/b의 나머지와 더 작은 b의 값이 a,b의 최대 공약수와 동일하다는 것을 이용해서 만든 것이라고 한다. 그리고, 최소 공약수를 구하기 위해서는 이 최대 공약수를 서로 곱한 값의 나눗셈을 위한 값을 사용하면 된다. 코드 package Math; import java.io.Buff..
설명 크게 설명을 할 수 있는 문제가 아님. 문제에 주어진 식을 그대로 구현을 하면 되는 문제다. 현재 피로도를 계산해두고 현재 할 수 있는 일량을 적재하면서 체크해나가는 문제 코드 package Math; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.StringTokenizer; public class BOJ_22864 { public static void main(String[] args) throws Exception{ BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer tk = new St..