목록분류 전체보기 (167)
Hyunebee

OOP를 왜 사용할까? 소프트웨어의 복잡성을 제어하고 관리하기 가장 쉬운 대중적인 방법이다. OOP란? 데이터(상태)와 로직(행위)이 응집되어 상호 교류하여 동작하도록 만드는 기법(ex) 상속, 캡슐화, 다형성) 1. 분류 > Class Class는 프로그램의 코드를 체계적으로 분류하고 같은 역할을 하는 코드를 응집성 있게 모아준다. 2. 교체 > 유지보수 경우에 따라 특정 모듈을 통째로 변경해야 할 수 도 있음 OOP를 잘하려면? SOLID 원칙을 준수! 1. SRP - 단일 책임 원칙 : 한 클래스는 단일의 책임을 가져야 한다. 단일? 책임? 둘다 모호함 2. OCP - 개방 폐쇄의 원칙 : 확장에는 열려있고, 변경에는 닫혀있다. 수정하지 말고 신규 클래스를 추가하자! 3. LSP - 리스코프 치환 ..

Git 사용자 설정 git config : Git에 관한 설정을 추가/삭제/변경하는 명령어 1. System 설정 파일 : 모든 시스템 사용자에게 적용 2. Global 설정 파일 : 한 사용자의 전체 Git Repository에 적용 3. Local 설정 파일 : 하나의 레포지토리에 적용 git config -- ~로 사용 ssh key - github연동 1. ssh-keygen 명령어 사용 2. 이름설정 3. 비밀번호 설정 4. cat으로 내용확인후 key에 복붙하기 git 초기화 git init -> 해당 폴더 자체가 Local Repository가 된다고 생각하면됨 명령을 실행하면 .git/ 폴더 생성 .gitignore 사용자가 git에 등록되지 않길 원하는 파일 또는 폴더들의 목록을 저장 ...
그래프 상의 모든 노드들을 최소 비용으로 연결하는 방법 크루스칼, 프림 2가지가 존재 크루스칼 간선 중 최소 값을 가진 간선부터 연결 사이클 발생 시 다른 간선 선택 주로 간선 수가 적으면 사용 O(ElogE) 프림 임의의 노드에서 시작 연결된 노드의 간선 중 낮은 가중치를 갖는 간선을 선택 간선의 개수가 많을 때 크루스칼 보다 유리하다. O(ElogV)

일단 가중치들에서 음수가 없으로 다익스트라 알고리즘을 활용한다. import java.util.ArrayList; import java.util.PriorityQueue; public class Practice1 { static ArrayList graph; static final int INF = 1111111; static class Node{ int to; int weight; public Node(int to, int weight) { this.to = to; this.weight = weight; } } public static int solution(int[][] data, int v, int via1, int via2, int start, int n) { int case1 = 0; int c..

public class Practice3 { public static int solution(int[][] items, int n, int k) { int[][] dp = new int[n+1][k+1]; int result = 0; for(int i = 0; i < n; i++){ for(int j = 1; j j){// 무게 총량이 넘어간 경우 dp[i+1][j] = dp[i][j];// 그전 무게로 전부 채워줌 }else{ dp[i + 1][j] = Math.max(dp[i][j], dp[i][j-items[i][0]] + items[i][1]); } } } return dp[n][k]; } public static void main(String[] args) { // Test code int[][..

public class Practice2 { public static int solution(int[] arr) { int[] dp = new int[arr.length + 1]; int result = 0; for(int i = 1; i
큰 문제를 부분 문제로 나눈 후 답을 찾아가는 과정 계산된 결과를 기록하고 재활용하며 문제의 답을 구하는 방식 분할정복 vs DP 분할 정복은 부분 문제가 중복되지 않아서 DP와 다름 DP는 부분문제가 중복되어 재활용한다. 그리디 vs DP 그리디 알고리즘은 순간의 최선을 구하지만 DP는 모든 경우에 수에서 최적해를 구함 DP의 방법 상향식 접근 (타뷸레이션) 작은 하위 문제부터 풀면서 올라감 모두 계산하면서 차례대로 진행 하양식 접근 (메모이제이션) 큰문제에서 하위문제를 확인해가며 진행 계싼이 필요한 순간 계산하며 진행

데이터 베이스와 연결 Java app과 database 연결 필요요소 1. ip주소(도메인) 2. port 번호 3. 계정 4. 계정 비밀번호 5. 인스턴스 연결 순서 1. 드라이버 로드 (JDBC Connetion jar파일 형태로 제공) 보통 사용하는 database에서 배포하고 있다. 다운받아서 라이브러리에 등록 Class.for()을 사용하여 로드한다. Class.forName("org.mariadb.jdbc.Driver") 2.Database Connection을 생성 String url = jdbc:mariadb://접속할 ip주소:포트번호/접근할 DB인스턴스 Connction connection = DriverManager.getConnction(url,계정 이름,계정 비밀번호) 3.SQL을..