목록전체 글 (260)
컴퓨터공학 💻 도서관📚
문제 정의M 이상 N 이하의 수가 나열되어 순서에 상관없이 나열되어 있다고 할 때 각 수가 몇개인지 세어보는 방법을 구현해봅시다. 가령 20세부터 100세 이하의 사람들이 어느 한 장소에 머물고 있다고 할때 연령대에따라 혹은 각 나이에 따른 인원을 체크해볼 수 있습니다. 수행 시간 : O(n) , n : 데이터의 개수 테크닉 : 기준점을 순차적으로 높여 분류하는 테크닉 반대로 만들면? --> 기준점으로 순차적으로 낮춰서 분류하면 된다.ex) if ( age > 90 )else if ( age > 80 )else if ( age > 70 )...else if ( age >= 20 ) public class Counting { public static void main(String[] args) ..
경우의 수모든 경우에 대하여 탐색하여 결과를 찾는 문제문제의 범위가 간단한 경우 완전 탐색으로 모든 해를 찾아보는 방식수학에서 수열이나 조합과 같은 문제를 해결하는데 사용심각한 인플레이션을 겪고 있는 어느나라에서 1만원, 2만원, 5만원, 10만원 20만원 50만원 여섯가지 지폐를 사용하고 있다. 배고파씨는 100만원 어치 빵을 사려고 마트에 가서 돈을 내려다 여섯 가지 지폐를 이용하여 100만원 어치 빵을 사는 방법이 모두 몇 가지인지 궁금해 졌다. 지불하는 방법은 모두 몇 가지가 있을까?예를 들어 1만원 10장, 10만원 4장, 50만원 1장 으로 100만원을 지불 할 수 있다.모두 몇가지인지 구하세요 public class BruteForceSearch { public static void mai..
그리디(Greedy) 알고리즘다른 용어로 탐욕 알고리즘이라고도 함지금 상황에서 가장 좋은 해결책을 찾는 알고리즘으로 실제 여러 알고리즘 테스트에서도 흔히 볼 수 있는 문제중 하나임여러 조합에 따른 그 해를 찾는 경우가 많고 이때 제시되는 대부분의 조건은 "가장 금액이 큰 순서부터" 라던가 "가장 면적이 큰 타일을 우선적으로" 등의 방식으로 제시이 알고리즘은 조건이 명확할 때 정확한 답을 찾을 수 있다문제 정의가게에 간 철수는 8370원 어치 물건을 구매하였습니다. 철수에게는 500원짜리 20개 100원짜리 20개 50원짜리 20개 10원짜리 20개의 동전이 있습니다. 철수는 금액을 지불 할 때 단위가 큰 동전부터 지불하려고 합니다. 철수가 지불하게 되는 각 동전의 개수를 구하세요( 10원이 모여서 50원..
// 재귀함수 버전public int fibonacciRecur(int n) { if (n == 0) return 0; if (n == 1) return 1; return fibonacciRecur(n - 1) + fibonacciRecur(n - 2);} // 반복문 버전public int fibonacciIter(int n) { int ppre = 0; int pre = 1; int current = 0; if (n == 0) return 0; if (n == 1) return 1; for (int i = 2; i // 반복문 + 배열 버전public int fibonacciMem(int n) { value[0] = 0; value[1] = 1; if (n == ..
2025년 한 인상 깊은 일들 1. 뮐러를 좋아한지 10년 만에 직관 가서 뮐러를 봤다. (2025. 3. 8 ?)2. 엄마에게 내가 직접 만든 떡볶이를 요리해줬다. (요리의 매력을 알아가는 중) (2025. 12. 30 화)3. 살면서 한 번은 꼭 가보고 싶었던 해외 봉사대를 갔다. (2025. 2. 15 ?)4. 군적금으로 내 컴퓨터를 처음 가져봤다 (2025. 1. 19 ?)5. 태릉교회를 다니게 되었다
Chapter8/8-06 · master · easyspubjava / javacoursework · GitLab Chapter8/8-06 · master · easyspubjava / javacoursework · GitLabGitLab.comgitlab.com 밑에 코드에서는 스택을 이용하여 이전에 방문했던 위치를 저장했고 출구가 존재하면 출구로 나오고 , 존재하지 않으면 쭉 되돌아와서 입구로 나온다고 한다 시작 지점은 0으로 벽을 1로 설정한다 Move 는 움직이는 좌표를 뜻하고 동서남북 돌려가면서 새로운 좌표를 구하고 그 좌표가 방문하지 않은 곳이면 그 좌표를 가진 새로운 객체를 생성해준다. 그리고 동서남북 중에 어디까지 봤는지에 대한 정보(direction)도 같이 저장해둔다. 배열은 행렬 ..
다익스트라 알고리즘 : 시작노드가 정해져 있고 , 시작노드에서 모든 노드로 가는 데 걸리는 최단거리를 구하는 알고리즘 여기에서 y1 의 의미는 기준노드 0에서 1까지의 거리를 말한다C1,2 의 의미는 1번 노드에서 2번 노드까지의 거리를 말한다. class MyGraph{ private int count; //노드 수 private int[][] vertexMatrix; // matrix로 그래프 표시 private int[] distance; // 특정 노드에 대한 각 노드의 최단 거리 private boolean[] visited; // 노드 방문 여부 저장 private static int UNLIMIT = 99999..
[ 수정 후 ] [ 수정 전 ] package tmp;import javax.swing.*;import java.awt.*;import java.util.concurrent.*;public class TimerAlertApp extends JFrame { private JTextField timeField; private JButton startButton; private JLabel remainingTimeLabel; private ScheduledExecutorService scheduler; // ScheduledExecutorService 는 인터페이스다 private int remainingSeconds; public TimerAlertApp() { ..
