분류 전체보기 86

230608 8주 3일차 TIL. Counting Sort

Counting Sort Counting Sort란 각 자료가 몇 개 존재하는 지를 정리한 뒤 그 정보를 활용해 정렬하는 방식이다. 예를 들어 숫자가 적힌 카드가 1이 2개, 2가 3개, 3이 1개 있다고 하면 1, 1, 2, 2, 2, 3 와 같이 정렬하는 방식이다. 1. 먼저 자료들 값의 범위만큼 공간을 가진 배열을 만든다. 만약 자료들 값이 0~5까지 있다면 크기가 6인 배열(counts)을 만든다. int[] arr = {0, 1, 4, 4, 3, 0, 5, 2, 5, 1}; //(최대값과 최소값을 안다는 가정 하에) int max = 5; int min = 0; int[] counts = new int[max - min + 1]; 2. arr 배열을 돌면서 각 자료의 데이터(data)를 확인하고..

카테고리 없음 2023.06.08

230607 8주 2일차 TIL. 빌드 자동화 도구, Maven, Gradle

Build Automation Tool 인간이 이해할 수 있는 언어인 high level language 에서 기계가 이해할 수 있는 언어인 low level language로 변환하는 과정을 컴파일이라고 한다. 그리고 여러 코드, 리소스, 외부 라이브러리 파일들은 사용자들이 쓸 수 있는 일종의 실행 파일 형태로 전달이 되어야 하는데 프로젝트 소스코드를 실행 가능한 형태로 만드는 과정을 빌드라고 한다. 이렇게 프로젝트를 하기 위해선 컴파일 이상의 많은 작업이 필요하다. 그래서 Build Automation Tool이라는 도구가 있는데 대표적으로 Gradle과 Maven이 이에 해당한다. 얘네는 Java 프로젝트를 빌드하는데 사용되는 대표적인 도구로 소스파일 컴파일, 단위 테스트, 버전관리, Jar 생성 ..

멋사/TIL 2023.06.07

230605 8주 1일차 TIL. @Controller, @RequestMapping, IOC

@Controller와 @RequestMapping 어노테이션 @Controller : 이 클래스는 컨트롤러임을 나타내는 어노테이션 @RequestMapping : 특정 요청이 발생했을 때 실행되는 메소드임을 나타내는 어노테이션 DemoController.class @Controller public class DemoController { @RequestMapping("home2") public String home() { return "home.html"; } @RequestMapping("profile") public String profile() { return "profile.html"; } @RequestMapping("blog") public String blog() { return "blog..

멋사/TIL 2023.06.05

230601 7주 3일차 TIL. 프로그래머스 배열 만들기 4

프로그래머스 배열 만들기 4 https://school.programmers.co.kr/learn/courses/30/lessons/181918 import java.util.ArrayList; import java.util.Arrays; import java.util.List; class Solution { public int[] solution(int[] arr) { List list = new ArrayList(); int i = 0; while (i < arr.length) { if (list.isEmpty()) list.add(arr[i++]); else if (list.get(list.size() - 1) < arr[i]) list.add(arr[i++]); else if (list.get(l..

멋사/TIL 2023.06.01

[Intellij] no suitable driver found for jdbc 오류

인텔리제이에서 db 연결을 위해 sqlite-jdbc.jar 파일을 추가했는데 계속 db 연결이 안되고 no suitable driver found for jdbc 오류가 발생했다. 프로젝트를 잘못 만든게 문제인가 싶어서 스프링 프로젝트로 진행하고 있던걸 JavaFX 프로젝트로 다시 생성하고 코드 복붙한담에 File - Project Structure - Libraries에서 다운받은 jar 파일을 추가해주고 다시 실행해보았는데 또 같은 오류가 발생했다... (참고로 jar 파일 추가할 때 main 부분에 추가해주었다.) 근데 처음 추가했을 때 External Libraries 목록에 추가한 jar 파일이 보이지 않았다 근데 여러번 올렸다 내렸다 해서 성공했다는 사람들이 있어서 다시 같은 작업을 반복했더..

멋사 2023.05.31

230531 7주 2일차 TIL. 컬렉션, DB 대소문자 구분, JDBC, 예외처리

컬렉션 컬렉션 중에는 list가 가장 많이 사용된다고 한다. set은 자주 사용하진 않지만 중복값을 허용하지 않기 때문에 중복 제거 시 set으로 형변환을 하여 편리하게 사용할 수 있다. map은 key와 value의 쌍으로 구성된다. key는 set에 속하기 때문에 중복이 불가능하다. value는 중복이 가능하고 객체형을 받을 수 있다. list도 들어갈 수 있고 클래스도 들어갈 수 있음. JDBC란? 자바 응용 프로그램이 관계형 데이터베이스에 접속하기 위한 자바 표준 규격이다. JDBC 구조 - DriverManage : 드라이버 리스트를 저장하고 요청된 URL에 해당하는 드라이버를 애플리케이션에 제공. - Connection : 하나의 논리적 데이터베이스 트랜잭션을 나타내는 클래스 - Stateme..

멋사/TIL 2023.05.31

230526 6주 5일차 TIL. 추상클래스와 인터페이스, 제네릭, 컬렉션, 예외처리

추상 클래스와 인터페이스의 공통점과 차이점 공통점 - 추상 메서드를 포함할 수 있다 - 상속을 통해 기능을 확장하고, 다형성을 지원한다. - 클래스 간 관련성을 나타내는 용도로 사용할 수 있다. 차이점 - 추상 클래스는 추상 메서드 외에 일반 메서드, 인스턴스 변수를 포함할 수 있지만 반면 인터페이스는 추상 메서드, 디폴트 메서드, 정적 메서드, 상수만 가질 수 있다. - 추상 클래스는 단일 상속만 가능하지만 인터페이스는 다중 상속이 가능하다. - 인터페이스는 구현에 초점을 두지만 추상 클래스는 상속받아 기능을 확장하는 것에 초점을 둔다. 추상 클래스는 공통 속성을 상속하는 것이고 인터페이스는 어떠한 기능을 포함하고 싶을 때 사용하는 것이라는 설명이 가장 이해가 잘되는듯 추상 클래스 = 상속 인터페이스 ..

멋사/TIL 2023.05.26

230524 6주 3일차. 템플릿 메소드 패턴. 의존성 주입 DI

템플릿 메소드 패턴 템플릿 메소드 패턴이란?!?!?!?!? 상속을 통해 슈퍼클래스의 기능을 확장할 때 사용하는 가장 대표적인 방법이다. 변하지 않는 기능은 슈퍼클래스에 만들어두고 자주 변경되며 확장할 기능은 서브클래스에 만든다. 슈퍼클래스에서는 미리 추상 메소드 또는 오버라이드 가능한 메소드를 정의해두고 이를 활용해 코드의 기본 알고리즘을 담고 있는 템플릿 메소드를 만든다. 슈퍼클래스에서 디폴트 기능을 정의해두거나 비워뒀다가 서브클래스에서 선택적으로 오버라이드할 수 있도록 만든 메소드를 훅(hook) 메소드라고 한다. 서브클래스에서는 추상 메소드를 구현하거나, 훅 메소드를 오버라이드하는 방법을 이용해 기능의 일부를 확장한다. public abstract class Super { public void te..

멋사/TIL 2023.05.24