n^2 배열 자르기
n*n배열을 주어진 left, right 인덱스 범위로 1차원 배열만들기 ex: n = 3, left = 2, right = 5 123 223 333 -> 3,2,2,3 처음에는 단순히 배열을 만들어서 인덱스를 자르려고 함 for(int i=0; i-0; j--){ arr[j][i] = i+1; arr[i][j] = i+1; } } 하지만 제한사항으로 인하여 불가능.... 1 ≤ n ≤ 10^7 0 ≤ left ≤ right < n^2 right - left < 10^5 해결방안 1. 2차원 배열의 값은 좌표 x,y의 max값 + 1로 구성된다. 값 (x, y) 1 (0,0) 2 (0,1) 3 (0,2) 2 (1,0) 2 (1,1) 3 (1,2) 2. 인덱스(left ~ right)의 좌표 x,y를 알 ..
더보기
게임 맵 최단거리
조건 1. 사용자는 무조건 map의 1,1에 위치하고, 상대팀 진영은 n,m에 위치한다. 2. 동서남북만 이동할 수 있고, 벽은 0, 갈수 있는길은 1이다. 전형적인 최단거리 탐색 최소값을 찾기 위하여 시간을 줄이기 위하여 bfs로 탐색하였다. 문제풀이 : BFS로 최단거리 탐색 import java.util.LinkedList; import java.util.Queue; public class Bfs { private static int[] dx = {-1,0,1,0}; private static int[] dy = {0,1,0,-1}; public class Point{ int x; int y; int cnt; public Point(int x, int y, int cnt){ this.x = x; t..
더보기