일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 브루트포스 알고리즘
- 프로그래머스
- 정보처리기사
- 그래프 이론
- 소수 판정
- 너비 우선 탐색
- SWEA
- JPA
- 프로젝트
- MYSQL
- n과 m
- 구현
- dfs
- Vue
- 백준
- 알고리즘
- 배포
- 그래프 탐색
- 수학
- springboot
- 다이나믹 프로그래밍
- Spring Security
- 자료 구조
- 재귀
- 백트래킹
- 깊이 우선 탐색
- DB
- 정수론
- 스택
- 문자열
- Today
- Total
목록재귀 (7)
영원히 남는 기록, 재밌게 쓰자
15651번: N과 M (3) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 풀이 1부터 N까지 자연수 중에서 M개를 고른 수열 같은 수를 여러 번 골라도 된다. 이 문제의 경우 M개를 고를 때 방문을 고려하지 않고 모든 경우를 다 뽑으면 된다. N과 M (1)을 풀지 않고 풀었다면 더 쉬웠을 것 같았다..ㅎ 정답 코드 package com.baekjoon.p15651; import java.util.*; public class Main { static int n, m; static int[] arr; static StringBuilde..
15650번: N과 M (2) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 풀이 N과 M (1)에서 고른 수열이 모두 오름 차순이어야 한다. 중복 없이 M개를 골라야 한다. 처음 조건만 추가된 경우였는데 [2, 1]의 경우 오름 차순으로 버꾸면 [1, 2]가 되기 때문에 처음 [1, 2] 경우와 중복되어 사용할 수 없다. 그래서 현재 내가 고른 배열 다음 번호를 기준으로 M개를 고르면 된다. 그렇게 되면 오름차순으로 고르면서 중복 없이 수열을 고를 수 있다. 정답 코드 package com.baekjoon.p15650; import j..
15649번: N과 M (1) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 풀이 중복 없이 N개 중 M개를 골라야 한다. 조금 헷갈릴 수 있었던 부분이 [1, 2], [2, 1]은 중복되는 수열이라고 생각했었는데 순서가 달라서 다른 수열로 본다는 것을 나중에 이해했다..ㅋㅋ 한번 뽑은 수를 그 다음에 뽑지 않으면 중복을 없앨 수 있다. 방문 배열을 활용하여 한번 뽑은 수를 그 다음에 뽑지 않도록 체크를 해주어 중복 없이 M개를 뽑을 수 있다. 백트래킹 중 dfs를 사용하여 문제를 해결했다. 백트래킹 기법은 모든 경우의 수를 다 탐색하는..