목차 문제 스도쿠는 18세기 스위스 수학자가 만든 '라틴 사각형'이랑 퍼즐에서 유래한 것으로 현재 많은 인기를 누리고 있다. 이 게임은 아래 그림과 같이 가로, 세로 각각 9개씩 총 81개의 작은 칸으로 이루어진 정사각형 판 위에서 이뤄지는데, 게임 시작 전 일부 칸에는 1부터 9까지의 숫자 중 하나가 쓰여 있다. 나머지 빈칸을 채우는 방식은 다음과 같다. 각각의 가로줄과 세로줄에는 1부터 9까지의 숫자가 한 번씩만 나타나야 한다. 굵은 선으로 구분되어 있는 3x3 정사각형 안에도 1부터 9까지의 숫자가 한 번씩만 나타나야 한다. 위의 예의 경우, 첫째 줄에는 1을 제외한 나머지 2부터 9까지의 숫자들이 이미 나타나 있으므로 첫째 줄 빈칸에는 1이 들어가야 한다. 또한 위쪽 가운데 위치한 3x3 정사각형..
Java+Python으로 순열/조합/중복순열/중복조합 구현하기 [Java+Python]15649번, N과 M(1), 순열 [Java+Python]15650번, N과 M(2), 조합 [Java+Python]15651번, N과 M(3), 중복순열 [Java+Python]15652번, N과 M(4), 중복조합 문제 자연수 N과 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. 1부터 N까지 자연수 중에서 M개를 고른 수열 같은 수를 여러 번 골라도 된다. 고른 수열은 비내림차순이어야 한다. 길이가 K인 수열 A가 A1 ≤ A2 ≤ ... ≤ AK-1 ≤ AK를 만족하면, 비내림차순이라고 한다. 입력 첫째 줄에 자연수 N과 M이 주어진다. (1 ≤ M ≤ N ≤ 8..
Java+Python으로 순열/조합/중복순열/중복조합 구현하기 [Java+Python]15649번, N과 M(1), 순열 [Java+Python]15650번, N과 M(2), 조합 [Java+Python]15651번, N과 M(3), 중복순열 [Java+Python]15652번, N과 M(4), 중복조합 문제 자연수 N과 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. 1부터 N까지 자연수 중에서 M개를 고른 수열 같은 수를 여러 번 골라도 된다. 입력 첫째 줄에 자연수 N과 M이 주어진다. (1 ≤ M ≤ N ≤ 7) 출력 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안 되며, 각 수열은 공백으로 구분해서 출..
Java+Python으로 순열/조합/중복순열/중복조합 구현하기 [Java+Python]15649번, N과 M(1), 순열 [Java+Python]15650번, N과 M(2), 조합 [Java+Python]15651번, N과 M(3), 중복순열 [Java+Python]15652번, N과 M(4), 중복조합 문제 자연수 N과 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. 1부터 N까지 자연수 중에서 중복 없이 M개를 고른 수열 고른 수열은 오름차순이어야 한다. 입력 첫째 줄에 자연수 N과 M이 주어진다. (1 ≤ M ≤ N ≤ 8) 출력 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안 되며, 각 수열은 공백으로 ..
Java+Python으로 순열/조합/중복순열/중복조합 구현하기 [Java+Python]15649번, N과 M(1), 순열 [Java+Python]15650번, N과 M(2), 조합 [Java+Python]15651번, N과 M(3), 중복순열 [Java+Python]15652번, N과 M(4), 중복조합 문제 자연수 N과 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. 1부터 N까지 자연수 중에서 중복 없이 M개를 고른 수열 입력 첫째 줄에 자연수 N과 M이 주어진다. (1 ≤ M ≤ N ≤ 8) 출력 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안 되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사..
중복 조합은 조합과 비슷하게 n개의 요소 중 r개를 순서에 상관없이 뽑는데, 중복을 허용하여 뽑는 경우의 수이다. 유도 과정은 생략하고, 실제로 어떻게 동작하는지는 아래 그림을 보면 쉽다. 5개의 요소 중 중복 조합으로 2개를 뽑는 경우의 수를 나타내고 있다. 중복 순열을 구현할 때와 비슷하게 isVisited 배열을 제거하고, 재귀 함수를 호출할 때 i + 1이 아닌 i부터 대입해 중복을 허용하면 된다. public class CombinationWithRepetition { public static void main(String[] args) { int[] arr = {1, 2, 3, 4, 5}; // 중복 조합을 만들 배열 int n = arr.length; int r = 2; comb(arr, n..
중복 순열은 순열과 비슷하게 n개의 요소 중 r개를 순서에 상관있게 뽑는데, 중복을 허용하여 뽑는 경우의 수이다. 순서가 중요하되 중복을 허락한다는 말은 다음 그림을 보면 명확하다. {A, B, C}세 개의 원소중 중복순열을 이용해 3개를 뽑는 경우의 수를 나타낸 그림이다. 자바로 구현하는 경우에도 중복을 허용한다는 부분만 반영을 해주면 된다. 이전 글에서 사용했던 코드의 경우, 중복을 피하기 위해 넣었던 isVisitied 배열을 제거하면 간단하다. public class PermutationWithRepetition { public static void main(String[] args) { int[] arr = {1, 2, 3}; // 순열을 만들 배열 int n = arr.length; // 배열..
Java+Python으로 더 간결하게 순열/조합/중복순열/중복조합 구현하기 [Java+Python]15649번, N과 M(1), 순열 [Java+Python]15650번, N과 M(2), 조합 [Java+Python]15651번, N과 M(3), 중복순열 [Java+Python]15652번, N과 M(4), 중복조합 순열(Permutation) 순열은 서로 다른 n개의 원소에서 r개를 중복 없이, 순서에 상관있게 뽑아 나열하는 것이다. nPr의 형태로 자주 표현되며, 그 경우의 수는 아래와 같다. 순열을 탐색할 땐 재귀 함수로 표현하는 것이 편한데, 이 경우 해당 인덱스의 숫자가 사용 중인지 판단하는 배열이 따로 필요하다. 이미 뽑은 숫자라면 넘어가야 하기 때문이다. import java.util.Arr..
그래프의 탐색은 모든 정점을 한 번씩 방문하는데 그 목적이 있다. 지도 애플리케이션에서 두 지점 사이의 경로를 검색할 경우를 생각 해보면, 최소 시간이나 최소 환승 등 여러 가지 검색 기준이 있다. 이와 비슷하게 그래프의 모든 정점을 방문하는 방법에도 크게 두 종류가 있는데, BFS(Breadth-First Search) - 너비 우선 탐색과 DFS(Depth-First Search) - 깊이 우선 탐색이 그것이다. BFS(Breadth First Search) 너비 우선 탐색(BFS)은 시작 정점부터 가장 가까운 순서대로 정점을 방문하는 방법이다. 최초 시작 정점과 인접한 정점을 모두 방문한 뒤, 각 순회된 정점부터 시작하여 인접한 정점을 방문하는 방식을 반복한다. 출처: https://minhamin..
- Total
- Today
- Yesterday
- 지지
- Python
- 세계여행
- 여행
- a6000
- 리스트
- spring
- 백준
- 스프링
- RX100M5
- 자바
- 알고리즘
- 야경
- Backjoon
- 남미
- 유럽여행
- 세계일주
- 세모
- Algorithm
- 중남미
- 유럽
- java
- 스트림
- 칼이사
- 기술면접
- 맛집
- 동적계획법
- 면접 준비
- BOJ
- 파이썬
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |