목록알고리즘 (7)
최's 먹공로그
1. 예전에 BFS로 풀었던 적이 있어서 DFS로 풀어보려고 했지만 흠 최단거리라서 BFS로 풀어야 되는걸까?? 2. DFS돌면서 visit 체크 해주고 인접한 4방향 보면서 N M까지 찾도록 함 3. map에 cnt 값 업데이트 해주면서 진행하고 마지막에 map[N][M]에 있는 값 출력 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class BOJ2178_미로탐색 { static int N; static int M; static int[][] map; static int[][] visit; public sta..
1. 두개의 노드가 연결되어 있다는 어찌 표현할지 -> 2차원 배열에 연결되어 있는 노드는 1로 표현 1,2가 연결인 경우 0 1 0 0 1 0 0 0 이런식으로 2. visit은 방문한 노드만 체크 -> 1차원 배열로 노드만 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.LinkedList; import java.util.Queue; import java.util.StringTokenizer; public class BOJ1260_BFSDFS { static int[] visit; static int[][] map; static int N, M; publ..
1. 지민이가 만들고 싶은 상태의 체스판과 비교해서 cnt 비교하여 최종 cnt 갱신 2. 검사할 때 +8 할 경우 map을 넘어가지 않는지 검사 필수 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class BOJ1018_체스판 { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new ..
https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWIeV9sKkcoDFAVH 문제정리1. 4개의 자석 , 각 자석은 8개의 튀어나온 곳을 가지고 있다.2. 자석은 각 날 마다 N극 또는 S 극의 자성을 가지고 있다.3. 자석의 신기한 규칙(1) 임의의 자석을 1칸씩 K번 회전 시킬 때(2) 하나의 자석이 1 칸 회전될 때, 붙어 있는 자석은 서로 붙어 있는 날의자성과 다를 경우에만(돌리기 전) 인력에 의해 반대 방향으로 1 칸 회전된다.4. 점수 계산(1) 1번 자석에서 빨간색 화살표 위치에 있는 날의 자성이 N 0 , S 1(2) 2번 자석에서 빨간색 화살표 위치에 있는 날의 자성이 N 0 , S 2(3) 3번 ..
https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWIeW7FakkUDFAVH 문제정리1. 각 셀의 숫자는 그 지형의 높이를 의미한다.2. 활주로를 가로 또는 세로 방향으로 건설할 수 있는 가능성을 확인하려고 한다.3. 활주로는 높이가 동일한 구간에서 건설이 가능하다.4. 높이가 다른 구간의 경우 활주로가 끊어지기 때문에 경사로를 설치해야만 활주로를 건설 할수 있다.5. 경사로는 길이가 X 이고, 높이는 1 이다.6. 경사로는 높이 차이가 1이고 낮은 지형의 높이가 동일하게 경사로의 길이만큼 연속되는 곳에설치 할 수 있다.7. 경사로의 길이 X와 절벽지대의 높이 정보가 주어질 때, 활주로를 건설할 수 있는경우의 수를..
https://www.acmicpc.net/problem/17406 문제정리1. 배열 A의 값은 각 행에 있는 모든 수의 합 중 최솟값을 의미한다.1 2 32 1 14 5 6인 경우 1행의 합은 6, 2행의 합은 4, 3행의 합은 15이다따라서 A의 값은 4이다.2. 배열은 회전 연산을 수행할 수 있다.(1) 회전 연산은 세 정수 (r,c,s)로 이루어져 있다(2) 가장 왼쪽 윗 칸이 (r-s, c-s)이고 가장 오른쪽 아랫 칸이 (r+s,c+s)이다(3) 정사각형을 시계 방향으로 한 칸씩 돌린다는 의미이다.(4) 크기가 6X6이고 회전 연산이 (3,4,2)인 경우 문제의 그림과 같이 회전한다.3. 회전 연산이 두 개 이상이면, 연산을 수행한 순서에 따라 최종 배열이 다르다.4. 크기가 5X6이고 회전 ..
https://www.swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWXRF8s6ezEDFAUo 문제정리 1. 삼각형(1,2,3,4) , 사각형(5) , 웜홀(6,7,8,9,10) , 블랙홀(-1)2. 핀볼(1) 게임판 위에서 핀볼 하나가 상, 하, 좌, 우 중 한 방향으로 움직인다(2) 핀볼은 블록이나 웜홀 또는 블랙홀을 만나지 않는 한 현재 방향을 유지하면서 계속 직진한다(3) 블록의 수평면이나 수직면, 벽을 만날 경우 방향을 바꿔 반대 방향으로 돌아온다(4) 경사면을 만날 경우에는 직각으로 진행 방향이 꺾이게 된다(5) 웜홀에 빠지면 동일한 숫자를 가진 다른 반대편 웜홀로 빠져 나오게 되며 진행방향은 그대로 유지된다(6)..