자바 203

[JAVA] 프로그래머스 - 개인정보 수집 유효기간

https://school.programmers.co.kr/learn/courses/30/lessons/150370 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr import java.util.*; class Solution { public int convertToDate(String day){ return Integer.parseInt(day.substring(0, 4)) * 12 * 28 + Integer.parseInt(day.substring(5, 7)) * 28 + Integer.parseInt(day.substring(8)); } public ..

ALGORITHM 2023.03.01

[JAVA] 컬렉션 프레임워크 정리

컬렉션 프레임 워크란? 여러 개의 데이터 묶음 자료를 효과적으로 처리하기 위해 구조화된 클래스 또는 인터페이스의 모음 컬렉션의 특성에 따라 크게 List, Set, Map으로 나눌 수 있고 메모리의 입출력 특성에 따라 기존 컬렉션 기능을 확장한 Stack, Queue가 있다. Map의 경우 Collection 인터페이스를 상속받고 있지 않지만 Collection으로 분류된다. 1. List 컬렉션 인터페이스 배열과 반대로 저장 공간의 크기가 동적으로 변화(메모리 동적 할당) 데이터의 추가, 변경, 삭제 등 가능 내부에 이미 클래스가 구현되어 있어 직접 인터페이스를 구현할 필요가 없음 구현 클래스(ArrayList, Vector, LinkedList..)를 이용하면 List 객체 생성 가능 구현 클래스(자..

BACK/JAVA 2023.02.15

[Spring] DI / IoC, 컨테이너, 의존성 주입 방법

DI (Dependency Injection) DI(Dependency Injection)란 스프링이 다른 프레임워크와 차별화되어 제공하는 의존 관계 주입 기능으로, 객체를 직접 생성하는 게 아니라 외부에서 생성한 후 주입 시켜주는 방식이다. DI(의존성 주입)를 통해서 모듈 간의 결합도가 낮아지고 유연성이 높아진다. 의존 관계 먼저 의존 관계가 무엇인지 알아보자. UML 모델에서는 두 클래스의 의존관계를 다음과 같이 점선으로 된 화살표로 표현한다. A가 B에 의존하고 있음을 나타낸다. B의 기능이 추가하거나 변경되면 A에 영향을 미친다. 의존 관계에는 방향성이 있다. A가 B에 의존하지만, 반대로 B는 A에 의존하지 않는다. 의존성 주입 첫번째 방법은 A객체가 B와 C객체를 New 생성자를 통해서 직접..

BACK/SPRING 2023.01.09

[JAVA] 백준 2343 - 기타 레슨

https://www.acmicpc.net/problem/2343 2343번: 기타 레슨 강토는 자신의 기타 강의 동영상을 블루레이로 만들어 판매하려고 한다. 블루레이에는 총 N개의 강의가 들어가는데, 블루레이를 녹화할 때, 강의의 순서가 바뀌면 안 된다. 순서가 뒤바뀌는 경 www.acmicpc.net import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.StringTokenizer; public class Main{ stati..

ALGORITHM 2022.12.29

[알고리즘] 이분 탐색(Binary Search)

이분 탐색이란? 이분 탐색은 이진 탐색, Binary Search 라고도 한다. 순차적 탐색보다 빠른 탐색을 위해 나온 탐색 방법으로 실제로 이분 탐색의 시간복잡도가 순차적 탐색보다 낮다. 순차 탐색: 리스트 안에 있는 데이터를 찾기 위해 앞에서부터 데이터를 하나씩 확인하는 방법이분 탐색: 정렬되어 있는 리스트에서 탐색 범위를 절반씩 좁혀가며 데이터를 탐색하는 방법시작점, 끝점, 중간점을 이용하여 탐색 범위를 설정한다. 이분 탐색 방법 처음 범위는 인덱스 0부터 끝까지이다. 이 때 중간 인덱스를 mid로 한다. mid의 값와 찾는 원소를 비교한다. 2-1) 찾는 원소와 mid의 값이 같다면 탐색 종료한다. 2-2) mid의 값 < 찾는 원소 일 때 left는 mid + 1로 하여 2)를 다시 반복한다. ..

ALGORITHM/이론 2022.12.29

[JAVA] 백준 14889번- 스타트와 링크

https://www.acmicpc.net/problem/14889 14889번: 스타트와 링크 예제 2의 경우에 (1, 3, 6), (2, 4, 5)로 팀을 나누면 되고, 예제 3의 경우에는 (1, 2, 4, 5), (3, 6, 7, 8)로 팀을 나누면 된다. www.acmicpc.net import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main{ public static int[][] arr; public static boolean[] visited; public static int n; public s..

ALGORITHM 2022.12.12

[JAVA] 자바 프로그램의 구조와 실행 과정

자바의 플랫폼 독립성 자바의 가장 큰 특징은 플랫폼 독립성이다. 플랫폼 독립성이란 하나의 프로그램이 모든 플랫폼(윈도우, 맥 리눅스..)에서 실행 가능한 것을 말한다. 자바의 가상머신 JVM이 이를 가능하게 해준다. 자바의 실행 파일(.class)은 이 가상머신이 사용하는 기계어의 집합으로 구성되어 있어, 가상머신을 이용하면 어떤 플랫폼에서도 .class파일을 실행할 수 있다. JVM 이란? JVM은 JavaVirtual Machine의 줄임말로 wirte once, run erveywhere. 즉 OS마다 따로 코드를 작성해야 하는 번거로움 없이 Java가 플랫폼에 독립적일 수 있게 만들어준다. 그리고 가비지 컬렉션을 통해 자동적인 메모리 관리를 해준다. (가비지 컬렉션: JVM의 메모리 관리 기법 중..

BACK/JAVA 2022.11.11

[JAVA] 디자인 패턴 정리

디자인 패턴이란 ? 프로그램을 설계할 때 발생했던 문제점들을 객체 간의 상호 관계 등을 이용하여 해결할 수 있도록 하나의 "규약" 형태로 만들어 놓은 것을 의미한다. 1. 싱글톤 패턴 하나의 클래스에 오직 하나의 인스턴스만 가지는 패턴 하나의 인스턴스를 만들어 놓고 해당 인스턴스를 다른 모듈들이 공유하며 사용하기 때문에 인스턴스를 생성할 때 드는 비용이 줄어드는 장점이 있다. 하지만 의존성이 높아지고 테스트가 서로 독립적인 단위 테스트를 주로 하는 TDD를 할때 걸림돌이 된다는 단점이 있다. 스프링 컨테이너 객체 관리, DB 커넥션, 스레드 풀 객체 생성시 사용된다. class Singleton{ private static class singleInstanceHolder{ private static fi..

BACK/JAVA 2022.11.11