클래스가 필요한 이유 배열 사용의 한계 새로운 학생이 늘어난다고 생각해보면 결국 같은 코드를 반복해야한다. 이것을 배열로 묶을 수 있는데 묶게되면 다음과 같다. String[] studentNames = {"학생1", "학생2"}; int[] studentAges = {15,16}; int[] studnetGrades = {90,80}; for (int i = 0; i < studentNames.length; i++) { System.out.println("이름:" + studentNames[i] + " 나이:"+studentAges[i]+" 성적:"+studnetGrades[i]); } 추가하는 과정에서는 크게 불편함을 못 느낄 수 있다. 그런데 이제 추가 또는 삭제하는 과정에서 학생의 이름 배열, 학..
문제 이 문제는 아주 평범한 배낭에 관한 문제이다. 한 달 후면 국가의 부름을 받게 되는 준서는 여행을 가려고 한다. 세상과의 단절을 슬퍼하며 최대한 즐기기 위한 여행이기 때문에, 가지고 다닐 배낭 또한 최대한 가치 있게 싸려고 한다. 준서가 여행에 필요하다고 생각하는 N개의 물건이 있다. 각 물건은 무게 W와 가치 V를 가지는데, 해당 물건을 배낭에 넣어서 가면 준서가 V만큼 즐길 수 있다. 아직 행군을 해본 적이 없는 준서는 최대 K만큼의 무게만을 넣을 수 있는 배낭만 들고 다닐 수 있다. 준서가 최대한 즐거운 여행을 하기 위해 배낭에 넣을 수 있는 물건들의 가치의 최댓값을 알려주자. 입력 첫 줄에 물품의 수 N(1 ≤ N ≤ 100)과 준서가 버틸 수 있는 무게 K(1 ≤ K ≤ 100,000)가 ..
HashSet 자바의 컬렉션중 하나로, 중복된 값을 허용하지 않는 Set인터페이스를 구현하는 클래스이다. 기본적으로 추가는 add를 통해서 값을 추가한다. 중복된 값이 들어가면 내부에서 중복여부 확인후 set에 저장하지않는다. 아래는 hashset에 중복값을 넣은 후에 결과이다. import java.util.HashSet; public class Main { public static void main(String[] args) { HashSet hashSet = new HashSet(); hashSet.add(1); hashSet.add(2); hashSet.add(2); System.out.println(hashSet); } } //출력: [1, 2] 중복값을 제외하고 1,2만 출력되는것을 볼 수 있..
표준 조인 개요 ANSI/ISO SQL2(1992년) 표준 SQL명세 부족, 상호 호환성과 학습효율 많이 부족했다. ANSI/ISO SQL3(1999년): 기능정리, 호환가능한 여러기능 추가하였다. ANSI/ISO SQL(2003년): 기준 소폭추가, 현재 대부분 DB가 사용 현재의 SQL에는 STANDARD JOIN기능이 추가되어있다. 일반 집합 연산자 UNION: 합집합, 중복 제거해준다 INTERSECT: 교집합이다 EXCEPT/MINUS(ORCALE): 차집합(DIFFERENCE)이다 CROSS JOIN: 곱집합(PRODUCT), JOIN조건이없는 경우 생길 수 있는 모든 조합이다 순수 관계 연산자 SELECT: WHERE절로 구현되어 있다 PROJECT: SELECT절로 구현되어 있다 NATUR..
조건문 보통 if, switch를 많이 사용한다. 조건식의 연산결과에 따라 실행할 문장이 달라진다. 그에따라 프로그램의 흐름이 변경된다. if문 if(조건식){ 내용} 이렇게 이루어진다. 조건식의 내용이 참이면 내용을 수행한다. int student_score = 93; if(student_score>=90){ //student_score은 93으로 90보다 크다(true) System.out.println("A 입니다."); //조건문이 true이므로 'A 입니다.' 출력된다 } 추가로 if문은 { }생략이 가능하다. 물론 모든경우가 가능한것은 아니고 한줄의 if문만 가능하다. int student_score = 87; if(student_score>=90) System.out.println("A 입니..
문제 자연수 N과 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. 1부터 N까지 자연수 중에서 M개를 고른 수열 같은 수를 여러 번 골라도 된다. 고른 수열은 비내림차순이어야 한다. 길이가 K인 수열 A가 A1 ≤ A2 ≤ ... ≤ AK-1 ≤ AK를 만족하면, 비내림차순이라고 한다. 입력 첫째 줄에 자연수 N과 M이 주어진다. (1 ≤ M ≤ N ≤ 8) 출력 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해야 한다. 풀이 다른 N과 M문제와 비슷하다. 전에는 str=num+" " 으로 문자열을 저장하고 dfs끝까지가..
REST REST(Representational State Transfer) 자원을 이름으로 구분하여 해당 자원의 상태를 주고 받는것이다. HTTP URI을 통해 자원을 명시하고, HTTP Method(POST, GET, PUT, DELETE, PATCH 등)을 통해 해당 자원에 대한 CRUD Operation를 적용한다. CRUD Operation Rest에서의 CRUD Operation 동작 예시 Create: 데이터 생성(POST) Read: 데이터 조회(GET) Update: 데이터 수정(PUT, PATCH) Delete: 데이터 삭제(DELETE) REST 구성 요소 3가지로 구성된다. 자원(Resource): HTTP URL 자원에 대한 행위(Verb) : HTTP Method 자원에 대한 행..
문제 N-Queen 문제는 크기가 N × N인 체스판 위에 퀸 N개를 서로 공격할 수 없게 놓는 문제이다. N이 주어졌을 때, 퀸을 놓는 방법의 수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 N이 주어진다. (1 ≤ N < 15) 출력 첫째 줄에 퀸 N개를 서로 공격할 수 없게 놓는 경우의 수를 출력한다. 풀이 퀸은 직선과 대각선으로 이동할수있기때문에 한행에 한개만 존재가능하다. 아래처럼 말이다. 따라서 첫행부터 한행씩 내려가면서 찾는 DFS를 생각을 했다. 따라서 visted[N][N]을 통해 공격가능한곳과 이미 퀸이 놓인자리를 방문 처리할려고 한다. 시간복잡도 상으로는 한행이 진행될때마 한열씩 접근을 못하기때문에 15! 시간복잡도라고 생각을했다. 근데 추가적으로 대각선도 생각을 하면 15!(13..
문제 자연수 N과 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. 1부터 N까지 자연수 중에서 중복 없이 M개를 고른 수열 고른 수열은 오름차순이어야 한다. 입력 첫째 줄에 자연수 N과 M이 주어진다. (1 ≤ M ≤ N ≤ 8) 출력 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해야 한다. 풀이 문제를 보면 백트래킹 문제인것을 알 수 있다. 시간복잡도를 계산하자면 N까지의 수를 M의 값만큼 반복해서 구해야 하기때문에 O(N^M) 이 된다. 예시를 들자면 1~4까지의 수로 3길이의 수열을 만든다고 생각하면 4x4x4가 ..
관계형 데이터베이스 정규화를 통해 이상 현상을 제거하고 데이터 중복을 피함으로써 데이터 불일치성 문제를 해결한다. 동시성 관리와 병행 제어를 통해 여러 사용자가 동시에 데이터를 공유하고 조작할 수 있다. 메타 데이터를 통해 데이터의 성격, 속성, 표현 방법을 체계화하고 데이터 표준화를 지원한다. 보안 기능을 제공하여 인증된 사용자만이 참조할 수 있도록 한다. 다양한 제약조건을 이용하여 데이터 무결성을 보장하고 오류를 방지합니다. 1970년에 E.F.Codd 박사가 논문에 처음 소개했다. 기존의 파일시스템, 망형(네트워크형 데이터베이스), 계층형 데이터베이스를 대체하는 장점이있다.(데이터 중복제거, 동시성 관리와 병행 제어, 합리적인 테이블 모델링, 보안 기능 제공 등등) DML, DDL, DCL, TCL..