시작하기 앞서 본 글은 JAVA 국비학원을 수강중인 학생이 김영한님의 인프런 강의 스프링 MVC 1편 수업을 듣고 공부한 내용을 정리하기 위해 적은 글임을 밝힙니다. 본 글은 스프링 MVC 프레임워크의 내부 패턴이 무엇인지, 스프링 프레임워크의 골격적인 부분을 살펴보기 위한 공부 과정에 관한 글입니다. 본 공부를 통해 알게 된 점 스프링은 Servlet 위에서 만들어진 MVC 프레임워크이다. 스프링의 View, Model, ModelAndView와 같은 개념과 handler, handlerAdapter, handlerMapper와 같은 개념이 무엇인지 알게 되었다. 고도로 추상화되고 자동화되어 있는 스프링 MVC 프레임워크의 내부 로직을 살펴봄으로써 스프링 Controller의 대략적인 생명주기를 알 수..
문제 124 나라가 있습니다. 124 나라에서는 10진법이 아닌 다음과 같은 자신들만의 규칙으로 수를 표현합니다. 124 나라에는 자연수만 존재합니다. 124 나라에는 모든 수를 표현할 때 1, 2, 4만 사용합니다. 예를 들어서 124 나라에서 사용하는 숫자는 다음과 같이 변환됩니다. 10진법 124 나라 10진법 124 나라 1 1 6 14 2 2 7 21 3 4 8 22 4 11 9 24 5 12 10 41 자연수 n이 매개변수로 주어질 때, n을 124 나라에서 사용하는 숫자로 바꾼 값을 return 하도록 solution 함수를 완성해 주세요. 제한조건 n은 500,000,000이하의 자연수 입니다. 문제풀이 124나라의 숫자 패턴은 3진법의 패턴을 약간 바꾼 형태이다. 따라서 기본적으로 3진법..
문제 프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 기능보다 먼저 개발될 수 있고, 이때 뒤에 있는 기능은 앞에 있는 기능이 배포될 때 함께 배포됩니다. 먼저 배포되어야 하는 순서대로 작업의 진도가 적힌 정수 배열 progresses와 각 작업의 개발 속도가 적힌 정수 배열 speeds가 주어질 때 각 배포마다 몇 개의 기능이 배포되는지를 return 하도록 solution 함수를 완성하세요. 제한조건 작업의 개수(progresses, speeds배열의 길이)는 100개 이하입니다. 작업 진도는 100 미만의 자연수입니다. 작업 속도는 100 이하의 자연수입니..
문제 선행 스킬이란 어떤 스킬을 배우기 전에 먼저 배워야 하는 스킬을 뜻합니다. 예를 들어 선행 스킬 순서가 스파크 → 라이트닝 볼트 → 썬더일때, 썬더를 배우려면 먼저 라이트닝 볼트를 배워야 하고, 라이트닝 볼트를 배우려면 먼저 스파크를 배워야 합니다. 위 순서에 없는 다른 스킬(힐링 등)은 순서에 상관없이 배울 수 있습니다. 따라서 스파크 → 힐링 → 라이트닝 볼트 → 썬더와 같은 스킬트리는 가능하지만, 썬더 → 스파크나 라이트닝 볼트 → 스파크 → 힐링 → 썬더와 같은 스킬트리는 불가능합니다. 선행 스킬 순서 skill과 유저들이 만든 스킬트리를 담은 배열 skill_trees가 매개변수로 주어질 때, 가능한 스킬트리 개수를 return 하는 solution 함수를 작성해주세요. 제한조건 스킬은 알..
일러두기 이 글은 자바 국비지원 수업을 듣는 학생이 공부한 내용을 정리하기 위해 기록한 글임을 밝힙니다. 학생이 쓴 글이기 때문에 내용에 다소간의 오류가 있을 수 있습니다! + 이 글은 김영한님의 '스프링 핵심 원리 기초편' 수업을 듣고 정리한 내용입니다. 시작하기 앞서 : 한 줄 요약 스프링 컨테이너는 싱글톤 패턴의 문제점을 해결하고 싱글톤 패턴의 장점만 활용할 수 있도록 지원해준다. (대충 스프링이 짱이라는 이야기) 싱글톤이란? 싱글톤은 흔히 객체 지향 디자인 패턴으로 언급되는 용어로, 클래스의 인스턴스가 중복 생성되지 않게 보장해주는 패턴을 의미한다. 즉, 싱글톤(Singleton)이라는 단어에서 유추할 수 있듯 클래스의 인스턴스를 딱 1개만 두고 2개 이상은 허용하지 않는 것. 이러한 패턴은 웹 ..
국비학원에서 JSP / Servlet과 Mybatis를 배우면서, 또 개인적으로 Spring을 공부하면서 만난 다양한 용어들 중 혼동되는 용어들이 있어서 이러한 개념들을 정리하는 차원에서 MVC 패턴, DAO, DTO 등을 정리해보는 시간을 가져보려한다. 공부하는 학생이 작성하는 글이기 때문에 정보에 오류가 있을 수 있음을 알립니다! MVC 패턴 김영한님의 스프링 수업을 들으며 본격적으로 알게되었던 MVC 패턴은 소프트웨어 개발을 각각 Model-View-Controller로 나누어 역할을 분담하는 디자인 패턴을 말한다. 웹개발을 할 때 특히 흔히 마주하게 되는 디자인 패턴으로 클라이언트단에서 보여지는 화면과 서버 내에서의 비지니스 로직, 그리고 DB에 접근하는 요소를 구분하는데 중점을 둔다. MVC 패..
문제 2016년 1월 1일은 금요일입니다. 2016년 a월 b일은 무슨 요일일까요? 두 수 a ,b를 입력받아 2016년 a월 b일이 무슨 요일인지 리턴하는 함수, solution을 완성하세요. 요일의 이름은 일요일부터 토요일까지 각각 SUN,MON,TUE,WED,THU,FRI,SAT입니다. 예를 들어 a=5, b=24라면 5월 24일은 화요일이므로 문자열 "TUE"를 반환하세요. 제한조건 2016년은 윤년입니다. 2016년 a월 b일은 실제로 있는 날입니다. (13월 26일이나 2월 45일같은 날짜는 주어지지 않습니다) 푼제풀이 1월 1일을 기준으로 삼았을 때, a월 b일의 일수를 계산한다. (ex. 1월 1일은 1일 -> 5월 25일은 146일) 위 과정을 수행하기 위해 convertMonth라는 메..
글의 목적 김영한님의 스프링 핵심 원리 - 기본편의 섹션 1 수업을 듣고 공부한 스프링의 탄생 배경과 필요성을 스스로 정리해보고 이해하는 것! 본문 한줄 요약 스프링은 EJB의 한계를 극복하고 POJO 즉, 순수한 자바 형태의 객체 지향 설계를 지원하기 위해 탄생한 프레임워크이다. 본문 Chapter 1. 자바 진영의 추운 겨울 때는 바야흐로 2000년대 초반, 자바 표준 모델로서의 EJB(Enterprise Java Bean)가 자바의 생태계를 군림하던 때였다. 자바 진영의 개발자들은 어렵고 복잡한 EJB로 인해 크고 작은 난항을 겪곤 했다. EJB가 어깨를 펼치고 자바 생태계를 활보할 때마다, 개발자들의 야근 마일리지도 함께 쌓여 갔다. 개발자들은 끝도 모르고 몰려오는 야근에, 그들에게 허락된 유일한..
문제 슈퍼 게임 개발자 오렐리는 큰 고민에 빠졌다. 그녀가 만든 프랜즈 오천성이 대성공을 거뒀지만, 요즘 신규 사용자의 수가 급감한 것이다. 원인은 신규 사용자와 기존 사용자 사이에 스테이지 차이가 너무 큰 것이 문제였다. 이 문제를 어떻게 할까 고민 한 그녀는 동적으로 게임 시간을 늘려서 난이도를 조절하기로 했다. 역시 슈퍼 개발자라 대부분의 로직은 쉽게 구현했지만, 실패율을 구하는 부분에서 위기에 빠지고 말았다. 오렐리를 위해 실패율을 구하는 코드를 완성하라. 실패율은 다음과 같이 정의한다. 스테이지에 도달했으나 아직 클리어하지 못한 플레이어의 수 / 스테이지에 도달한 플레이어 수 전체 스테이지의 개수 N, 게임을 이용하는 사용자가 현재 멈춰있는 스테이지의 번호가 담긴 배열 stages가 매개변수로 ..
목적 선택정렬, 거품정렬, 삽입정렬이 무엇인지 이해한다. 각각의 정렬이 어떠한 차이를 지니는지 이해한다. 각각의 정렬의 시간복잡도를 이해한다. 각각의 정렬을 java에서 구현하는 방법을 살펴본다. 오늘의 준비물 정렬되지 않은 정수형 1차원 배열 배열을 오름차순으로 정렬하고야 말겠다는 뜨거운 마음 선택정렬(Selection Sort) 선택정렬은 정렬되지 않은 배열을 한번씩 돌면서 가장 작은값을 앞으로 쌓은 정렬 방법을 의미한다. 간단한 예시를 통해 알아보자. 메커니즘 정렬되지 않은 1차원 배열 [2, 3, 4, 1]이 있다. Step 1 배열의 값을 하나하나 점검한다. (2 -> 4 -> 3 -> 1) 가장 작은 값 1을 도출한다. 가장 작은 값 1을 첫 번째 배열 자리로 옮기고, 첫 번째 배열 자리에 있..