문제 https://www.acmicpc.net/problem/1940 1940번: 주몽 첫째 줄에는 재료의 개수 N(1 ≤ N ≤ 15,000)이 주어진다. 그리고 두 번째 줄에는 갑옷을 만드는데 필요한 수 M(1 ≤ M ≤ 10,000,000) 주어진다. 그리고 마지막으로 셋째 줄에는 N개의 재료들이 가진 고 www.acmicpc.net 코드 package org.kyhslam.DoItAlgorithm.ch02; import java.util.Arrays; import java.util.Scanner; public class p1940 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int N = sc.ne..
🔗 문제 https://www.acmicpc.net/problem/11660 11660번: 구간 합 구하기 5 첫째 줄에 표의 크기 N과 합을 구해야 하는 횟수 M이 주어진다. (1 ≤ N ≤ 1024, 1 ≤ M ≤ 100,000) 둘째 줄부터 N개의 줄에는 표에 채워져 있는 수가 1행부터 차례대로 주어진다. 다음 M개의 줄에는 네 www.acmicpc.net 💻 코드 package org.kyhslam.bakjun; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.Arrays; import java.util.Scanner; import java.util.StringTokenizer; public clas..
🔗 문제 https://leetcode.com/problems/3sum/ 3Sum - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 📝 풀이 순서대로 정렬하면 풀이가 더 간단해진다. 중복저장되는 것을 방지하기 위해 아래 코드 추가 💻 코드 (java) class Solution { public List threeSum(int[] nums) { List answerList = new ArrayList(); Arrays.sort(nums); for (int i = ..
💡 리스트에 있는 객체를 Comparable를 활용하여 객체의 특정값으로 정렬하기 package org.kyhslam.inflearnJava.dp; import java.util.ArrayList; import java.util.Collections; class Brick implements Comparable { public int s,h,w; public Brick(int s, int h, int w) { this.s = s; this.h = h; this.w = w; } @Override public int compareTo(Brick o) { //return o.s - this.s; // 내림차순 return this.s - o.s; // 오름차순 } } public class dp_04 { pu..
🔗 문제 https://programmers.co.kr/learn/courses/30/lessons/42862 코딩테스트 연습 - 체육복 점심시간에 도둑이 들어, 일부 학생이 체육복을 도난당했습니다. 다행히 여벌 체육복이 있는 학생이 이들에게 체육복을 빌려주려 합니다. 학생들의 번호는 체격 순으로 매겨져 있어, 바로 앞번 programmers.co.kr 💻 코드 def solution(n, lost, reserve): set_reserve = set(reserve) - set(lost) set_lost = set(lost) - set(reserve) for i in set_reserve: if i-1 in set_lost: set_lost.remove(i-1) elif i+1 in set_lost: se..
🔗 문제 https://programmers.co.kr/learn/courses/30/lessons/42840 코딩테스트 연습 - 모의고사 수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다. 1번 수포자가 찍는 programmers.co.kr 🚀 풀이 가장 많이 맞힌 사람만 출력하는 거다. 또한, 가장 높은 점수를 받은 사람이 여려명일 경우 오름차순으로 출력하는 것인데 나는 모든 사람의 경우에 대해 순서대로 출력하는 줄 알고 삽질을 하고 있었다... 💻 코드 package org.kyhslam; import java.util.ArrayList; import java.util.Arrays; p..
| 의존성 주입(DI, Dependency Injection)의 세가지 방법 Spring은 @Autowired애노테이션을 이용한 다양한 의존성 주입 방법을 제공한다. @Autowired 애노테이션은 Spring에게 의존성을 주입하라는 지시자 역할로 쓰이는데 생성자, 필드, Setter 에 붙일 수 있다. 1. 생성자 주입 @Controller public class OwnerController { private final OwnerRepository owners; @Autowired //
투자액 기업0 기업1 기업2 1 2 3 1 2 4 5 3 3 6 6 7 4 9 8 9 참고로 해당 이익표의 내용들을 아래와 같이 저장하였다. A[0,2] = 4 는 0기업에 2만원 투자했을 때의 이익이 4라는 것이다. static int[][] r = { {0,2,4,6,9}, {0,3,5,6,8}, {0,1,3,7,9} }; 쉽게 생각해서 max_return이라는 새로운 배열을 선언한고 해당 배열에는 최대값을 넣는다. 즉, max_return[1][2] = 3 이라고하면 0~1번 기업까지 2만원을 투자했을 때 얻을수있는 최대이익이 3 이라는 것이다. max_return[1][2] 값을 구하기 위해서는 아래와 같은 과정이 필요하다. 1) max_return[0][0] + r[1][2] 2) max_ret..
📚 Stack 클래스 Stack클래스는 List컬렉션 클래스의 Vector클래스를 상속받아, 전형적인 스택 메모리 구조의 클래스를 제공한다. 스택메모리 구조는 선형 메모리 공간에 데이터를 저장하면서 후입선출(LIFO)을 따르는 자료구조 이다. 가장 나중에 저장된(PUSH) 데이터가 가장 먼저 인출(POP)되는 구조이다. 메서드 설 명 boolean empty( ) Stack 이 비어있는지 알려줌 Object peek( ) Stack 의 맨 위에 저장된 객체를 반환 pop( ) 과 달리 Stack 에서 객체를 꺼내지 않음(비었을 때는 EmptyStackException 발생) Object pop( ) Stack 의 맨 위에 저장된 객체를 꺼냄(비었을 때는 EmptyStackException 발생) Obje..
배열 선언 방식 int[] arr = new int[3]; int arr2[] = new int[3]; 선언 후, 값 대입 public static void main(String[] args) { int[] arr = new int[3]; arr[0] = 10; arr[1] = 20; arr[2] = 30; } 선언하면서 초기화 public static void main(String[] args) { int[] array = {7,6,5,8,3,5,9,1}; System.out.println(array.length); }
퀵정렬 | 퀵 정렬이란 ? 분할정복 알고리즘의 하나로, 평균적으로 매우 빠른 수행 속도를 자랑하는 정렬 방법이다. 분할 정복(Divide and conquer)방법 문제를 작은 2개의 문제로 분리하고 각각을 해결한 다음, 결과를 모아서 원래의 문제를 해결하는 전략 분할 정복은 대개 순환 호출을 이용하여 구현한다. 하나의 리스트를 피벗(Pivot)을 기준으로 두 개의 비균등한 크기로 분할하고 분할된 부분 리스트르 정렬한 다음, 두개의 정렬된 부분 리스트를 합하여 전체가 정렬된 리스트가 되게 하는 방법 퀵 정렬의 단계 분할(Divide) : 입력 배열을 피벗을 기준으로 비균등하게 2개의 부분 배열로 분할 한다 (왼쪽 : 피벗보다 작은 요소, 오른쪽 : 피벗보다 큰 요소) 정복(Conquer) : 부분 배열을..
flush() - 어떤 리소스에 데이터를 쓸 때, 매번 쓰기작업을 할 때마다 저장하면 효율이 안 좋아진다. 예를 들어 누군가 마루에 있을 때 안방에 가서 연필을 가져오고, 휴지도 가져오고, 노트도 가져오라고 시켯을 때, 세번 안방에 가서 가져오는 것보다 한번에 가서 가져오는 것이 효과적이다. 따라서, 대부분 저장을 할 때 버퍼(buffer)를 갖고 데이터를 차고 차곡 쌓아 두었다가 어느 정도 차게 되면 한번에 쓰는 것이 좋다. 그러한 버퍼를 사용 할 때, flush() 메소드는 "현재 버퍼에 있는 내용을 지금 저장해"라고 시키는 것이다.