99클럽 코테 스터디 10일차 TIL (미들러): [백준][Java] 18352 특정 거리의 도시 찾기 - 실버2
·
ProblemSolve/항해99 코테스터디
문제 보기https://www.acmicpc.net/problem/18352  풀이오늘도 다익스트라 문제가 나왔다.요즘 자주 보는 것 같다고 생각했는데 내가 챌린지 문제도 같이 풀어서 그런 것 같다. 핵심적인 부분은 각 노드까지의 최단거리를 구하는 부분이다.Queue queue = new PriorityQueue();int[] dist = new int[N + 1];boolean[] visited = new boolean[N + 1];for(int i = 1; i 우선 본격적인 탐색을 시작하기 전 단계이다.우선순위 큐를 만들고 시작 노드를 집어 넣는다. 여기서 Node 클래스는 노드 인덱스와 거리로 구성되어 있다.그리고 우선순위는 거리가 작은 순이다. 필연적으로 가까운 순 부터 방문하게 된다는 뜻이다.이..
99클럽 코테 스터디 9일차 TIL (챌린저): [프로그래머스][Java] 다단계 칫솔 판매 - level3
·
ProblemSolve/항해99 코테스터디
문제 보기https://school.programmers.co.kr/learn/courses/30/lessons/77486 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr  풀이맨 처음엔 그래프 관계니까 그냥 BFS 방식으로 풀까? 했는데 시간 초과가 났다.다시 생각해 보니 부모는 꼭 한 명이므로 굳이 그래프 탐색을 사용할 필요가 없다.부모노드가 없거나, 매출의 10퍼센트가 1원 미만으로 떨어졌을 때 반복문을 종료하면 될 뿐이다. 1. 해쉬맵 사용HashMap map = new HashMap();for(int i = 0; i 본격적인 계산에 앞서 나는 이 이름의 enroll에서의 인덱스가 몇 번인지 알아..
99클럽 코테 스터디 8일차 TIL (미들러): [백준][Java] 2644 촌수계산 - 실버2
·
ProblemSolve/항해99 코테스터디
문제 보기https://www.acmicpc.net/problem/2644  풀이어제 풀었던 문제와 거의 동일한 흐름이라 바로 풀어버렸다.https://mountain-noroo.tistory.com/226 99클럽 코테 스터디 7일차 TIL (챌린저): [백준][Java] 1240 노드사이의 거리 - 골드5문제 보기https://www.acmicpc.net/problem/1240  풀이BFS로 문제를 풀었다.시작 노드부터 현재 노드까지의 길이가 얼만지 계속 기록하고현재 노드가 입력된 노드에 도달할 시거리를 출력하였다.  while (!qmountain-noroo.tistory.com 접근 방식은 동일하나 노드 사이에 거리가 주어지지 않으니새 노드를 탐색할 때 무조건 1만 더하면 된다는 차이가 있다. 덕..
99클럽 코테 스터디 7일차 TIL (챌린저): [백준][Java] 1240 노드사이의 거리 - 골드5
·
ProblemSolve/항해99 코테스터디
문제 보기https://www.acmicpc.net/problem/1240  풀이BFS로 문제를 풀었다.시작 노드부터 현재 노드까지의 길이가 얼만지 계속 기록하고현재 노드가 입력된 노드에 도달할 시거리를 출력하였다.  while (!queue.isEmpty()) { int[] node = queue.poll(); if(node[0] == endNode) { bw.write(node[1] + "\n"); break; } for(int j = 0; j BFS를 돌리는 부분인데 특별한 부분은 없다. 나는 Java에서 여러 변수를 한 곳에 담을 필요가 있을 때 같은 타입일 경우 주로 배열을 사용한다.클래스로 만드는 건 귀찮아서 그렇다.편한 쪽으로 하면 좋을 것 같다.  ..
99클럽 코테 스터디 7일차 TIL (미들러): [프로그래머스][Java] 모음사전 - level2
·
ProblemSolve/항해99 코테스터디
문제 보기https://school.programmers.co.kr/learn/courses/30/lessons/84512 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr  풀이처음엔 수학적으로 풀고 싶었는데 하다 보니 머리가 아파서살짝 야매인 것 같지만 DFS를 사용해 해결하였다.  private static void dfs(List strings, char[] words, int depth, String cur) { if(depth >= 5) { return; } for (char c : words) { String word = cur + c; string..
99클럽 코테 스터디 6일차 TIL (챌린저): [백준][Java] 2458 키 순서 - 골드4
·
ProblemSolve/항해99 코테스터디
문제 보기https://www.acmicpc.net/problem/2458  풀이 미들러 문제가 이미 해결한 문제라 챌린저만 풀었다. 일단 그래프 탐색이 필요한 문제이다.1. 자신으로부터 진행방향으로 탐색한 노드(자신보다 키가 큰 모든 사람들)2. 자신으로부터 역방향으로 탐색한 노드(자신보다 키가 작은 모든 사람들)1, 2번을 탐색해서 모든 노드 탐색이 가능하다면 자신의 키 순서를 정확하게 알 수 있다. 그림으로 보면 아래와 같다.예시 그림에서 4번 노드를 기준으로 탐색해보자.진행방향 탐색(주황)역방향 탐색(빨강)자신을 합하면 모든 노드를 탐색할 수 있다. 다른 노드들을 기준으로 탐색하면 어떻게 되는지 보자. 꼭 하나씩 탐색하지 못 하는 코드가 생긴다.  private static void dfsBac..
99클럽 코테 스터디 5일차 TIL (챌린저): [백준][Java] 2457 공주님의 정원 - 골드3
·
ProblemSolve/항해99 코테스터디
문제 보기https://www.acmicpc.net/problem/2457  풀이1. 정렬 방법 flowers.sort(new Comparator() { @Override public int compare(int[] o1, int[] o2) { if(o1[2] == o2[2]) { return o2[3] - o1[3]; } return o2[2] - o1[2]; } });시작, 끝이 주어지기 때문에 정렬 기준을 무엇으로 해야 할지 감이 안 잡힐 수 있다.나는 끝나는 날짜를 기준으로 내림차순 정렬을 했다.유효기한이 긴 순으로 살펴보며 개화 시기가 이전 꽃이 진 날 보다 작거나 같은 것을 찾았다.  2. 비교 방법in..
99클럽 코테 스터디 5일차 TIL (미들러): [백준][Java] 24444 알고리즘 수업 - 너비 우선 탐색 1 - 실버2
·
ProblemSolve/항해99 코테스터디
문제 보기https://www.acmicpc.net/problem/24444  풀이 어제 문제의 BFS 버전이라 역대급 속도로 풀었다.  private static void bfs(List[] arr, int r, int[] order) { boolean[] visited = new boolean[arr.length + 1]; Queue queue = new LinkedList(); visited[r] = true; queue.add(r); while (!queue.isEmpty()) { int cur = queue.poll(); order[cur] = count++; for(int i : arr[cur]) { if (!visited[i..