라벨이 BeakJoon인 게시물 표시

BaekJoon 14503, 로봇 청소기

제가 dfs를 사용하는 것에 맛들렸을 때 풀었던 문제들이라 dfs를 엄청 남발하면서 삼성 문제들을 풀었던 것 같습니다. https://www.acmicpc.net/problem/14503 문제는 위 링크에서의 조건에 맞도록 로봇청소기의 이동 경로를 생각하면 되는 간단한 문제입니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 import java.util.Scanner ; public class BaekJoon14503 { static int N, M, r, c, d, count; static int [][] table; static Point current; static boolean isOperate = true ; final static int NORTH = 0 , EAST = 1 , SOUTH = 2 , WEST = 3 ; public static void main (String[] args) { Scanner sc = new Scanner(System. in ); N = sc. nextInt ();M = sc. nextInt (); r = sc. nextInt (); c = sc. nextInt (); current = new Point(r, c);count = 0 ; d = sc. nextInt ();table = new int [N][M]; for ( int ...

BaekJoon 14502, 연구소 dfs 전체 탐색

삼성에서 전체 탐색문제를 상당히 좋아하는 것 같습니다. 벽을 모든 경우로 놔보면서 최대 값을 찾는 문제입니다. 생각해보면 간단한데, 알고리즘에서 중요하다고 생각하는 것은 성능이라고 생각해서 에이 설마 전체로 보는 것은 아니겠지 하고, 다른 방법을 접근하다가..... 너무 오래걸렸던 문제입니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 import java.util.ArrayList ; import java.util.Scanner ; public class BaekJoon14502 { static int N, M, initZeroCount, infectionCount, max, tableOfOneDimension[]; static int [][] table; static ArrayList<Point> viruses = new ArrayList<>(); static Point[] wallPoint = new Point[ 3 ]; public static void main (String[] args) { Scanner sc = new Scanner(System. in ); N = sc. nextInt ();M = sc. nextInt ();max = 0 ; table = new int [N][M]; tableOfOneDimension = new int [N * M]; for ( int i = 0 ; i < N; i...

BaekJoon 14501, 퇴사 dp or dfs

이문제는 dp로도 풀 수있고  dfs로도 풀 수 있는 문제입니다. https://www.acmicpc.net/problem/14501 요즘 DP문제만 엄청나게 풀고 있는데, 아무리 해도 점화식 세우는게 어렵네요 ㅠ 계속 풀다보면 익숙해지겠죠? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 import java.util.ArrayList ; import java.util.Scanner ; public class BaekJoon14501 { static int N, max = 0 ; static int [] T, P; public static void main (String[] args) { Scanner sc = new Scanner(System. in ); Pair[] list; N = sc. nextInt ();T = new int [N + 1 ]; P = new int [N + 1 ];list = new Pair[N + 1 ]; for ( int i = 1 ; i < N + 1 ; i++) { T[i] = sc. nextInt ();P[i] = sc. nextInt (); list[i] = new Pair(i, P[i]); } for ( int i = 1 ; i < list. length ; i++) { dfs(list[i]); } System. ...

BaekJoon 14500, 테트로미노 전체 탐색

이번 문제는 삼성에서 출제 했었던 문제입니다. https://www.acmicpc.net/problem/1874 짜는데 오래걸리긴 했지만,  나름 재미있는 문제였습니다. 주어진 블록으로 만들 수 있는 최대 값을 찾는 문제인데 블록을 만들고 해당 블록으로 전체 탐색을 실행하면 되는 문제였습니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 import java.util.Scanner ; public class BaekJoon14500 { static int N, M; static int [][] table; static int [][][] blocks = new int [ 19 ][][]; public static void main (String[] args) { Scanner sc = new Scanner(System. in ); N = sc. nextInt ();M = sc. nextInt (); table = new int [N][M]; for ( int i = 0 ; i < N; i++) { for ( int j = 0 ; j < M; j++) { table[i][j] = sc. nextInt (); } } initBlocks(); ...

BaekJoon 2794 피보나치

피보나치 수를 구하는 방법입니다 !! https://www.acmicpc.net/problem/1874 하지만 방법이 좀 독특합니다. 왜냐하면  점화식 두개를 이용해서 행렬을 만들고 행렬의 곱으로 한번에 계산하는 방식이죠. MOD연산을 언제할지 헷갈렸지만 무사히 통과했습니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 import java.io.* ; import java.util.HashMap ; public class B2749 { final static int MOD = 1000000 ; static long N; static HashMap<Long, long [][]> matrices = new HashMap<>(); public static void main (String[] args) throws IOException{ BufferedReader br = new BufferedReader( new InputStreamReader(System. in )); BufferedWriter bw = new BufferedWriter( new OutputStreamWriter(System. out )); N = Long. parseLong (br. readLine ()); int ans = (N == 0 ) ? 0 : 1 ; long [][] zeroMatrix = {{ 0 , 0 },{ 0 , 0 }}; long [][] initMatrix = {{ 1 , 1 },{ 1 , 0 }}; ...