목록알고리즘 (90)
삐까냥의 파도타기
1949. 등산로 조성 문제 출처 : https://www.swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5PoOKKAPIDFAUq DFS로 풀었어요. 문제는 어려워 보였는데, 막상 푸니깐 넘나 쉬었쥬? 역시나 문제 이해하는게 제일 중요합니다. 문제가 어려워 보인다 -> 조건이 많다(복잡하다) -> 문제 리딩 꼼꼼하게! 2018년 4월 12일 - 다듬지 않은 코드 (소요시간 39분) package sw; import java.util.Scanner; public class Q1949 { static int mapSize, k, maxValue, result;static int[][] map;static boolean[][] ..
문제 출처 : https://www.swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV4suNtaXFEDFAUf 아놔................ resultCpuNum = canCpuNum; 이 한줄을 추가하지 않아, 디버깅 시간 엄청 잡아먹었네요. 다행인건, 생각한 알고리즘의 문제는 아니었네요. 50개의 테스트 케이스 중에서 49개만 맞다고 나오길래, 예외 테스트 케이스만 생각하다보니,..... 왜케 실수를 하지;;;;;;;;;;; 2018년 4월 12일 - 다듬지 않은 코드 (소요시간 1시간 13분) import java.util.Scanner; public class Q1767 { static int mapSize, cp..
문제 출처 : 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/workbook/view/1152 기출문제라고 하는 백준 사이트의 13개 문제를 풀어 본 후기를 작성하겠습니다. 1. 문제 유형 1번 조건일때는 A작업을, 2번 조건일 때는 B작업을 여러번 수행하는 문제가 많았어요. 따라서 대부분의 문제를 DFS로 풀 수 있었습니다. (물론 다른 방법으로 풀수 있어요.) 다른 글을 보면 DP를 공부하라고 하네요. 하지만 DP는 일주일 동안 공부를 한다고 해도 늘지 않고(글을 작성하는 시기는 시험 일주일 전) DP문제는 없었어요. 확실히 DFS가 중요한 것 같아요. 2. 난이도 해당 링크의 상단 문제들은 문제 이해도가 쉬운 반면에 구현하기가 까다로웠어요. 하단 문제들은 문제 이해도가 어렵고, 그러다 보니, 조건에 맞..
문제 출처 : https://www.acmicpc.net/problem/14502 이 문제를 처음 본 순간 막막했어요. 그런데, DFS라는 것을 알게 된 순간 쭉쭉 풀어나갔습니다. 오랜만에 플러딩 알고리즘도 사용하기도 했어요. 그런데 포문이 너무 많이 돌아간다는 문제가 있어서, 과연 이 방법이 맞나?라는 의구심을 가지고 코딩을 계속 해보니, 정답이 나오네요;;;; 최대 사이즈가 8이라서 가능한걸로 추측해요. 다차원 배열은 .clone()이 먹히지 않는것을 방금 알았어요;;;;;;;;;;;;; 여태 다차원에서 .clone()를 사용했는데;;;;;;;;;; 2018년 4월 9일 - 다듬지 않은 코드 (소요시간 48분) import java.util.Scanner; public class Q14502 { st..
문제 출처 : https://www.acmicpc.net/problem/13460 정답률이 22.63퍼인 이유를 알겠네요. 이 문제를 풀때, 구슬 도착 확인 방법을 입구 근처의 모든 블록들을 파악하는 방식으로 구현했습니다. 해당 방식은 소개된 테스트 케이스를 모두 통과하지만 예외 케이스가 있기 때문에 틀렸다고 나옵니다. 아래 케이스에서 결과가 1로 나오지만 실제 정답값은 2입니다.(입구로 가지 않았지만, 입구 근처에 있기 때문에) # # # ## R # ## . O ## # # # 따라서 현재 움직이는 방향에 따라 도착 구슬을 체크하게 구현했어요. 구슬 움직이기 구현은 12100.2048(EASY) 문제가 많은 도움 됐네요. 12100.2048(EASY) 선행학습을 안했다면 못풀거나, 소요시간이 2시간을..
문제 출처 : https://www.acmicpc.net/problem/12100 이번 문제는 테스트케이스가 적어서,문제 발견하기가 굉장히 어려웠어요.포기하려는 순간에 를 1회만 테스트로 돌리니, 해당 문제를 발견할 수 있었어요. 문제를 해결하기 전에 어느정도까지 생각했냐면비동기인 LinkedList로 구현을 해서 틀리는건가? 까지 생각했어요. 그래서 해당 코드는 어레이리스트로 구현했네요. 문제가 무엇이었냐면 moveBlock에서맵의 값을 queue에 삽입할때0의 값도 추가해서 제대로 된 덧셈 연산이 수행되지 못했습니다.따라서 0이 아닌 값만 추가하여 해당 문제를 해결했어요. 2018년 4월 8일 - 다듬지 않은 시험 코드 (소요시간 1시간 50분) import java.util.ArrayList;imp..