분류 전체보기 (106) 썸네일형 리스트형 백준10157-자리배정 java package a0213; import java.util.*; public class B10157 { static int garo; static int sero; static boolean safe(int i, int j) { if(0 순열, 조합, 부분집합 순열, 조합, 부분집합은 탐색에서 자주 출제되는 유형이다. 항상 헷갈렸었는데 정리해보자 순열: 순서가 의미있다! 순열이란 ? 순서가 의미있는 조합이다. 즉, 순서가 달라지면 그 의미도 달라진다. 예를들어) 주사위를 3번 던졌을때 나올수있는 모든 수의 순서를 구하라 이경우에 (1,3,5)와 (3,1,5)는 다른 경우이다. 조합과 다르게 현재 선택된 수보다 작은수를 다음에 선택할수있다 -> visit배열을 이용하여 처리한다. 순열의 모든 경우를 구하려면 어떻게 해야할까? for문을 돌리며 result배열의 각 index에 수를 넣는다 import java.util.*; public class 순열_연습 { static int[] result; static int[] visit; static int[] dic.. 2차원 배열 원소 한칸씩 옮기기 달팽이 배열에 이어 2차원 배열에서 원소들을 한칸씩 이동하는 경우도 있을 수 있다. 이 경우도 달팽이 배열을 찍는것과 크게 다르지 않다. 다음과 같이 원소를 한 칸씩 시계방향으로 이동시켜야 한다고 해보자. 두 변수의 값을 switching할때처럼 그냥 바꿀 수는 없고 값을 임시저장할 변수를 이용하는데 이 경우도 그 아이디어는 같다. 어느 위치의 값을 임시저장 해줄것인지는 자유이지만 여기서는 (0,0)이라고 하겠다. 여기서 (0,0)좌표의 값을 임시저장 했으므로 바로 밑에있는 (1,0)의 값을 (0,0)으로 가져와야한다. 즉, 시계방향으로 한칸씩 이동시킬 때, 현재 위치에 놓일 다음 값은 반시계 방향으로 찾으러 가야한다. 따라서 next값의 방향이 이동방향과 반대가 되는것이다. 원소 한칸씩 옮기기는 이 점.. 달팽이 배열 찍기 가끔 2차원 배열 구현 문제에서 달팽이 모양으로 방문순서를 좌표에 찍도록 하는 문제가 있다. 이러한 문제유형에서 응용된 많은 문제들이 있는데 만날때마다 한숨부터 나왔다. 4방향의 범위를 오차없이 생각해내는 것부터 헷갈리고 가끔 한끝차이로 오류가 날떄는 그걸 찾느라 많은 시간을 보냈다. 어려운건 아니지만 실수를 많이 유발하는 유형이었다. 그래서 구글링을 해봤고 그 중 가장 헷갈리지 않는 방법을 찾았다!! 2차원 배열의 가로 세로 크기 입력 -> 그 모양에 맞게 달팽이 배열 만들기 내가 생각했을때 가장 쉬운 방법은 방향을 나타내는 배열을 이용하는 사방탐색의 방법을 응용하는것이다. 이 아이디어는 다음과 같다. 만약 아래 그림과 같이 방문순서대로 숫자를 배열에 입력후 출력해야 한다고 가정해보자. 사방탐색의 아이.. 백준2635-수 이어가기 java package a0213; import java.util.*; public class B2635 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int num = sc.nextInt(); ArrayList result = new ArrayList(); ArrayList tmp; for(int i=num/2; i 백준2578-빙고 java package a0210; import java.util.*; public class 빙고 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int[][] arr = new int[5][5]; for(int i=0; i 백준2564-경비원 java package a0210; import java.util.*; public class 경비원 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int garo = sc.nextInt();//가로 크기 int sero = sc.nextInt();//세로 크기 int cnt = sc.nextInt();//지점 개수 int[][] arr = new int[cnt][2]; for(int i=0; i 백준2563-색종이 java package A0209; import java.util.*; public class 색종이2563 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int num = sc.nextInt(); int[][] arr = new int[100][100]; for(int tc=1; tc 이전 1 ··· 7 8 9 10 11 12 13 14 다음