일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 30 | 31 |
- 파이썬
- 학점
- 알고리즘
- 문법 정리
- gradle
- 자바
- 티스토리
- hyperledger
- 오라클
- auto configure
- spring
- SQL
- 운영체제
- oracle
- 초대장
- JVM
- 프로젝트
- 자바 프로젝트
- 백준 알고리즘
- K6
- 파이썬 소스
- jsp
- MongoDB
- 리눅스
- resilience4j
- c#
- 유사코드
- smart cast
- 오라클 디비
- dynamic query
- Today
- Total
목록3학년/알고리즘 (14)
모종닷컴
알고리즘 설계 패러다임이란 주어진 문제를 해결하기 위해 알고리즘이 채택한 전략이나 관점을 말한다. 무식하게 풀기'무식하게 푼다'라는 말은 컴퓨터의 빠른 계산 능력을 이용해 가능한 경우의 수를 일일이 나열하면서 답을 찾는 방법을 의미한다. 이렇게 가능한 방법을 전부 만들어 보는 알고리즘들을 가리켜 흔히 "완전 탐색"이라고 한다. 재귀 호출과 완전 탐색재귀 호출(=재귀 함수)이란 자신이 수행할 작업을 유사한 형태의 여러 조각으로 쪼갠 뒤 그 중 한 조각을 수행하고, 나머지를 자기 자신을 호출해 실행하는 함수를 말한다. 재귀 함수에는 '더 이상 쪼개지지 않는' 최소한의 작업에 도달했을 때 답을 곧장 반환하는 조건문(='거저 사례')을 포함해야 한다.ex) if(n==1) return 1; 재귀 호출은 기존에 ..
알고리즘이 존재가능한 모든 입력에 대해 정확하게 동작한다는 사실을 증명할 수 없다. 따라서 알고리즘의 정확한 증명은 각종 수학적인 기법을 기반으로 되야한다. 수학적 귀납법과 반복문 불변식 수학적 귀납법은 반복적인 구조를 갖는 명제들을 증명하는 데 유용하게 사용되는 증명 기법. 귀납법은 크게 3가지로 나뉜다.단계 나누기 = 증명하고 싶은 사실을 여러 단계로 나눈다. 첫 단계 증명 = 첫 단계에서 증명하고 싶은 내용이 성립함을 보인다. 귀납 증명 = 첫 단계에서 증명하고 싶은 내용이 성립하면, 다음 단계에서도 성립함을 보인다. 알고리즘은 어떠한 형태로든 반복적인 요소를 가지고 있기 때문에, 귀납법은 알고리즘의 정당성을 증명할 때 가장 유용하게 사용되는 기법. 반복문 불변식 = 반복문의 내용이 한 번 실행될 ..
1.비슷한 문제를 풀어본 적이 있던가? 형태가 비슷하거나 관련된 문제를 풀어 본 적이 있다면 이전에 적용했던 방법과 비슷한 접근 방법을 사용할 거라고 예측할 수 있다. 따라서 기존에 접했던 문제가 온전히 경험이 되기 위해 그 원리를 완전히 이해하고 변형할 수 있어야 한다. 2. 단순한 방법에서 시작할 수 있을까? 비슷한 문제를 본 적이 없거나, 비슷한 문제의 해법이 곧장 적용되지 않는다면 "무식하게 풀 수 있을까?"라는 질문으로 시작한다. 이렇게 만든 단순한 알고리즘에 효율적인 자료 구조를 사용하거나, 계산 과정에서 같은 정보를 두 번 중복으로 계산하지 않는 등의 최적화를 적용해서 충분히 빨라질 때까지 알고리즘을 개선하는 식으로 문제를 풀 수 있다. 3. 내가 문제를 푸는 과정을 수식화할 수 있을까? 손..
솔직히 이해를 정확히 하고 푼 문제는 아니지만 책에 나와있는 공식이 제대로 되는 것 보고 그냥 구현만 해보았다. 맴찟 ㅠ package baekjoon; import java.util.Scanner; public class Exam2294 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int k= sc.nextInt(); int[] coin = new int[n];//각 동전의 값 int[] num = new int[k+1];//최소값 for(int i=0;i
어거지로 푼 것 같다.. package sample; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.math.BigInteger; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.Comparator; import java.util.List; public class Exam2870 { public static void main(String[] args) { BufferedReader br; String[] str = null; List l..
평범한 재귀함수이다 import java.util.Scanner; public class Main { static int n1 =0; static int n2 =0; static int fibonacci(int n){ if(n==0){ n1++; return 0; }else if(n==1){ n2++; return 1; }else{ return fibonacci(n-1)+fibonacci(n-2); } } public static void main(String[] args) { Scanner sc = new Scanner(System.in); int select = sc.nextInt(); int i=0; while(i
재밌어 보여서 해봤다 내 이름은 힘든 삶이였다. package sample; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Exam15352 { public static void main(String[] args) { BufferedReader br ; int count=0; String[] str=null; try { br = new BufferedReader(new InputStreamReader(System.in)); count = Integer.parseInt(br.readLine());//횟수 입력 str = new String[count];//배열 생성..
다들 기초라고 하던대 나는 오래걸렸던 문제.. 주요 풀이 과정은 먼저 받은 시간값들에 대해서 종료 시간을 기준으로 정렬+(종료 시간이 같다면 스타트를 빨리 하는 걸 우선)을 한 번 합니다. 그렇게 되면 1,11,22,22,33,33,4 같은 방식으로 시간이 들어와도 계산이 됩니다. import java.util.Collections; import java.util.Scanner; import java.util.Vector; //최소값 , 시작-종료 public class Exam1931 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int num = sc.nextInt();//미팅 갯수 Vector meets..
import java.util.ArrayList; import java.util.List; import java.util.Scanner; import java.util.StringTokenizer; public class Hello3 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String input = sc.nextLine(); StringTokenizer tokenizer = new StringTokenizer(input," "); System.out.println(tokenizer.countTokens()); sc.close(); } }
코드 public class Main { public int M[][] = new int[100][100]; public int getMin(int a, int b, int c) { int min = a; if (min > b) min = b; if (min > c) min = c; return min; } public int getDistance(String a, String b) { for (int i = 0; i < a.length(); i++) { M[i][0] = i; } for (int j = 0; j < b.length(); j++) { M[0][j] = j; } for (int i = 1; i < a.length(); i++) { for (int j = 1; j < b.length(); j..