smooth waters run deep

전체 글 122

6603_로또 (JAVA)

6603번: 로또 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있다. 첫 번째 수는 k (6 < k < 13)이고, 다음 k개 수는 집합 S에 포함되는 수이다. S의 원소는 오름차순으로 www.acmicpc.net import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { static StringBuilder sb = new StringBuilder(); public static void main(String[] args) throws Exception{ BufferedReader br = new Buffere..

1d-1c/BOJ 2020.11.28

플로이드-와샬 알고리즘 (Floyd's Algorithm)

Floyd's Algorithm 이란? - 그래프의 각 정점에서 다른 모든 정점까지의 최단거리를 구하는 알고리즘 (모든 정점에 대하여 각 정점의 최단거리를 모두 구한다.) - i -> j 로 가는 최단거리를 구하기 위해 ① i->j ② i -> k -> j 의 두 가지 경우의 최소값을 최단거리로 정한다. 즉, 거쳐가는 정점을 기준으로 최단거리를 구한다. - 시간복잡도 : O(n^3) - DP 이용 Floyd's Algorithm 이용 - 1) 최단거리 배열 D 구하기 public static void main(String arg[]){ int n = 4; int[][] W = {{0,10,15,20},{5,0,9,10},{6,13,0,12},{8,8,9,0}; // 가중치 배열 int[][] D = ne..

11723_집합 (JAVA)

11723번: 집합 첫째 줄에 수행해야 하는 연산의 수 M (1 ≤ M ≤ 3,000,000)이 주어진다. 둘째 줄부터 M개의 줄에 수행해야 하는 연산이 한 줄에 하나씩 주어진다. www.acmicpc.net ① int형 정수 이용 (비트마스크) 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)); StringBuil..

1d-1c/BOJ 2020.11.25

10972_다음 순열 & 10973_이전 순열 (JAVA)

10972_다음 순열 10972번: 다음 순열 첫째 줄에 입력으로 주어진 순열의 다음에 오는 순열을 출력한다. 만약, 사전순으로 마지막에 오는 순열인 경우에는 -1을 출력한다. www.acmicpc.net import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.Arrays; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws Exception{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringBu..

1d-1c/BOJ 2020.11.24

9095_1,2,3 더하기 (JAVA)

9095번: 1, 2, 3 더하기 각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 출력한다. www.acmicpc.net import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.List; public class Main { static int num; static int ans = 0; public static void main(String[] args) throws Exception{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int testcase ..

1d-1c/BOJ 2020.11.24

14500_테트로미노 (JAVA)

14500번: 테트로미노 폴리오미노란 크기가 1×1인 정사각형을 여러 개 이어서 붙인 도형이며, 다음과 같은 조건을 만족해야 한다. 정사각형은 서로 겹치면 안 된다. 도형은 모두 연결되어 있어야 한다. 정사각형의 변 www.acmicpc.net import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { static int n; static int m; static int[][] map; static boolean[][] visited; static int[] dx = {1,-1,0,0}; static int[] dy = {0,0,1,-1}; static..

1d-1c/BOJ 2020.11.23

6588_골드바흐의 추측 (JAVA)

6588번: 골드바흐의 추측 각 테스트 케이스에 대해서, n = a + b 형태로 출력한다. 이때, a와 b는 홀수 소수이다. 숫자와 연산자는 공백 하나로 구분되어져 있다. 만약, n을 만들 수 있는 방법이 여러 가지라면, b-a가 가장 큰 www.acmicpc.net import java.io.BufferedReader; import java.io.InputStreamReader; public class Main { static boolean flag = false; public static void main(String[] args) throws Exception{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); bo..

1d-1c/BOJ 2020.11.22

9613_GCD 합 (JAVA)

9613번: GCD 합 첫째 줄에 테스트 케이스의 개수 t (1 ≤ t ≤ 100)이 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있다. 각 테스트 케이스는 수의 개수 n (1 < n ≤ 100)가 주어지고, 다음에는 n개의 수가 주어진 www.acmicpc.net import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.*; public class Main { public static void main(String[] args) throws Exception{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringToken..

1d-1c/BOJ 2020.11.22

1934_최소공배수 (JAVA)

1934번: 최소공배수 두 자연수 A와 B에 대해서, A의 배수이면서 B의 배수인 자연수를 A와 B의 공배수라고 한다. 이런 공배수 중에서 가장 작은 수를 최소공배수라고 한다. 예를 들어, 6과 15의 공배수는 30, 60, 90등이 있 www.acmicpc.net 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));..

1d-1c/BOJ 2020.11.22

최대공약수 & 최소공배수

예) 21, 72 의 최대공약수 & 최소공배수 구하기 ① 최대공약수 72 % 21 = 9 21 % 9 = 3 9 % 3 = 0 ∴ 최대공약수 = 3 ② 최소공배수 (21 * 72) / 최대공약수 = (21*72)/3 = 504 ∴ 최소공배수 = 504 코드구현 public static void main(String[] args){ int x = 21; int y = 72; int gcd = makegcd(x,y); System.out.println("최대공약수 : " + gcd); int lcd = (x*y) / gcd; System.out.println("최소공배수 : " + lcd); } private int makegcd(int x, int y){ while(x>0){ int temp = y%x; ..