전체 글
-
[자료구조] 우선순위 큐 (+JAVA)자료구조 2024. 12. 2. 14:37
우선순위 큐일반적인 큐는 FIFO(First In First Out) 구조로 먼저 삽입된 값이 먼저 나오게 되는 구조이다.하지만, 우선순위 큐의 경우 FIFO구조가 아닌 우선순위가 높은 순으로 먼저 나오게 되는 구조를 일컫는다.일반적으로 숫자의 경우 오름차순 및 내림차순을 이용하여 우선순위가 높은 순으로 구현을 하게 되고,객체의 경우 비교할 값을 설정하여 우선순위를 지정하게 된다. 우선순위 큐 선언방법import java.util.PriortyQueue;PriortyQueue pq = new PriorityQueue();객체Wrapper 클래스를 이용하여 기본형들을 사용또는, Custom 객체를 이용하여 사용기본 타입Wrapper 클래스byteByteshortShortintIntegerlongLongfl..
-
[그리디 알고리즘] 백준 1715번책/DoIt 알고리즘 코딩테스트 2024. 12. 2. 14:10
문제정렬된 두 묶음의 숫자 카드가 있다고 하자. 각 묶음의 카드의 수를 A, B라 하면 보통 두 묶음을 합쳐서 하나로 만드는 데에는 A+B 번의 비교를 해야 한다. 이를테면, 20장의 숫자 카드 묶음과 30장의 숫자 카드 묶음을 합치려면 50번의 비교가 필요하다.매우 많은 숫자 카드 묶음이 책상 위에 놓여 있다. 이들을 두 묶음씩 골라 서로 합쳐나간다면, 고르는 순서에 따라서 비교 횟수가 매우 달라진다. 예를 들어 10장, 20장, 40장의 묶음이 있다면 10장과 20장을 합친 뒤, 합친 30장 묶음과 40장을 합친다면 (10 + 20) + (30 + 40) = 100번의 비교가 필요하다. 그러나 10장과 40장을 합친 뒤, 합친 50장 묶음과 20장을 합친다면 (10 + 40) + (50 + 20) =..
-
[그리디알고리즘] 백준 11047번책/DoIt 알고리즘 코딩테스트 2024. 11. 27. 14:33
문제준규가 가지고 있는 동전은 총 N종류이고, 각각의 동전을 매우 많이 가지고 있다.동전을 적절히 사용해서 그 가치의 합을 K로 만들려고 한다. 이때 필요한 동전 개수의 최솟값을 구하는 프로그램을 작성하시오.첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000)둘째 줄부터 N개의 줄에 동전의 가치 Ai가 오름차순으로 주어진다. (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2인 경우에 Ai는 Ai-1의 배수) 문제분석동전개수의 최솟값을 묻는 질문이므로, 가격이 큰 동전 부터 거슬러서 개수를 구하면 최소 조건이 된다.그리디 탐색 방법으로 , 각각의 시행 시점의 최솟값이 전체 최솟값이 되기에 그리디 탐색방법으로 사용해도 무방하다- 거스름 돈의 입력은 오름차순..
-
그리디 알고리즘알고리즘 2024. 11. 26. 11:06
그리디 알고리즘이란?그리디 알고리즘 (욕심쟁이 알고리즘)이란?"매 선택에서 지금 이순간 당장 최적의 답을 선택하여, 적합한 결과를 도출하자"라는 모토를 가지는 알고리즘이다.그리디 알고리즘을 선택하면, 매 선택이 그 순간에 대해서는 최적의답이지만 그걸 종합적으로 확인해보면 최적이라는 보장이 있지 않다.즉, 한번의 선택이 다음 선택에는 전혀 무관한 값이어야 하며 매 순간의 최적해가 문제에 대한 최적해일 때 사용해야하는 알고리즘 그리디 알고리즘 핵심 이론그리디 알고리즘 수행과정1. 해 선택 : 현재 상태에서 가장 최선이라고 생각되는 해를 선택2. 적절성 검사 : 현재 선택한 해가 전체 문제의 제약조건에 벗어나지 않는지 검사3. 해 검사 : 현재까지 선택한 해 집합이 전체 문제를 해결할 수 있는지 검사한다.(전..
-
WAR & JAR 차이프로젝트/영화예매 프로젝트 2024. 11. 25. 23:38
WAR 란?웹 애플리케이션에 필요한 코드, 구성파일, 정적리소스, 라이브러리등을 패키징한 배포 파일.단, 내부의 tomcat이 없기에 WAR파일은 WAS에서 실행시켜야함 (독립적으로 실행 불가능)특징으로는, WEB-INF의 내부의 파일들의 경우 외부에서 직접적으로 접근하는 것을 차단할 수 있다. JAR파일의 경우 웹서버가 아닌 JVM에서 실행하는 것이어서 따로 spring security나 다른 방식으로 보완해야하지만 WAR의 경우 웹서버를 이용하므로 WEB-INF에 포함된 파일들의 외부 접근을 막을 수 있다. WAR 파일 내부구조WEB-INF- classes : 자바파일 및 클래스 파일- lib : 프로젝트에서 사용된 모든 jar 파일 위치META-INF- MANIFAST.MF : 메인 클래스 정보..
-
[이진탐색] 백준 1300번책/DoIt 알고리즘 코딩테스트 2024. 11. 24. 23:07
문제세준이는 크기가 N×N인 배열 A를 만들었다. 배열에 들어있는 수 A[i][j] = i×j 이다. 이 수를 일차원 배열 B에 넣으면 B의 크기는 N×N이 된다. B를 오름차순 정렬했을 때, B[k]를 구해보자.배열 A와 B의 인덱스는 1부터 시작한다. 문제분석첫째 줄에 배열의 크기 N이 주어진다. N은 10^5보다 작거나 같은 자연수이다. 둘째 줄에 k가 주어진다. k는 min(10^9, N^2)보다 작거나 같은 자연수이다.10^5 이므로, O(N^2)으로 풀이를 할 경우 메모리 초과가 나온다.이진탐색을 이용하여 풀이를 할 생각을 해야한다. (O(logN))3*3 예시)3 * 3 배열 형성 (N = 3)K 값 : 7[i]/[j] (인덱스)123결과1123-> 1의 배수2246-> 2의 배수3369->..
-
PG 사 연동 및 OAuth 연동프로젝트/영화예매 프로젝트 2024. 11. 23. 17:50
PG 사 연동- 결제전 - 주문번호 생성 - 총 가격 생성 => /api/pay/cart/purchase/create로 구현함 - 결제 진행 - Javascript IAMPORT SDK를 이용 - IMP.request_pay (merchantUID, amount ,pay-method>- 결제완료 - Import UID + payCode(==merchantUID) 값을 이용 - 검증 진행 (우리 서버) - /api/pay/payment/complete 로 구현함 필요한 값paycode : 고유한 주문 번호Amount : 총 금액payMethod : 결제 종류응답값Import 고유번호고유 주문 번호주의)IMP.request_pay로 안하면, 결제 ..
-
[이진탐색] 백준 2343번책/DoIt 알고리즘 코딩테스트 2024. 11. 22. 15:28
문제강토는 자신의 기타 강의 동영상을 블루레이로 만들어 판매하려고 한다. 블루레이에는 총 N개의 강의가 들어가는데, 블루레이를 녹화할 때, 강의의 순서가 바뀌면 안 된다. 순서가 뒤바뀌는 경우에는 강의의 흐름이 끊겨, 학생들이 대혼란에 빠질 수 있기 때문이다. 즉, i번 강의와 j번 강의를 같은 블루레이에 녹화하려면 i와 j 사이의 모든 강의도 같은 블루레이에 녹화해야 한다.강토는 이 블루레이가 얼마나 팔릴지 아직 알 수 없기 때문에, 블루레이의 개수를 가급적 줄이려고 한다. 오랜 고민 끝에 강토는 M개의 블루레이에 모든 기타 강의 동영상을 녹화하기로 했다. 이때, 블루레이의 크기(녹화 가능한 길이)를 최소로 하려고 한다. 단, M개의 블루레이는 모두 같은 크기이어야 한다.강토의 각 강의의 길이가 분 단..