일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- DP
- 몯느 순열
- 1174
- BOJ
- 부분 수열의 합
- 코딩테스트
- 백준
- 너비우선탐색
- 10597
- 위클리 6주차
- 39080
- 복서 정렬하기
- 백트래킹
- 완전 탐색
- 백트렉킹
- 백트랙킹
- 순열장난
- 그래프
- 입실 퇴실
- 문서자동화
- 재귀
- 줄어드는 숫자
- Java
- BFS
- openssl
- 좋은 수열
- ElementTree
- dfs
- 위클리 챌린지
- 프로그래머스
목록백준 (11)
개발자-H 입니다.
https://www.acmicpc.net/problem/15686 15686번: 치킨 배달 크기가 N×N인 도시가 있다. 도시는 1×1크기의 칸으로 나누어져 있다. 도시의 각 칸은 빈 칸, 치킨집, 집 중 하나이다. 도시의 칸은 (r, c)와 같은 형태로 나타내고, r행 c열 또는 위에서부터 r번째 칸 www.acmicpc.net 백트래킹 완전탐색으로 구할 수 있는 문제이다. 초반에 시간 초과로 꾀 고생을 했는데 집을 선택하는 순서는 관계 없기 때문에 오름 차순 식으로 풀면 통과 할 수 있다. 결론적으로 아래의 문제에서 입력 형식과 결과 도출만 달라진 문제였다. N과 M(2) import java.io.*; import java.util.*; public class Main { public static..
https://www.acmicpc.net/problem/10597 10597번: 순열장난 kriii는 1부터 N까지의 수로 이루어진 순열을 파일로 저장해 놓았다. 모든 수는 10진수로 이루어져 있고, 모두 공백으로 분리되어 있다. 그런데 sujin이 그 파일의 모든 공백을 지워버렸다! kriii가 순 www.acmicpc.net 백트래킹 탐색 문제이다. 처음에는 주어진 입력 문자열을 String.IndexOf를 사용하여 완탐했으나 10이 넘어가는 시점에서 탐색 개수가 기하급수 적으로 늘어나 시간 초과를 받았다. 문제에서 주어진 조건으로 최대 N!이 50이 넘지 않기에 1~ 2 길이를 이용하여 만들 수 있는 모든 문자열을 검색하는 것으로 바꾸었다. import java.io.BufferedReader; ..
https://www.acmicpc.net/problem/10819 10819번: 차이를 최대로 첫째 줄에 N (3 ≤ N ≤ 8)이 주어진다. 둘째 줄에는 배열 A에 들어있는 정수가 주어진다. 배열에 들어있는 정수는 -100보다 크거나 같고, 100보다 작거나 같다. www.acmicpc.net 백트랙킹을 이용하여 수어진 배열의 모든 가지수를 구한다. 주어진 수식으로 답을 구한 뒤 답중 최대 값을 출력한다. import java.io.*; import java.util.StringTokenizer; public class Main { private static BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); privat..
https://www.acmicpc.net/problem/2661 2661번: 좋은수열 첫 번째 줄에 1, 2, 3으로만 이루어져 있는 길이가 N인 좋은 수열들 중에서 가장 작은 수를 나타내는 수열만 출력한다. 수열을 이루는 1, 2, 3들 사이에는 빈칸을 두지 않는다. www.acmicpc.net 주어진 좋은 수열을 만족하는 경우에만 123 탐색을 진행했다. 123 중복을 허용하는 순으로 진행했기 때문에 가장 작은 수는 가장 첫 번째 발견되는 수열이다. import java.io.*; public class Main { private static BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); private static..
https://www.acmicpc.net/problem/1759 1759번: 암호 만들기 첫째 줄에 두 정수 L, C가 주어진다. (3 ≤ L ≤ C ≤ 15) 다음 줄에는 C개의 문자들이 공백으로 구분되어 주어진다. 주어지는 문자들은 알파벳 소문자이며, 중복되는 것은 없다. www.acmicpc.net 백트랙킹을 이용하여 규칙에 맞는 암호문을 만들어 내는 문제이다. 최적화는 비트마스킹을 활용했다. Java String => 248ms 비트마스킹 => 140ms 코드는 비트마스킹 풀이법이다. import java.io.*; import java.util.*; public class Main { private static BufferedReader br = new BufferedReader(new Inp..
https://www.acmicpc.net/problem/17136 17136번: 색종이 붙이기 과 같이 정사각형 모양을 한 다섯 종류의 색종이가 있다. 색종이의 크기는 1×1, 2×2, 3×3, 4×4, 5×5로 총 다섯 종류가 있으며, 각 종류의 색종이는 5개씩 가지고 있다. 색종이를 크 www.acmicpc.net 백트래킹 + 배열 조작 문제이다. 처음에는 각 DP 마다 모든 배열을 검사하도록 수행했더니 시간 초과가 나버렸다. 배열 검사는 가장 마지막에 오는 DP만 검사하여 조건에 맞는 색종이를 사용했는지 확인했다. import java.io.*; import java.util.*; public class Main { private static BufferedReader br = new Buffer..
https://www.acmicpc.net/problem/1174 1174번: 줄어드는 숫자 음이 아닌 정수를 십진법으로 표기했을 때, 왼쪽에서부터 자리수가 감소할 때, 그 수를 줄어드는 숫자라고 한다. 예를 들어, 321와 950은 줄어드는 숫자이고, 322와 958은 아니다. N번째로 작은 줄어 www.acmicpc.net 백트래킹 탐색 문제이다. 총 1023가지 경우의 수가 나온다. 첫 번째가 1부터 시작함에 주의한다. 다음 탐색 조건을 앞의 숫자와 비교하여 작을 시 탐색한 뒤 주어진 번째 수가 맞다면 탈출 하는 방법을 사용했다. import java.io.*; import java.util.*; public class Main { private static BufferedReader br = ne..
https://www.acmicpc.net/problem/14888 14888번: 연산자 끼워넣기 첫째 줄에 수의 개수 N(2 ≤ N ≤ 11)가 주어진다. 둘째 줄에는 A1, A2, ..., AN이 주어진다. (1 ≤ Ai ≤ 100) 셋째 줄에는 합이 N-1인 4개의 정수가 주어지는데, 차례대로 덧셈(+)의 개수, 뺄셈(-)의 개수, www.acmicpc.net DP + 백트래킹 문제이다. 주어진 연산자 횟수를 이용하여 연산자 순서를 정한다 DP 깊이가 숫자 -1 일 경우 조합된 연산자 순서를 이용하여 최소 값과 최대 값을 갱신한다. 아래의 풀이로 연산자 끼워넣기 (2) 통과 할 수 있다(날먹) import java.io.*; import java.util.*; public class Main { p..