목록코딩 (163)
삐까냥의 파도타기
현재 위치한 계단까지의 최대값을 저장하며 앞으로 나아가는 로직. 연속 세칸을 밟을수 없으니, 현재위치에서 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/15686 음..음.. 다듬지 않은 코드 import java.util.ArrayList;import java.util.Scanner; public class Q15686 {static int[][] map;static int mapSize, chickenNum, result = -1;static boolean[] isVisit;static ArrayList chickenList = new ArrayList();public static void main(String[] args) {Scanner sc = new Scanner(System.in);mapSize = sc.nextInt();chickenNum = sc.nextInt();map = new..
https://www.acmicpc.net/problem/15685 어렵다고 느껴졌네요. 특히 90도 회전하는 부분이요. 정답률 54%라는게 안믿겨질정도로... 공간 효율성 때문에 스택으로 처리하면 되겠지만, 배열을 사용한 시험용 코드이기 때문에 비효율적입니다. 2018년 5월 23일 - 다듬지 않은 코드 import java.util.Scanner; public class Q15685 {static int size = 101;static boolean[][] resultMap = new boolean[size][size];static int finalGeneration;public static void main(String[] args) {Scanner sc = new Scanner(System.in)..
문제 출처 : https://www.acmicpc.net/problem/15684 음.... 맨 첨에는 DP문제로 생각해서 예제를 통해서 규칙을 찾아봤어요. 규칙이 있긴 한데, 이를 구현하기는 어렵다 생각해서 DFS 방식으로 풀었어요. 어느정도 제한 조건이 있어서, 시간 초과에는 걸리지 않았네요. 사다리 삽입 가능한 부분과 삽입한 부분, 삽입 불가능한 부분을 구분하는 것이 핵심인것 같네요. 삽입 불가능한 부분 덕분에 더 효율적으로 코드를 구현할 수 있었어요. 삽입 불가능한 부분은 사다리가 놓여져있는 공간의 좌우 공간입니다. 사다리를 추가할 때마다 좌우에 추가하지 못하게끔 세팅해야해요. 그리고 i번째의 결과가 i번인지 확인하는 작업은 사다리 개수가 짝수개일때만 해야합니다. DP방식으로 풀기위해 규칙을 찾아..
문제 출처 : https://www.acmicpc.net/problem/15683 음... 뭐랄까... 제가 짠 코드의 함정을 찾는게 좀 어려웠어요. 변수명도 너무 헷갈려서 좀 어려웠네요. 2018년 5월 19일 - 다듬지 않은 코드 (소요시간 : 1시간 50분) import java.util.ArrayList;import java.util.LinkedList;import java.util.Scanner; public class Q15683 { static ArrayList cctvList = new ArrayList();static int min = 0, y, x;public static void main(String[] args) {Scanner sc = new Scanner(System.in);y ..
1952. [모의 SW 역량테스트] 수영장 https://www.swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5PpFQaAQMDFAUq dfs없이 풀수 있게다 싶어서, 하드 코딩을 했는데, 결국 dfs로 풀었네요. dfs로 풀때, where == 11인 경우를 생각하지 않아서, 라이브 코딩하며 코드만 정리했네요, 하나하나씩 찍어보며, 디버깅을 했고, 문제를 풀었습니다. 여러분 자신의 생각이 맞다고 판단했지만, 답이 틀렸을 때 로그나, 현재 상황을 찍어보세요. (사실 코딩 테스트를 준비하며 로그나 출력을 계속 찍어보긴 했는데, 오늘은 귀차니즘으로 찍어보기 싫었어요.) 이렇게 코딩테스트용 디버깅 레벨이 상승했습니다. (로그 찍..
1953. 탈주범 검거 https://www.swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5PpLlKAQ4DFAUq DFS입니다. 가장 핵심은 이미 검사한(방문한) 길을 검사하지 않는 것입니다. 하지만 시간이라는 개념이 있기 때문에, 무조건 검사(방문)를 했다고 해서, 검사를 안하면 안됩니다. 새로운 맵을 만들어서, 해당 길(블록)을 검사한 시간을 적어두고, 현재 검사하려는 시간보다 더 짧은 시간이 블록에 기록되어있으면 검사할 필요가 없고, 현재 시간보다 더 오래된 시간이 블록에 기록되어 있으면 검사를 해야합니다. 짧은 시간일 수록 앞으로 검사할 블록이 많아지기 때문이죠. 2018년 4월 15일 - 다듬지 않은 코드 (소요..
2115. 벌꿀채취 https://www.swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5V4A46AdIDFAWu 이게 55프로의 정답률. 이것저것 섞여있어서 문제를 보자마자 머리아팠어요. 2018년 4월 14일 - 다듬지 않은 코드 (소요시간 45분) import java.util.Scanner; public class Q2115 { static int mapSize, size, maxValue, maxResult;static int[][] map;public static void main(String[] args) {Scanner sc = new Scanner(System.in);int testCase = sc.nextI..