1. 들어가며 저번에 하나의 글로 정리한 입문 강의에 이어 스프링 핵심 원리 - 기본편 강의를 정리해보고자 한다. 이번 강의는 하나의 글로 정리하기엔 내용이 많아 중요한 주제의 경우 추가로 자료 조사를 해서 글을 따로 쓸 예정이다. 본 글에서는 강의의 핵심만 추려서 나중에 보기 편하게 정리하는 것이 목표이다. 2. 강의 내용 2.1 스프링이란? 스프링은 JAVA의 가장 큰 특징인 "객체 지향 언어"의 맛을 잘 살리는데 집중한 언어이다. 그렇다면 객체 지향 언어의 묘미는 무엇일까? 추상화, 캡슐화, 상속, 다형성 등 다양한 성질이 있고 모두 실제 코드에서 쓰일 수 있지만 스프링에서의 핵심은 바로 다형성이다. 각각의 컴포넌트가 유연하게 변경되면서 개발할 수 있는 것. 이를 위해 스프링은 역할과 구현을 분리한..
1. 들어가며 인프런에 있는 김영한 님의 스프링 강의를 들으면서 언젠가 정리 해야겠다는 생각은 계속 해왔었다. 하지만 수강 중에는 강의 듣느라 시간이 많이 소요되었고... 이제서야 첫 강의부터 정리하게 되었다. 첫 강의는 입문 강의인 만큼 정말 가볍게 스프링에 대해 맛볼 수 있는 내용만 담겨져 있으므로 글 하나로 간단하게 요약하고자 한다. (저작권 염려가 있어 세부 코드나 자세한 내용은 강의에서 직접 듣기를 바랍니다!) 2. 강의 내용 2. 1 단축키 제일 먼저 언급하고 싶었던 것은 뜬금없지만 intelliJ의 단축키이다. 김영한님이 예시 코드를 작성하면서 사용하는 단축키들이 실전적으로 유용한 게 많았고 의외로 몰랐던 것도 있었다. 무엇보다 제일 배우기 쉽고 바로 적용 가능하다! 참고로 윈도우 기준으로 ..
1. 배경 이분 탐색 다음으로 정리할 알고리즘으로 DP를 택한 것은 이분 탐색과 완전히 대척점이 되는 점에서 어렵게 느껴졌기 때문이다. 이분 탐색의 경우 구현 자체는 쉽지만 문제 접근을 이분 탐색으로 해야된다는 것을 깨닫는 것이 어렵다면 DP는 뭔가 딱 봐도 DP로 구현해야될 것 같은데 실제 코드로 구현하는 것이 어렵기 때문이다. 따라서 이분 탐색에서 접근 방법 위주로 글을 썼다면 이번엔 구현을 어떻게 해야 하는지 위주로 글을 쓰고자 한다. 2. DP란? 부분 반복 문제과 최적 부분 구조를 가지는 알고리즘을 메모제이션을 통해 더 빠르게 해결하는 방법을 말한다. 정의가 어렵지 않고 피보나치의 유명한 예시 덕분에 많은 사람들이 정의를 어려워할 것이라 생각하지는 않는다. 핵심적인 개념을 짚고 넘어가자면 "부분..
1. 배경 ps 문제를 풀면서 해결 알고리즘을 떠올리지 못하는 유형이 공통적인 것을 깨달았는데 바로 이분 탐색 문제였다. 대체로 고난이도 레벨(4 이상)에 배정되어 있으면서 구현 후 효율성 검사에 번번이 실패하는 것으로 보아 한번 정확하게 짚고 넘어가야겠다는 생각을 했다. 사실 이분탐색 알고리즘 자체를 이해하지 못하는 경우는 거의 없을 것이다. 하지만 실전 문제에서 이걸 이분 탐색으로 풀어야 되었다니..!!! 하면서 온갖 삽질을 했던 기억이 있기 때문에 문제와 함께 실전적으로 파악하고자 한다. 2. 이분 탐색이란? 이분 탐색이란 검색 범위를 줄여 나가면서 원하는 데이터를 검색하는 알고리즘이다. 어떻게? 찾으려는 데이터 값을 정렬된 데이터에서 중간점의 위치와 반복 비교하여 위치를 찾는다. 시간 복잡도 : ..