2022/03 21

[프로그래머스 Level2] 메뉴 리뉴얼(JAVA) - 2021 카카오

[문제] https://programmers.co.kr/learn/courses/30/lessons/72411?language=java 코딩테스트 연습 - 메뉴 리뉴얼 레스토랑을 운영하던 스카피는 코로나19로 인한 불경기를 극복하고자 메뉴를 새로 구성하려고 고민하고 있습니다. 기존에는 단품으로만 제공하던 메뉴를 조합해서 코스요리 형태로 재구성해서 programmers.co.kr 해당 문제의 내용이 길어 생략했습니다. [문제 풀기 전] 카카오 문제는 항상 문제를 잘 읽는것은 기본이고, 2레벨 정도 난이도는 어설프게 자료구조를 알고있으면 풀 수 없는 것 같다. 문제가 길 뿐이지 생각보다 구현한 코드를 보면 그렇게 길지도 않고 엄청 어렵다 느낌은 들지 않는다. HashMap 에 대하여 좀 더 정확한 개념과 메..

카테고리 없음 2022.03.31

기본형(Primtive Type) - JAVA

https://dding9code.tistory.com/45?category=1258691 변수 포스팅을 했었는데 그중 기본형에 대하여 내용이 부실하여 추가로 글을 쓰게 되었습니다. 기본형이란? 실제 값(data)을 저장하는 데이터 타입으로 논리형, 문자형, 정수형, 실수형 으로 나누어 집니다. 논리형 (boolean) - 논리형은 boolean 하나만 존재하며, boolean 변수는 true, false 밖에 저장을 할 수 없다. 기본(default)는 false 이다. 주로 대답(yes/no), 스위치(on/off), 플래그 등의 논리구현에 주로 사용된다. true, false 만을 사용하기에 1bit 로 충분하지만 자바에서 데이터를 다루는 최소 단위는 byte이다. 그래서 boolean의 크기는 1..

스프링(Spring)은 왜 사용할까?

스프링이라는 기술을 배우고, 사용하는데 왜 사용하는지도 모르고 쓰는거 같아서 이렇게 정리를 하게되었습니다. 스프링이란? 우선 스프링은 왜 만들어 졌을까요? 스프링이라는 기술의 핵심 컨셉은 무엇인지 생각해보신 적이 있으신가요 스프링은 자바언어 기반의 프레임워크입니다. 자바언어 기반이니 자바의 가장 큰 특징은 무엇일까요. 바로 객체지향언어 입니다. 스프링은 객체지향언어가 가진 특성(추상화, 상속, 캡슐화, 다형성)을 살려내는 프레임워크 라고 할 수 있습니다. 즉. 스프링은 좋은 객체지향 애플리케이션을 개발할 수 있게 도와주는 프레임워크입니다. 그러면 왜 사용하는지도 답이 자연스럽게 나오게 됩니다. 스프링이 지원하는 기술 DI(Dependency Injection), DI 컨테이너 제공을 통하여 다형성과 OC..

스프링 2022.03.25

다익스트라 알고리즘(Dijkstra Algorithm) - JAVA

다익스트라 알고리즘 이란? 그래프에서 여러 개의 노드가 있을 때, 특정한 한 정점(=노드)에서 출발하여 다른 모든 정점으로 가는 최단 경로를 구하는 알고리즘입니다. 다익스트라 최단 경로 알고리즘은 '음의 간선' 즉, 가중치가 0보다 작은 값이 아닌 경우에 때 정상 동작합니다. 현실 세계에서의 길(간선) 음의 간선으로 표현되지 않아 다익스트라 알고리즘은 실제로 인공위성 GPS 소프트웨어 등에서 가장 많이 사용됩니다. 다익스트라 최단 경로 알고리즘은 기본적으로 그리디 알고리즘으로 분류됩니다. 왜냐하면 매번 '가장 비용이 적은 노드'를 선택해서 임의의 과정을 반복합니다. 동작과정 출발 노드를 설정 최단 거리 테이블 초기화 방문하지 않은 노드 중에서 최단 거리(가중치)가 가장 짧은 노드 선택 해당 노드를 거쳐 ..

알고리즘 정리 2022.03.23

@Bean 과 @Component 의 차이?

