🌴 문제 문제 성원이는 수학을 정말 못 하는 고등학생이다. 수학을 못하는 대신 근성과 팔 힘이 뛰어난 성원이는 수학 시험에서 수학 지식을 사용하지 않고 근성과 체력을 사용해 문제를 푼다. 지난 시험에서는 아래 사진에 나와있는 문제를 근성과 체력을 사용해 열심히 풀었지만 사진에서 볼 수 있듯이 틀려버리고 말았다! 결국 이 문제는 틀려버렸지만 성원이는 여전히 자신의 체력에 강한 자신감을 갖고 있다. 어떤 어려운 문제가 나와도 이런 식으로 근성과 체력을 사용하면 다 풀 수 있으니 이 방법은 최고의 방법이라고 생각하고 있다. 성원이의 친구 형석이는 근성과 체력으로 수학 문제를 푸는 것은 굉장히 무식한 방법이라고 생각한다. 형석이는 수학을 공부하면 문제를 훨씬 빨리 풀 수 있다는 것을 알려주기 위해 위 사진에 나..
🌳 에러 코드 Execution failed for task ':HelloSpringApplication.main()'. > Build cancelled while executing task ':HelloSpringApplication.main()' * Try: > Run with --stacktrace option to get the stack trace. > Run with --info or --debug option to get more log output. > Run with --scan to get full insights. 🌳 해결 방법 🌾 원인 : gradle로 실행했기 때문. 🌾 해결 방법 : 1. Gradle 설정에서 IntelliJ IDEA 바로 변경. 2. 마지막으로 File -> O..
🌴 문제 문제 세 점이 주어졌을 때, 축에 평행한 직사각형을 만들기 위해서 필요한 네 번째 점을 찾는 프로그램을 작성하시오. 입력 세 점의 좌표가 한 줄에 하나씩 주어진다. 좌표는 1보다 크거나 같고, 1000보다 작거나 같은 정수이다. 출력 직사각형의 네 번째 점의 좌표를 출력한다. 예제 입력 1 복사 5 5 5 7 7 5 예제 출력 1 복사 7 7 예제 입력 2 복사 30 20 10 10 10 20 예제 출력 2 복사 30 10 🌴 문제 분석 package Backjoon; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; p..
🌱 오늘의 주제 : 자바8 람다와 인터페이스 스펙 변화 🌱 람다가 도입된 이유 람다가 도입된 이유는 기업 환경 변화와 프로그래머들의 요구이다. 기업들은 빅데이터들의 분석 및 활용을 통해 기업 전략을 수립하고, 수익을 극대화하고자 하기에, 빅데이터를 프로그램적으로 다룰 수 있는 방법이 필요졌다. 그 방법의 중심에는 멀티 코어를 활용한 분산 처리, 즉 병렬화 기술이 필요하다. 병렬화를 위해 컬렉션 (배열, List, Set, Map)을 강화했고, 이러한 컬렉션을 더 효율적으로 사용하기 위해 스트림을 강화했다. 스트림을 효율적으로 사용하기 위해 함수형 프로그래밍이 나타났고, 다시 함수형 프로그래밍을 위해 람다가 도입되었다. 람다를 위해 다시 인터페이스의 변화가 수반됐다. 람다를 지원하기 위한 인터페이스를 함수..
🌴 문제 문제 한수는 지금 (x, y)에 있다. 직사각형은 각 변이 좌표축에 평행하고, 왼쪽 아래 꼭짓점은 (0, 0), 오른쪽 위 꼭짓점은 (w, h)에 있다. 직사각형의 경계선까지 가는 거리의 최솟값을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 x, y, w, h가 주어진다. 출력 첫째 줄에 문제의 정답을 출력한다. 제한 1 ≤ w, h ≤ 1,000 1 ≤ x ≤ w-1 1 ≤ y ≤ h-1 x, y, w, h는 정수 예제 입력 1 복사 6 2 10 3 예제 출력 1 복사 1 예제 입력 2 복사 1 1 5 5 예제 출력 2 복사 1 예제 입력 3 복사 653 375 1000 1000 예제 출력 3 복사 347 예제 입력 4 복사 161 181 762 375 예제 출력 4 복사 161 🌴 문제 분..
🌱 오늘의 주제 : 데이터베이스 - 인덱스 🌱 인덱스 인덱스는 데이터를 빠르게 찾을 수 있는 하나의 장치이다. 🌱 B-트리 인덱스는 보통 B-트리 자료 구조로 이루어져 있다. 루트 노드, 브랜치 노드, 리프 노드로 구성되어 있다. 🌱 인덱스가 효율적인 이유와 대수확장성 인덱스가 효율적인 이유는 효율적인 단계를 거쳐 모든 요소에 접근 할 수 있는 균형 잡힌 트리 구조와 트리 깊이의 대수확장성 때문이다. 대수확장성이란 트리 깊이가 리프 노드 수에 비해 매우 느리게 성장하는 것을 말한다. 기본적으로 인덱스가 한 깊이씩 증가 할때마다 최대 인덱스 항목의 수는 4배씩 증가한다. 🌱 인덱스 만드는 방법 - MySQL 클러스터형 (Cluster) 인덱스 클러스터형 인덱스는 데이블당 하나를 설정할 수 있다. Prim..
🌱 오늘의 주제 : Calendar와 Date 🌱 Calendar와 Date Calendar는 추상클래스이기 때문에 직접 객체를 생성할 수 없고, 메서드를 통해서 완전히 구현된 클래스의 인스턴스를 얻어야 한다. Calendar cal = Calendar.getInstance(); 1. Calendar를 Date로 변환 Calendar cal = Calendar.getInstance(); Date d = new Date(cal.getTimeInMillis()); 2. Date를 Calendar로 변환 Date d = new Date(); Calendar cal = Calendar.getInstance(); cal.setTime(d) import java.util.Calendar; public class d..
🌱 오늘의 주제 : 선형 자료 구조와 비선형 자료 구조 🌱 선형 자료 구조 - Array vs Linked List Array 가장 기본적인 자료구조인 Array 자료구조는, 논리적 저장 순서와 물리적 저장 순서가 일치한다. 따라서 인덱스(index)로 해당 원소(element)에 접근할 수 있다. 그렇기 때문에 찾고자 하는 원소의 인덱스 값을 알고 있으면 Big-O(1)에 해당 원소로 접근할 수 있다. 즉 random access 가 가능하다는 장점이 있는 것이다. 하지만 삭제 또는 삽입의 과정에서는 해당 원소에 접근하여 작업을 완료한 뒤(O(1)), 또 한 가지의 작업을 추가적으로 해줘야 하기 때문에, 시간이 더 걸린다. 만약 배열의 원소 중 어느 원소를 삭제했다고 했을 때, 배열의 연속적인 특징이 ..
🌴 문제 문제 정수 A, B 가 주어진다. 세로 길이가 A cm, 가로 길이가 B cm 인 아래와 같은 직사각형의 넓이를 cm2 단위로 구하시오. 입력 표준 입력에 다음과 같은 형태로 입력이 주어진다. A B 출력 세로 길이가 A cm, 가로 길이가 B cm인 직사각형의 넓이를 cm2 단위로 구하고, 단위 (cm2)를 생략하여 출력한다. 제한 1 ≦ A ≦ 100. 1 ≦ B ≦ 100. A, B 는 정수이다. 예제 입력 1 복사 2 3 예제 출력 1 복사 6 세로 길이가 2 cm, 가로 길이가 3 cm인 직사각형의 넓이는 6 cm2이므로, 6 을 출력한다. 예제 입력 2 복사 100 1 예제 출력 2 복사 100 예제 입력 3 복사 4 4 예제 출력 3 복사 16 🌴 문제 분석 package Backj..
🌱 오늘의 주제 : StringTokenizer 클래스 🌱 StringTokenizer 클래스 StringTokenizer는 긴 문자열을 지정된 구분자를 기준으로 토큰이라는 여러 개의 문자열로 잘라내는 데 사용된다. StringTokenizer는 구분자로 단 하나의 문자 밖에 사용하지 못한다. package Backjoon; import java.util.StringTokenizer; public class day26 { public static void main(String[] args) { // split()과 StringTokenizer 비교 String data = "100,,,200,300"; String[] result = data.split(","); StringTokenizer st = n..