분류 전체보기

Algorithm

프림 알고리즘의 개념

https://gmlwjd9405.github.io/2018/08/28/algorithm-mst.html [알고리즘] 최소 신장 트리(MST, Minimum Spanning Tree)란 - Heee's Development Blog Step by step goes a long way. gmlwjd9405.github.io Spanning Tree : 그래프 내의 모든 정점을 포함하는 트리 최소 연결 부분 그래프이므로 간선의 수가 가장 적다. DFS와 BFS를 사용해서 정점들을 찾기 위해 사용된 간선을 모은다. 위 그림처럼, n 개의 정점이 존재할 때 (n-1)개의 간선이 연결되어있다. 최소 신장 트리(MST : Minimum Spanning Tree)란, 간선의 가중치가 다를 때 최소 비용의 Spanni..

Framework/Spring

[IBAS] S3 Upload 코드 리팩토링

uploadImageUrl을 String으로 단순히 반환하던 이 코드를, ServerFileService의 구조와 맞추기 위해 리팩토링을 진행해보기로 했다. private Optional convert(MultipartFile multipartFile) throws IOException{ // 디렉토리 경로 수정하기 File convertFile = new java.io.File(System.getProperty("user.dir") + "/" + multipartFile.getOriginalFilename()); if(convertFile.createNewFile()){ try (FileOutputStream fos = new FileOutputStream(convertFile)) { fos.write..

Framework/Spring

[IBAS] Spring MVC의 Front Controller Pattern 구현하기

막연하게 FrontController의 형태로 구현해 문제를 해결해보자고 생각했다. https://yeonyeon.tistory.com/103 [MVC] 프론트 컨트롤러 패턴 기존의 패턴을 설명하자면 아래 그림과 같다 각 클라이언트들은 Controller A, B, C에 대해 각각 호출한다. 공통 코드들은 별도로 처리되어 있지 않고 각 Controller에 포함되어 있다. 하지만 프론트 컨 yeonyeon.tistory.com 대충, 서브 컨트롤러들을 프론트 컨트롤러에 정의해놓은 Map에 URL과 함께 매핑한다. 그리고 Request의 URI를 데려와 Key값을 이용해 Controller을 데려와 process 함수를 호출시킨다. 여기서 문제들이 보인다. 1. 호출해야하는 함수는 process뿐만이 아니..

Algorithm

[C++] BFS와 DFS 개념 정리

한 주간 BFS와 DFS문제를 풀어봤었는데, 개념 자체가 어렵다기 보단 문제에 맞게 응용하는 것이 너무너무 어려웠다. 개념을 한번 더 정리하고 코드를 분석해보려 한다! BFS Breadth First Search (너비 우선 탐색) : 루트 노드에서 시작해서 인접한 노드를 먼저 탐색하는 방법 #include #include #include using namespace std; int number = 9; bool visit[9]; vector a[10]; // vector 자료형이 열 개, 즉 이차원 배열이라고 보면 됨 void bfs(int start) { queue q; q.push(start); // 시작 노드 push visit[start] = true; while (!q.empty()) { in..

Langauge/Java

Java의 정석 Chapter7.객체지향 프로그래밍2

상속 자바에서는 단일 상속만을 허용하는데, 하나의 클래스가 여러 조상 클래스를 상속받는 '다중 상속' 형태는 불가능하다. Object 클래스 모든 클래스의 상속 계층도에서 가장 상위에 있는 클래스 class Tv { // ... } 이렇게 아무것도 상속하지 않는 클래스를 컴파일하면 자동으로 Object를 상속하도록 설정한다. 오버라이딩 조상 클래스에서 상속받은 메서드 내용을 변경하는 것을 말한다. 오버라이딩의 조건은 다음과 같다. 1) 조상 클래스의 메서드와 이름이 같다. 2) 조상 클래스의 메서드와 매개변수가 같다. 3) 조상 클래스의 메서드와 반환 타입이 같다. 다만 접근 제어자와 예외는 다르게 변경할 수 있는데, - 접근 제어자는 조상 클래스의 메서드보다 좁은 범위로 변경할 수 없다. - 조상 클래..

Algorithm

[C++] 구글폼 복수응답 날짜 별로 응답자 정리하는 프로그램

학생회 행사 참여 인원을 조사하다가, 위와 같이 복수 응답으로 날짜를 투표 받았고 이렇게 50개가 넘는 응답을 받아 손수 정리하는 것의 한계를 느꼈다. 프로그램 개발해서 \n을 기준으로 응답자별로 응답한 날짜 객체를 분류해 배열에 넣고, 문자열 슬라이싱으로 날짜 정보를 추출해 해당 날짜를 선택한 사람의 정보를 입력하여, Map으로 번호와 이름을 매칭시켜 이름을 출력하는 프로그램을 개발하였다. 이렇게 해서 손쉽게 정리를 할 수 있었다. 아래는 소스코드이다. #include #include #include #include #include #define MAX_LENGTH 45 #define _CRT_SECURE_NO_WARNINGS #pragma warning 4996 #define n 35 // 참여한 학..

Langauge/Java

Java의 정석 Chapter6. 객체지향 프로그래밍

객체지향 프로그래밍이란, 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, 즉 "객체"들의 모임으로 파악하고자 하는 것이다. 객체지향 언어의 주요 특징은 다음과 같다. 1. 코드의 재사용성이 높다 2. 코드의 관리가 용이하다 3, 신뢰성이 높은 프로그래밍을 가능하게 한다. 클래스와 객체 클래스 : 객체를 정의해놓은 것이며, 객체를 생성하는 데 사용된다. 객체 : 클래스로부터 만들어져 실제로 메모리 상에 존재하는 것 인스턴스 : 클래스로부터 만들어진 객체를 이루는 말 객체는 여러가지 속성과 기능을 가지고 있다. 이를 멤버 변수, 메서드를 이용해 구현할 수 있으며 변수는 클래스, 인스턴스, 지역 변수 총 3가지 종류로 나뉜다. 클래스 변수와 인스턴스 변수는 클래스 영역에 위치..

Langauge/Java

Java의 정석 Chapter5. 배열

배열이란, 같은 타입의 여러 변수들을 하나의 묶음으로 다루는 것을 말한다. 배열의 선언과 생성은 두 가지 방식으로 할 수있다. 1. 타입[] 배열이름; 2. 타입 배열이름[]; 생성된 배열의 인덱스는 "0부터 배열길이 - 1 까지"이다. 유효한 범위를 벗어나게 된다면 ArrayIndexOutOfBoundsException이 발생한다. public class arrayEx1 { public static void main(String[] args) { int[] score = new int[5]; int k = 1; score[0] = 50; score[1] = 60; score[2] = 70; score[3] = 80; score[4] = 90; int tmp = score[k + 2] + score[4]..

Langauge/Java

Java의 정석 Chapter3. 연산자 / Chapter4. 조건문과 반복문

연산자 연산자는 연산을 수행하는 기호를 말한다. 연산자의 종류는 다음과 같다. 단항 연산자가 이항 연산자보다 우선순위가 높다. 헷갈리기 쉬운 연산자들의 우선순위를 정리해보자. x >), 왼쪽으로( b && a > c) { max = a; // 위의 조건식이 true일때 실행 } else { // 위의 조건식이 false일때 실행 if (b > c) { max = b; // 위의 조건식 true일때 실행 } else { max = c; // 위의 조건식 false일때 실행 } } System.out.println("max = " + max); } } 위와 같이 중첩 if문을 사용해 동시에 두 조건을 만족하는 경우에 실행을 할 수 있다. 2. switch문 switch문의 기본적인 구조는 위와 같다. cas..

MINGYUM
'분류 전체보기' 카테고리의 글 목록 (24 Page)