백준 수학

    [백준, BOJ 3460] 이진수 (java)

    https://www.acmicpc.net/problem/3460메모리: 14,016 KB , 시간: 96 ms사용 알고리즘: 구현, 수학import java.io.BufferedReader;import java.io.InputStreamReader;public class Main { public static void main(String[] args) throws Exception{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int T = Integer.parseInt(br.readLine()); StringBuilder result = new StringBuilder()..

    [백준, BOJ 10829] 이진수 변환 (java)

    https://www.acmicpc.net/problem/10829메모리: 14,312 KB , 시간: 100 ms사용 알고리즘: 구현, 수학, 비트 연산자import java.io.BufferedReader;import java.io.InputStreamReader;public class Main { public static void main(String[] args) throws Exception{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); long N = Long.parseLong(br.readLine()); StringBuilder result = new String..

    [백준, BOJ 1267] 핸드폰 요금 (java)

    https://www.acmicpc.net/problem/1267메모리: 15,768 KB , 시간: 112 ms사용 알고리즘: 사칙연산, 수학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)); int N = Integer.parseInt(br.readLine()); int y..

    [백준, BOJ 27434] 팩토리얼 3 (java)

    https://www.acmicpc.net/problem/27434메모리: 393,188 KB , 시간: 2,960 ms사용 알고리즘: 큰 수 연산, 사칙연산, 수학Java에서는 long 타입으로도 오버 플로우가 발생하기 때문에, 기본 자료형을 사용할 수 없다.때문에 BigInteger라는 것을 사용해야 한다. BigInteger에서 곱셈 연산을 하기 위해서는 BigInteger 객체의 multiply라는 메소드를 사용해야 하고,이 메소드는 파라미터로 곱하고자 하는 수를 나타내는 BigInteger 객체를 받는다. 때문에 $N!$을 계산하기 위해 N번의 BigInteger 객체를 생성하고 곱하는 과정에서 시간초과가 난다.시간초과를 해결하기 위해서는 BigInteger 생성 횟수를 줄여야 하고,분할 정복을..

    [백준, BOJ 2022] 사다리 (java)

    https://www.acmicpc.net/problem/2022메모리: 14,576 KB , 시간: 112 ms사용 알고리즘: 이분 탐색, 수학, 피타고라스 정리수학 공식이 적용되는 것 같은데, 적절한 공식이 떠오르지 않아 블로그를 참고했다. 공식을 대입하여, 이분 탐색으로 두 건물 사이의 거리를 오차 범위 이내에 오도록 하는 값을 찾으면 된다.이분 탐색 시작 시에 값의 범위는 0 ~ Math.min(x, y)인데, 두 건물 사이의 거리가 사다리의 길이보다 길 수는 없기 때문이다.res가 c보다 높은 곳에 위치한다면, 가운데 값을 크게 해야 더 낮은 res를 구할 수 있기 때문에 이분 탐색의 왼쪽 값을 변경해 주고res가 c보다 낮은 곳에 위치한다면, 가운데 값을 낮게 해야 더 높은 res를 구할 수 ..

    [백준, BOJ 19535] ㄷㄷㄷㅈ (java)

    https://www.acmicpc.net/problem/19535 19535번: ㄷㄷㄷㅈ 첫 번째 줄에 주어진 트리가 D-트리라면 D, G-트리라면 G, DUDUDUNGA-트리라면 DUDUDUNGA를 출력한다. www.acmicpc.net 메모리: 88,744 KB , 시간: 516 ms 사용 알고리즘: 조합론, 수학, 트리 import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { /** * 처음 문제를 해결할 때, * 모든 정점들 중 꼭 하나의 간선으로 이어져있는 정점들이 아니더라도 * 임의의 정점 4개를 뽑아서 * 뽑은 정점들 중 하나의 정점에서..

    [백준, BOJ 3673] 나눌 수 있는 부분 수열 (java)

    https://www.acmicpc.net/problem/3673 3673번: 나눌 수 있는 부분 수열 양의 정수로 이루어진 수열이 주어졌을 때, 연속하는 부분 수열의 합이 d로 나누어 떨어지는 것의 개수를 구하는 프로그램을 작성하시오. 예를 들어, 아래와 같은 수열의 부분 수열 중 4로 나누 www.acmicpc.net 메모리: 121,256 KB , 시간: 792 ms 사용 알고리즘: 수학, 누적 합 import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.HashMap; import java.util.Map; import java.util.StringTokenizer; public class Main { pub..

    [백준, BOJ 20444] 색종이와 가위 (java)

    https://www.acmicpc.net/problem/20444 20444번: 색종이와 가위 첫 줄에 정수 n, k가 주어진다. (1 ≤ n ≤ 231-1, 1 ≤ k ≤ 263-1) www.acmicpc.net 메모리: 14,188 KB , 시간: 124 ms 사용 알고리즘: 이분 탐색, 수학 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 InputStream..

    [백준, BOJ 10986] 나머지 합 (java)

    https://www.acmicpc.net/problem/10986 10986번: 나머지 합 수 N개 A1, A2, ..., AN이 주어진다. 이때, 연속된 부분 구간의 합이 M으로 나누어 떨어지는 구간의 개수를 구하는 프로그램을 작성하시오. 즉, Ai + ... + Aj (i ≤ j) 의 합이 M으로 나누어 떨어지는 (i, j) www.acmicpc.net 메모리: 120,568 KB , 시간: 516 ms 사용 알고리즘: 수학, 누적 합 import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { public static void main(String..

    [백준, BOJ 1644] 소수의 연속합 (java)

    https://www.acmicpc.net/problem/1644 1644번: 소수의 연속합 첫째 줄에 자연수 N이 주어진다. (1 ≤ N ≤ 4,000,000) www.acmicpc.net 문제 하나 이상의 연속된 소수의 합으로 나타낼 수 있는 자연수들이 있다. 몇 가지 자연수의 예를 들어 보면 다음과 같다. 3 : 3 (한 가지) 41 : 2+3+5+7+11+13 = 11+13+17 = 41 (세 가지) 53 : 5+7+11+13+17 = 53 (두 가지) 하지만 연속된 소수의 합으로 나타낼 수 없는 자연수들도 있는데, 20이 그 예이다. 7+13을 계산하면 20이 되기는 하나 7과 13이 연속이 아니기에 적합한 표현이 아니다. 또한 한 소수는 반드시 한 번만 덧셈에 사용될 수 있기 때문에, 3+5+..