일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- SWEA
- 항해플러스ai후기
- 그리디
- JUnit
- JPA
- 다시보기
- SSAFY
- 항해플러스ai
- 다익스트라
- 백준
- Spring
- 그래프
- 코딩테스트실력진단
- database
- 완전탐색
- 항해솔직후기
- 알고리즘기본개념
- Java
- Union Find
- 코딩테스트
- DFS
- 싸피
- 코드트리
- 트러블슈팅
- 유니온파인드
- 알고리즘
- BFS
- DP
- 자바
- 코테
- Today
- Total
목록2024/02/13 (3)
HwangHub
문제 문제 링크 해석 그리디는 "언제나 최선"인 경우라는 기준이 존재하여, 그 기준을 바탕으로 차례대로 선택하는 것이 가능할 때, 정렬이나 특정 연산을 통해 전체 연산을 최적화하는 알고리즘이다. 이 문제는 그리디 알고리즘 개념학습 마지막 문제이며, 이를 해결하기 위해서는 직관적으로 알 수 있듯 "가장 앞의 숫자가 큰 숫자를 먼저 고른다." 가 첫 번째 기준이 되어야 한다. 그리고 두 번째 조건이 중요한데, "가장 앞자리의 숫자가 동일할 경우, 두 세 번째 숫자도 체크해야 한다."는 게 고려되어야 한다. 즉, 결국 모든 숫자를 체크해야만 할 것 같은 느낌이 든다. 하지만 이를 잘 생각해보면, 일단 앞 자리 기준으로 큰 숫자를 먼저 앞으로 배치하되, 만약 앞자리가 같다면 직접 붙여봐서 더 큰 경우가 될 때의..
문제 링크 해석 이 문제는 그리디를 연습하기 위한 문제로, 그리디 로직을 구성하는 기준에 따라 그리디를 적용할 수 있고 없고가 존재함을 이해할 수 있었다. 회의실을 최대한 많이 잡아야 하는 문제인데, 고려해야 하는 요소가 두 가지이다. 회의 시간이 짧은 것으로 최대한 골라야 많은 회의를 잡을 수 있으며, 겹치지 않도록 시작 시간과 끝 시간을 검사해야 한다. 이 두 가지를 동시에 고려하면서 그리디하게 풀어내기 위해서는 회의가 끝나는 시간을 기준으로 오름차순 정렬을 해야 한다. 이 지점만 캐치할 수 있으면 로직은 어렵지 않다. 코드 public class Main { public static void main(String[] args) throws IOException { BufferedReader br =..
문제 링크 해석 어제 백준을 풀면서 플로이드워셜을 학습하고, 잊지 않기 위해 개념 문제를 하나 더 풀었다. 여기서는 플로이드워셜 로직을 활용하여 "직 간접적으로 각 정점끼리 연결되어 있는지 여부"를 검사하는 로직을 구성하게끔 유도한다. 단순한 문제였으므로 코드로 대신한다. 코드 package 알고리즘연습.codetree.그래프.플로이드워셜; import java.io.*; import java.util.StringTokenizer; public class CodeTree_행렬로주어진간선 { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(..