smooth waters run deep

전체 글 122

15654~15657_N과 M (5)~(8) (JAVA)

15654_N과 M (5) : 순열 15654번: N과 M (5) N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. N개의 자연수는 모두 다른 수이다. N개의 자연수 중에서 M개를 고른 수열 www.acmicpc.net import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.Arrays; import java.util.StringTokenizer; import java.util.List; public class Main { static int N; static int M; static String..

1d-1c/BOJ 2020.11.11

15649~15652_N과 M (1)~(4) (JAVA)

15649_N과 M (1) : 순열 15649번: N과 M (1) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net import java.util.ArrayList; import java.util.Arrays; import java.util.LinkedList; import java.util.Scanner; import java.util.List; public class Main { static int N; static int M; public static void main(String[] args) throws Exception{ Scan..

1d-1c/BOJ 2020.11.11

조합 nCr

① 조합 : 순서X, 중복X ('중복'은 자기자신 포함 여부를 의미) 예) 1,2,3,4 중 2개 뽑는 경우 (1,2) (1,3) (1,4) (2,3) (2,4) (3,4) /* N : 총 숫자 개수(num.length) R : 숫자 중에서 뽑는 개수 (nCr에서 r을 의미) int[] num : 숫자 집합 int[] ans : 조합(nCr) 결과를 담는 베열 int num_index : num[]의 인덱스 int ans_index : ans[]의 인덱스 int cnt : 숫자가 포함될 경우 카운트하는 변수 1. 숫자를 포함하는 경우 기존의 num[]배열의 인덱스 증가 / 결과 ans[]배열의 인덱스 증가 / 카운트 증가 2. 숫자를 포함하지 않는 경우 기존의 num[]배열의 인덱스 증가 / 결과 ans..

순열 nPr

① 순열 : 순서O, 중복X ('중복'은 자기자신 포함 여부를 의미) 예) 1,2,3,4 중 2개 뽑는 경우 (1,2) (1,3) (1,4) (2,1) (2,3) (2,4) (3,1) (3,2) (3,4) (4,1) (4,2) (4,3) /* N : 총 숫자 개수(num.length) R : 숫자 중에서 뽑는 개수 (nPr에서 r을 의미) int[] num : 숫자 집합 boolean[] checked : num[]의 숫자 사용 여부 List ans : 순열(nPr) 결과를 담는 리스트 1. 숫자 사용X 1) 사용표시(checked[i]=true), 결과리스트에 추가, 재귀 2) 사용표시 원상복귀(checked[i]=false), 결과리스트에서 삭제, i++ 2. ans.size()==M 이면 출력 후 ..

4963_섬의 개수 (JAVA) (C++)

4963번: 섬의 개수 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스의 첫째 줄에는 지도의 너비 w와 높이 h가 주어진다. w와 h는 50보다 작거나 같은 양의 정수이다. 둘째 줄부터 h개 줄에는 지도 www.acmicpc.net [C++] - ① BFS #include #include //memset #include using namespace std; int w=1; int h=1; int map[51][51] = {0,}; bool visited[51][51] = {false}; int ans = 0; struct XY{ int x; int y; }; int dx[] = {-1,-1,-1,0,0,1,1,1}; int dy[] = {-1,0,1,-1,1,-1,0,1}; void ..

1d-1c/BOJ 2020.11.09

1182_부분수열의 합 (JAVA)

1182번: 부분수열의 합 첫째 줄에 정수의 개수를 나타내는 N과 정수 S가 주어진다. (1 ≤ N ≤ 20, |S| ≤ 1,000,000) 둘째 줄에 N개의 정수가 빈 칸을 사이에 두고 주어진다. 주어지는 정수의 절댓값은 100,000을 넘지 않는다. www.acmicpc.net import java.util.Scanner; public class Main { static int S; static int ans = 0; public static void main(String[] args) { Scanner sc = new Scanner(System.in); int N = sc.nextInt(); S = sc.nextInt(); int[] num = new int[N]; boolean[] checked ..

1d-1c/BOJ 2020.11.08

부분집합

부분집합을 구하는 방법 중 재귀함수와 비트연산자를 이용하는 방법은 다음과 같다. ① 재귀함수 이용 예: 집합 {a, b, c, d}에서 {a,b}는 a,b는 포함되어 있고 c,d는 포함되어 있지 않다. 포함안될 때와 될 때 두 가지 경우를 checked[]배열에 표시하고, 재귀함수로 돌린다. 즉, 각 원소에 대하여, (포함X, 포함X, 포함X, 포함X) ~ (포함O, 포함O, 포함O, 포함O) 까지를 모두 탐색한다. public static void main(String[] args) { String[] arr = {"a", "b", "c", "d"}; boolean[] checked = new boolean[arr.length]; //포함여부 체크 makeset1(arr, checked, 0); // ..

3273_두 수의 합 (JAVA)

3273번: 두 수의 합 n개의 서로 다른 양의 정수 a1, a2, ..., an으로 이루어진 수열이 있다. ai의 값은 1보다 크거나 같고, 1000000보다 작거나 같은 자연수이다. 자연수 x가 주어졌을 때, ai + aj = x (1 ≤ i < j ≤ n)을 만족하는 www.acmicpc.net import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.util.Arrays; import java.util.StringTokenizer; public class Main { public static void ..

1d-1c/BOJ 2020.11.07

1931_회의실배정 (JAVA)

1931번: 회의실배정 (1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다. www.acmicpc.net import java.util.Arrays; import java.util.Scanner; public class Main { static class Arr implements Comparable{ int start; int end; public Arr(int start, int end){ this.start = start; this.end = end; } @Override public int compareTo(Arr arr){ //end기준으로 오름차순정렬 if(this.end > arr.end) return 1; if(this.end == arr.end){ //start도 오..

1d-1c/BOJ 2020.11.05

Level2_카카오프렌즈 컬러링북 (JAVA)

코딩테스트 연습 - 카카오프렌즈 컬러링북 6 4 [[1, 1, 1, 0], [1, 2, 2, 0], [1, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 3], [0, 0, 0, 3]] [4, 5] programmers.co.kr import java.util.LinkedList; import java.util.Queue; class Solution { static int[] dx = {-1, 1, 0, 0}; static int[] dy = {0, 0, -1, 1}; static boolean[][] visited; static int numberOfArea = 0; //영역 수 static int maxSizeOfOneArea = 0; //가장 큰 영역의 넓이 static int cnt..

1d-1c/Programmers 2020.11.05