목록코딩/백준 알고리즘 (97)
삐까냥의 파도타기
현재 위치한 계단까지의 최대값을 저장하며 앞으로 나아가는 로직. 연속 세칸을 밟을수 없으니, 현재위치에서 2칸 앞으로 가는 경우와 1칸 밟고 2칸 가는 경우를 계산해 나가면 됩니다.해당 로직의 문제는 한칸 계산이 불가능합니다.따라서 도착지점의 최대값은 도착 전칸의 최대값에 도착칸의 value를 더하여 max값을 계산하면 됩니다.또한, 시작점은 0번째에서 시작했다고 가정을 하면 1번과 2번칸을 밟을 수 있으므로,계산 시작부터 1번과 2번칸의 최대값은 각 칸의 value로 설정합니다. import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.StringTokenizer; public class Q2579 { static i..
DP는 값을 저장하며 나아가는 방식이 기본입니다. 1부터 N까지의 숫자를 만들수 있는 경우의 수를 더하며 나아가는 로직입니다. import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.StringTokenizer; public class Q9095 {static int[] array;public static void main(String[] args) throws Exception {BufferedReader br = new BufferedReader(new InputStreamReader(System.in));StringTokenizer st = new StringTokenizer(br.readLine());int t..
배열을 활용하여, 1부터 N까지의 숫자를 만들수 있는 최소 횟수를 저장하며, 다음 번호 (i+1, i*2, i*3) 배열에 회수를 저장하는 로직입니다. array[2] = 1번, array[3] = 1번, array[4] = 2번, array[5] = 3번, array[6] = 2번, array[7] = 3번 등등 import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.StringTokenizer; public class Q1463 { static int[] array;public static void main(String[] args) throws Exception {// TODO Auto-generated meth..
문제 출처 : https://www.acmicpc.net/problem/2638 코딩 퀴즈만 너무해서 그런지, 힘들어요.머리도 안돌아가네요. 2018년 4월 11일 - 약간 다듬은 코드 (소요시간 43분) import java.util.Scanner; public class Q2638 { static int ySize, xSize;static int[][] map, mapClone;static boolean isContinue = true;static int[]moveY = {-1, 0, 1, 0},moveX = {0, 1, 0, -1};public static void main(String[] args) {Scanner sc = new Scanner(System.in);ySize = sc.nextInt..
문제 출처 : https://www.acmicpc.net/problem/1600 해당 문제를 푸는데 어려움이 있었습니다. 초기 코드를 1시간 정도 작성하고, 제출한 결과 정답이 중간정도 맞다가 틀렸습니다. 이후 30분 동안, 알고리즘을 생각했습니다. 아무리 생각해도, 알고리즘(로직)은 맞는데, 정답은 중간정도 맞다가 틀렸다고 나왔네요. 코드를 계속 수정하고, 수정하고 수정했는데도 틀렸습니다. 이 문제는 다음날(4월 11일) 문제를 다시 읽으며 해결할 수 있었어요. 다른 문제와는 다르게, 입력에서 map의 "가로길이"부터 주어지는것을 발견했습니다. 으.............................. 시험용 BFS공부 중이기 때문에, 클린 코딩보다는 하드 코딩 중인데, 덕분에 코드를 어느정도 다듬었네요..
문제 출처 : https://www.acmicpc.net/problem/1938 14503.로봇청소기와 13460.구슬탈출2 의 문제를 합한 느낌이네요. 이동시키지만, 세개의 나무가 이동해야 된다는 점에서 까다로웠어요. 올림피아드 고등부 2번 문제!!!.............. BFS로 풀었습니다. 대나무의 center 좌표와, 현재 가로, 세로상태, 카운트를 가지는 객체를 만들어줬고, 상, 하, 좌, 우, 회전이 가능할 경우(공간이 있을 경우) 해당 동작을 수행하도록 구현했어요. 처음에는 처음에는 대나무 세좌표를 모드 저장했지만, 객체 복사 문제로, 센터 좌표값만 저장하도록 했습니다. 불가능 할 경우에는 0이 나오도록 구현을 해야해요. 2018년 4월 10일 - 다듬지 않은 코드 (소요시간 : 1시간 ..
문제 출처 : https://www.acmicpc.net/problem/2468 무려 초등부 문제!! 힌트를 주자면, 모든 영역의 높이가 동일할 경우도 생각해야 하네요. 2018년 4월 10일 - 다듬지 않은 코드 (소요시간 38분) import java.util.Scanner; public class Q2468 { static int[][] map, newMap;static int size;static int result = 1;public static void main(String[] args) {Scanner sc = new Scanner(System.in);size = sc.nextInt();map = new int[size][size];int min = 0, max = 0;for (int i =..
문제 출처 : https://www.acmicpc.net/problem/11403 DFS 입니다. dsf에 익숙치 않아 아직은 어버버 거리네요. import java.util.Scanner; public class Q11403 { static int[][] a;static int num;public static void main(String[] args) {Scanner sc = new Scanner(System.in);num = sc.nextInt();a = new int[num][num];for ( int i = 0; i < num; i++ ) {for ( int j = 0; j < num; j++ ) {a[i][j] = sc.nextInt();}}for ( int y = 0; y < num; y++..
문제 출처 : https://www.acmicpc.net/problem/1697 BFS입니다. DFS로는 답이 안나오네요. import java.util.LinkedList;import java.util.Queue;import java.util.Scanner; public class Q1697_2 { public static void main(String[] args) {Scanner sc = new Scanner(System.in);int start = sc.nextInt();int goal = sc.nextInt();if ( start >= goal ) {//도착 장소가 더 작으면 빼기밖에 못하니 바로 계산System.out.println(start-goal);return;}int max = goal..
문제 출처 : https://www.acmicpc.net/problem/1260 기본 깊이우선 탐색 구현과 너비우선 탐색 구현입니다. 처음 구현하면서 학습한 블로그 주소 남깁니다. -> http://mygumi.tistory.com/102 import java.util.LinkedList;import java.util.Queue;import java.util.Scanner; public class Q1260 { public static void main(String[] args) {Scanner sc = new Scanner(System.in);int N = sc.nextInt();int M = sc.nextInt();int V = sc.nextInt();int[][] A = new int[N][N];f..