반응형
[BOJ10597] 순열장난 (Java, 백트래킹)
알고리즘/완전 탐색2025. 1. 17. 13:23[BOJ10597] 순열장난 (Java, 백트래킹)

문제 링크 https://www.acmicpc.net/problem/10597 풀이- 백트래킹 사용- 정답은 구했으나 boolean[] visited 배열을 사용하는 것과 최대 수가 50인걸 파악하지 못한 풀이로 시간 초과 발생- 잘못 풀이한 부분에 대한 이력 남김 문제 설명과 같이 1 ~ N까지의 숫자로 이루어진 순열을 구해야한다- N = 10인 경우 1 부터 10 까지의 수가 중복 없이 모두 포함되어 있어야 한다는 의미- "kriii의 순열은 최소 1개 최대 50개의 수로 이루어져 있다."에서 (러프하게)최대 수가 50까지 라는 것을 파악할 수 있다- 연산을 편하게 하기 위해서 int[] nums 배열을 선언 후 숫자 초기화를 수행하였다 백트래킹 수행할 함수를 아래와 같이 선언하였다(idx >= 배열..

[BOJ2580] 스도쿠 (Java, 백트래킹, 비트 마스크)
알고리즘/완전 탐색2025. 1. 14. 20:10[BOJ2580] 스도쿠 (Java, 백트래킹, 비트 마스크)

문제 링크 https://www.acmicpc.net/problem/2580  풀이- 백트래킹, 비트 마스킹으로 문제 해결 문제를 한번만 읽고 풀다가 유효성 검사에서 3 * 3 그리드를 누락하여 "틀렸습니다"를 맛 보았다..🥹스도쿠의 필드가 0인 영역을 채울 때 유효성 검사를 총 3가지를 수행해야 했다 ① 행② 열③ 3 * 3 그리드 영역 rows, cols, boxes 각 배열을 사용하여 비트 마스킹을 표현하고, 유효성 검사를 하도록 하였다private static long[] rows;private static long[] cols;private static long[] boxes; 입력 데이터 초기화시  값이 0인 경우 리스트에 좌표 정보를 담고, 나머지의 경우 비트 마스킹 표기를 할 수 있도록 ..

[BOJ 14888번] 연산자 끼워넣기 (Java, 완전탐색, 재귀호출)
알고리즘/완전 탐색2023. 6. 13. 12:34[BOJ 14888번] 연산자 끼워넣기 (Java, 완전탐색, 재귀호출)

문제 링크 https://www.acmicpc.net/problem/14888 14888번: 연산자 끼워넣기 첫째 줄에 수의 개수 N(2 ≤ N ≤ 11)가 주어진다. 둘째 줄에는 A1, A2, ..., AN이 주어진다. (1 ≤ Ai ≤ 100) 셋째 줄에는 합이 N-1인 4개의 정수가 주어지는데, 차례대로 덧셈(+)의 개수, 뺄셈(-)의 개수, 곱 www.acmicpc.net 풀이 - DFS로 연산자에 대한 순열(Permutation)을 구한 후 연산 결과값 구함 - N(2 ≤ N ≤ 11) 이므로 최대 연산자 개수는 10개, 순열 10! = 3,628,800 - 시간복잡도 O(N! * N ) = O(10! * 11) = 약 3,600만번 이므로 풀이가능 제출 코드 풀이1. 연산자 순열을 구한 후 연..

반응형
image