스프링 영한님 강의중.. @Bean 은 해당 어노테이션이 붙은 메서드를 모두 호출해서 반환된 객체를 스프링 컨테이너를 등록하고, 이렇게 등록된 객체를 스프링 빈이라 하며, 싱글톤으로 관리가 된다. @Component 는 @ComponentScan 이 @Component 가 붙은 모든 클래스를 스프링 빈으로 등록하게 되는데, 이때 스프링 빈의 기본 이름은 클래스명을 사용하되 맨 앞글자만 소문자를 사용하게 된다. 이렇게 보면 둘다 스프링 빈으로 등록하게 되는건 알겠는데 무슨 차이가 있을까? @Bean @Bean 어노테이션은 개발자가 컨트롤이 불가능한 외부 라이브러리들을 Bean으로 직접 등록하고 싶은 경우에 사용 된다. AppConifg 라고 직접만든 설정 정보 클래스인데 이 클래스는 @Configurati..

스프링 2022.03.22

MySQL - View

View 란? 뷰는 데이터베이스에 존재하는 가상의 테이블을 뜻합니다. 실제 테이블 처럼 행과 열을 가지고 있지만 실제로는 데이터를 저장하지 않습니다. 뷰 생성 - 뷰의 이름을 명시하고 , AS 키워드 다음에 SELECT 문을 사용하여 해당 뷰가 접근할 수 있는 필드를 명시 CREATE VIEW 뷰이름 AS SELECT 필드이름1, 필드이름2, ... FROM 테이블이름 WHERE 조건 ... 뷰 대체 - OR REPLACE 절을 추가하여 기존에 존재하는 뷰를 새로운 뷰로 대체 가능, 만약 뷰가 없으면 생성과 동일한 기능 CREATE OR REPLACE VIEW 뷰이름 AS SELECT 필드이름1, 필드이름2, ... FROM 테이블이름 WHERE 조건 ... 뷰 삭제 - DROP 문을 사용하여 뷰 삭제가..

MySQL 2022.03.21

MySQL - 기본키(Primary Key) , 외래키 (Foreign Key)

[업데이트 예정입니다..! 가볍게만 참고하세요.] 기본키 - Primary Key 테이블의 각 row 를 유일성과 최소성을 만족시키면서 식별할 수 있는 후보키 중에 선택한 Main key Candidate Key(후보키)중에 선택한 Main Key *유일성과 *최소성을 만족 중복되지 않는 고유값만 허용 NULL 값 허용하지 않음 테이블당 하나의 기본키만 지정 가능 *Candidate Key ? : 관계형 데이터베이스에서 *릴레이션(Relation)의 튜플을 유일하게 식별할 수 있는 속성 또는 속성의 집합 중, 다음 두 성질을 만족해야 함 유일성(uniqueness) : 릴레이션에 있는 모든 튜플에 대해 유일하게 식별되어야 한다. 최소성(minimality) : 유일성을 가진 키를 구성하는 속성(Attri..

MySQL 2022.03.21

[백준14938] - 서강그라운드

ㄷhttps://www.acmicpc.net/problem/14938 14938번: 서강그라운드 예은이는 요즘 가장 인기가 있는 게임 서강그라운드를 즐기고 있다. 서강그라운드는 여러 지역중 하나의 지역에 낙하산을 타고 낙하하여, 그 지역에 떨어져 있는 아이템들을 이용해 서바이벌을 www.acmicpc.net [문제풀이 전] 다익스트라 알고리즘을 알아야 이 문제를 해결할 수 있습니다. 해당 알고리즘 개념을 모르면 쉬운 개념의 문제부터 익히고 오거나, 검색하셔서 해당 개념을 익히면 금방 풀 수 있는 정도의 난이도입니다. [문제풀이] 다익스트라를 활용한 문제로 수색할 수 있는 거리가 한정되어 있어, 한 정점에서 다른 정점으로 이동하는 최소거리를 전부 구하여 dist배열에 담아주고, 움직일 수 있는 범위이면 해..

백준 문제풀이 2022.03.18

람다식(Lambda expression) - JAVA

람다식이란? 람다식은 메서드를 하나의 식으로 표현한 것입니다. 메서드를 간략하면서도 명확한 식으로 표현할 수 있게 해주며, 메서드의 이름과 반환값이 없어지므로 '익명함수(anonymous function)' 이라고도 합니다. 람다식은 '익명 함수' 답게 메서드에서 이름과 반환타입을 제거하고 매개변수 선언부와 몸통{ } 사이에 ' -> ' 를 추가합니다. //기존방식 반환타입 메서드이름(매개변수 선언) { 문장들 } //람다사용 (매개변수 선언) -> { 문장들 } 람다식의 장단점 장점 1. 코드를 간결하고 명확하게 만들 수 있다. 2. 함수를 만드는 과정이 없어 생산성이 높아진다. 3. 다중 cpu를 활용하는 형태로 구현되어 병렬 프로그래밍에 유리 단점 1. 남발하여 사용할 경우 가독성이 오히려 떨어짐 ..