목록분류 전체보기 (80)
UpDown Dev Story
https://www.inflearn.com/course/%EC%9E%90%EB%B0%94-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-%EB%AC%B8%EC%A0%9C%ED%92%80%EC%9D%B4-%EC%BD%94%ED%85%8C%EB%8C%80%EB%B9%84 자바(Java) 알고리즘 문제풀이 : 코딩테스트 대비 - 인프런 | 강의 자바(Java)로 코딩테스트를 준비하시는 분을 위한 강좌입니다. 코딩테스트에서 가장 많이 출제되는 Top 10 Topic을 다루고 있습니다. 주제와 연동하여 기초문제부터 중급문제까지 단계적으로 구성 www.inflearn.com 강좌를 보고 공부하는 기록을 남기고 있습니다 문제 해석 첫번째 입력에 문자열을 입력 받고 두번째 입력에 입력받는 문자가 ..
정의 스프링 프레임워크는 스프링의 빈을 생성하고 관리하는 컨테이너를 가지고 있다. 이를 통해서 스프링의 주개념인 IOC 나 AOP에 대해서 관리하곤 한다. 스프링 컨테이너의 종류 먼저 스프링 컨테이너의 종류는 BeanFactory와 이를 상속한 ApplicationContext 2가지 유형이 존재한다. Bean Factory Bean Factory는 스프링 설정파일에 등록된 Bean 객체를 생성하고 관리하는 기본적인 기능만 제공한다. 컨테이너가 구동될 때 Bean 객체를 생성하는 것이 아니라 클라이언트의 요청에 의해서 Bean 객체가 사용되는 시점(Lazy Loading) 에 객체를 생성하는 방식을 사용하고 있다. 일반적으로 스프링 프로젝트에서는 사용될 일이 없지만, ApplicationContext는 ..
클린코드로 유명한 로버트 마틴이 좋은 객체 지향 설계의 5가지 원칙을 정리 SRP: 단일 책임 원칙(single responsibility principle) 한 클래스는 하나의 책임만을 가져야 한다. 하나의 책임이라는 것은 모호하다. 클 수도 있고, 작을 수도 있다. 문맥과 상황에 따라 다르다. 중요한 기준은 변경이다. 변경이 있을 때 파급 효과가 적으면 단일 책임 원칙 잘 따른 것이다. 예를 들어서 UI하나 변경하는데, SQL 코드부터 시작해서 애플리케이션 다 고쳐야 한다면 단일책임 원칙을 잘 지키지 못한 것 OCP: 개방-폐쇄 원칙 (Open/closed principle) 소프트웨어 요소는 확장에는 열려있으나 변경에는 닫혀있어야 한다. 어떻게? 확장을 하려면 당연히 기존 코드 변경해야하지 않나? ..
정의 객체 지향 프로그래밍(영어: Object-Oriented Programming, OOP)은 컴퓨터 프로그래밍의 패러다임 중 하나이다. 객체 지향 프로그래밍은 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, 즉 "객체"들의 모임으로 파악하고자 하는 것이다. 각각의 객체는 메시지를 주고받고, 데이터를 처리할 수 있다. 객체 지향 프로그래밍은 프로그램을 유연하고 변경이 용이하게 만들기 때문에 대규모 소프트웨어 개발에 많이 사용된다. 또한 프로그래밍을 더 배우기 쉽게 하고 소프트웨어 개발과 보수를 간편하게 하며, 보다 직관적인 코드 분석을 가능하게 하는 장점을 갖고 있다. 그러나 지나친 프로그램의 객체화 경향은 실제 세계의 모습을 그대로 반영하지 못한다는 비판을 받기도 한..
정의 스프링 프레임워크(영어: Spring Framework)는 자바 플랫폼을 위한 오픈 소스 애플리케이션 프레임워크로서 간단히 스프링(Spring)이라고도 한다. 동적인 웹 사이트를 개발하기 위한 여러 가지 서비스를 제공하고 있다. 대한민국 공공기관의 웹 서비스 개발 시 사용을 권장하고 있는 전자정부 표준프레임워크의 기반 기술로서 쓰이고 있다. 특징 경량 컨테이너로서 자바 객체를 직접 관리한다. 각각의 객체 생성, 소멸과 같은 라이프 사이클을 관리하며 스프링으로부터 필요한 객체를 얻어올 수 있다. 스프링은 Plain Old Java Object 방식의 프레임워크이다. 일반적인 J2EE 프레임워크에 비해 구현을 위해 특정한 인터페이스를 구현하거나 상속을 받을 필요가 없어 기존에 존재하는 라이브러리 등을 ..
## 작성이유 같은 이슈가 주위에서 반복되고 있어 이슈처리 과정을 정리하여 공유하기 위해 ## 발단 및 전개 1. 웹 어플리케이션에서 파일 업로드 기능을 사용하여 엑셀파일을 업로드한다. 2. 웹 어플리케이션에서 해당 엑셀 파일을 읽어 DB에 삽입한다 3. 삽입한 데이터를 원천으로 데이터 가공한다 4. 가공한 데이터를 사용자에게 엑셀 파일로 제공 한다 5. 테스트 및 리펙토링 5번 테스트 및 리펙토링 과정에서 파일을 다운로드 했는데 아래와 같이 한글이 깨지는 것을 확인할 수 있었습니다. ##### 엑셀 다운로드 셀 값 확인결과 ## 위기 간단하게 인코딩 문제 인걸로 예측하고 원인 파악을 시작했습니다. “ DB 값이 이상하게 들어갔을 테니 확인해보자 ” 라고 생각하고 데이터를 확인해 보았습니다. “ 인코딩을..
위 문제는 둘째줄에 문자에 정렬된 형식에 맞춰서 첫째줄에 입력받은 숫자들도 정렬해주면 되는 문제이다 import java.util.*; public class BOJ3047 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int[] arr = new int[3]; for (int i = 0; i < arr.length; i++) { arr[i] = sc.nextInt(); } String s = sc.next(); Arrays.sort(arr); for (int j = 0; j < arr.length; j++) { if ('A' == s.charAt(j)) { System.out.print(arr[0] + " ..
위 문제는 쉽게말하면 기본적으로 x좌표가 증가하는 순으로 정렬하고 x좌표가 같으면 y좌표가 증가하는 순으로 정렬하는 문제입니다 import java.util.*; public class BOJ11650 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int N = Integer.parseInt(sc.nextLine()); int[][] arr = new int[N][2]; for (int i = 0; i < N; i++){ for (int j = 0; j < arr[i].length; j++){ arr[i][j] = sc.nextInt(); } } Arrays.sort(arr, new Comparator() {..
N 개의 단어를 받아서 1. 길이가 짧은 것부터 2. 길이가 같으면 사전 순으로 정렬하여 출력하는 문제입니다. 하지만 문제를 자세히 읽어보면 중복된 단어의 경우 한번만 출력한다는 조건이 하나 더 있습니다. 그래서 입력받은 문자를 Set 자료구조에 담아서 중복을 제거한 뒤에 ArrayList로 옮겨서 정렬해주었습니다. import java.util.*; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int N = Integer.parseInt(sc.nextLine()); // 중복 제거를 위해 set으로 먼저 input Set set = new HashSet(); for (int..
해당 문제를 이해하는데 좀 걸렸긴 했지만 여러가지 서치해본결과 A 배열과 B 배열의 요소를 순서대로 곱해 누적연산값이 최소값이 나올수 있도록 하면 되는것이다 그렇게 하려면 A배열을 오름차순으로 정렬하고 B 배열은 내림차순으로 정렬하면 가능하다 import java.util.Arrays; import java.util.Scanner; public class BOJ1026 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int[] a = new int[n]; int[] b = new int[n]; for (int i = 0; i < n; i++) { a[i] = sc.next..