알고리즘/DFS, BFS, 시뮬, 백트래킹 9

[백준] 24479번 알고리즘 수업 - 깊이 우선 탐색 1 #Java

import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.Collections; import java.util.StringTokenizer; public class Main { static int N,M,R,idx; static ArrayList[] edges; static int [] answer; static boolean [] visited; public static void main(String[] args) throws IOException { BufferedReader br = new BufferedRead..

[백준] 7562번 나이트의 이동 #Java

bfs 간단한 문제 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.LinkedList; import java.util.Queue; import java.util.StringTokenizer; class Point{ int x,y; public Point(int x,int y){ this.x = x; this.y = y; } } public class Main { static int dx[] = {-1,-2,-2,-1,1,2,2,1}; static int dy[] = {-2,-1,1,2,2,1,-1,-2}; static int [][] arr; static ..

[알고리즘] 미로탐색(DFS) with Java, 초기화 전략

문제 10. 미로탐색(DFS) 설명 7*7 격자판 미로를 탈출하는 경로의 가지수를 출력하는 프로그램을 작성하세요. 출발점은 격자의 (1, 1) 좌표이고, 탈출 도착점은 (7, 7)좌표이다. 격자판의 1은 벽이고, 0은 통로이다. 격자판의 움직임은 상하좌우로만 움직인다. 미로가 다음과 같다면 위의 지도에서 출발점에서 도착점까지 갈 수 있는 방법의 수는 8가지이다. 입력 7*7 격자판의 정보가 주어집니다. 출력 첫 번째 줄에 경로의 가지수를 출력한다. 예시 입력 1 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 1 0 0 0 1 1 0 1 0 1 1 1 1 0 0 0 0 1 1 1 0 1 1 0 0 1 0 0 0 0 0 0 예시 출력 1 8 코드 import java.util.Scanner; ..

[프로그래머스] N-Queen 문제

문제 설명 가로, 세로 길이가 n인 정사각형으로된 체스판이 있습니다. 체스판 위의 n개의 퀸이 서로를 공격할 수 없도록 배치하고 싶습니다. 예를 들어서 n이 4인경우 다음과 같이 퀸을 배치하면 n개의 퀸은 서로를 한번에 공격 할 수 없습니다. 체스판의 가로 세로의 세로의 길이 n이 매개변수로 주어질 때, n개의 퀸이 조건에 만족 하도록 배치할 수 있는 방법의 수를 return하는 solution함수를 완성해주세요. 제한사항 퀸(Queen)은 가로, 세로, 대각선으로 이동할 수 있습니다. n은 12이하의 자연수 입니다. 입출력 예 nresult 4 2 입출력 예 설명 입출력 예 #1 문제의 예시와 같습니다. 오답노트 안되는 문제는 그냥 외워라! 그러면 이해하게 될 것이다! 는 말은 진리인 것 같다. 처음에..

[프로그래머스] 타겟 넘버 - BFS

타겟 넘버 문제 설명 n개의 음이 아닌 정수가 있습니다. 이 수를 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 있습니다. -1+1+1+1+1 = 3 +1-1+1+1+1 = 3 +1+1-1+1+1 = 3 +1+1+1-1+1 = 3 +1+1+1+1-1 = 3 사용할 수 있는 숫자가 담긴 배열 numbers, 타겟 넘버 target이 매개변수로 주어질 때 숫자를 적절히 더하고 빼서 타겟 넘버를 만드는 방법의 수를 return 하도록 solution 함수를 작성해주세요. 제한사항 주어지는 숫자의 개수는 2개 이상 20개 이하입니다. 각 숫자는 1 이상 50 이하인 자연수입니다. 타겟 넘버는 1 이상 1000 이하인 자연..

[백준] 단지번호 붙이기 - BFS

단지번호붙이기 성공출처 시간 제한메모리 제한제출정답맞은 사람정답 비율 1 초 128 MB 93709 38989 24584 39.632% 문제 과 같이 정사각형 모양의 지도가 있다. 1은 집이 있는 곳을, 0은 집이 없는 곳을 나타낸다. 철수는 이 지도를 가지고 연결된 집의 모임인 단지를 정의하고, 단지에 번호를 붙이려 한다. 여기서 연결되었다는 것은 어떤 집이 좌우, 혹은 아래위로 다른 집이 있는 경우를 말한다. 대각선상에 집이 있는 경우는 연결된 것이 아니다. 는 을 단지별로 번호를 붙인 것이다. 지도를 입력하여 단지수를 출력하고, 각 단지에 속하는 집의 수를 오름차순으로 정렬하여 출력하는 프로그램을 작성하시오. 입력 첫 번째 줄에는 지도의 크기 N(정사각형이므로 가로와 세로의 크기는 같으며 5≤N≤2..

[백준] N과 M (1~4)

(1) 1~N까지 자연수 중, 중복 없이 M개를 고른 수열 - nPm 문제 n, m = map(int,input().split()) arr = [] def solution(): if len(arr) == m: print(' '.join(map(str,arr))) return for i in range(1,n+1): if i not in arr: arr.append(i) solution() arr.pop() solution() (2) 1~N까지 자연수 중, 중복 없이 M개를 고른 수열 + 오름차순 - nCm 문제 n, m = map(int,input().split()) arr = [] def solution(start): if len(arr) == m: print(' '.join(map(str,arr)))..