
전형적인 DP 문제다. 뭐.. 어렵지 않게 풀었다. 나는 재귀 방식으로 풀었는데, 다른 사람의 풀이를 보니까 굳이 재귀방식으로 풀지 않아도 되는 방법도 있어서 정리해보려한다. 위와 같은 삼각형의 꼭대기에서 바닥까지 이어지는 경로 중, 거쳐간 숫자의 합이 가장 큰 경우를 찾아보려고 합니다. 아래 칸으로 이동할 때는 대각선 방향으로 한 칸 오른쪽 또는 왼쪽으로만 이동 가능합니다. 예를 들어 3에서는 그 아래칸의 8 또는 1로만 이동이 가능합니다. 삼각형의 정보가 담긴 배열 triangle이 매개변수로 주어질 때, 거쳐간 숫자의 최댓값을 return 하도록 solution 함수를 완성하세요. 제한사항 삼각형의 높이는 1 이상 500 이하입니다. 삼각형을 이루고 있는 숫자는 0 이상 9,999 이하의 정수입니다..

스프링에서 servlet-context.xml과 같은 xml파일에서 bean을 정의하고 여러가지 설정을 하는데, 이를 xml파일이 아닌 자바 클래스로 구현을 해보겠다. xml에 비해 짧고 간단하게 설정할 수 있어 편리한 장점을 가지고 있다. 1. Java 설정 클래스 @Configuration public class AppConf { @Bean public MemberDao memberDao(){ return new MemberDao(); } } 설정 클래스로 사용할 클래스 위에 @Configuration 애노테이션을 붙여준다. 스프링은 이 애노테이션이 붙은 설정 클래스를 내부적으로 스프링 빈으로 등록한다. @Bean을 사용하는 클래스에는 반드시 @Configuration 어노테이션을 활용하여 해당 클래..
이제 Level3을 풀게되니까 난이도가 갑자기 올라갔다.. 이번 문제도 재귀함수와 set을 이용하여 풀어서 구현은 간신히 했으나 시간초과..😨 이제부터는 구현도 어렵지만 구현보다는 효율적인 알고리즘과 방법을 생각하는 것이 관건이다..! 그 방법을 생각해내면 금방 풀 수 있지만 그 방법을 생각하는 것이 어렵다 ㅠㅠ 그래서 이번 문제도 다른사람의 풀이를 조금 참고하여 풀었다. 일렬로 나열된 n개의 풍선이 있습니다. 모든 풍선에는 서로 다른 숫자가 써져 있습니다. 당신은 다음 과정을 반복하면서 풍선들을 단 1개만 남을 때까지 계속 터트리려고 합니다. 임의의 인접한 두 풍선을 고른 뒤, 두 풍선 중 하나를 터트립니다. 터진 풍선으로 인해 풍선들 사이에 빈 공간이 생겼다면, 빈 공간이 없도록 풍선들을 중앙으로 밀..
처음에 이 문제 풀 때 다 풀지 못했다. 이 문제는 효율성 테스트가 있어서 효율적인 알고리즘을 생각해야한다. 무식한 방법으로 매번 for문을 돌려서 체크하는 것은 정확성 테스트에서는 맞을 수 있어도, 효율성 테스트를 넘어가지 못한다. 이 문제를 풀려했던 날에 컨디션이 안좋았던 것도 있고, 내 실력이 조금 부족해서도 있겠지만 해결할 방법이 생각나지 않았었다. 결국 어떻게 문제에 접근해야하는지 카카오 해설을 참고했고, 쉽게 풀 수 있었다. 내가 스쳐 생각했던 방법과 비슷했지만 시도해보진 않았었는데 이게 맞았었다니..! 문제를 풀면 풀수록 해시 즉, unordered_map 을 사용해야하는 문제가 많다는 것을 느낀다. 카카오는 하반기 경력 개발자 공개채용을 진행 중에 있으며 현재 지원서 접수와 코딩테스트가 종..
lower_bound - 이진탐색(Binary Search)기반의 탐색 방법이다. (배열 또는 리스트가 정렬 되어있어야 한다.) - lower_bound는 찾으려 하는 key값이 "없으면" key값보다 큰 가장 작은 정수 값을 찾는다. - 같은 원소가 여러개 있어도 상관 없으며, 항상 유일한 해를 구할 수 있습니다. - 헤더 파일에 있음 STL의 lower_bound 함수 template ForwardIterator lower_bound (ForwardIterator first, ForwardIterator last, const T& val); 반환형이 Iterator 이므로 vector container인 경우에는 iterator에서 v.begin()을 뺀 값으로 몇 번째 인자인지 계산을 하고, 배열인..
어노테이션을 이용하여 컨트롤러를 구현하는 방식의 가장 큰 장점 1) 컨트롤러 타입에 제한이 없다 다른 컨트롤러를 구현하는 방식들은 정해진 인터페이스를 구현해야 되요. 하지만 어노테이션은어느 클래스든지 컨트롤러가 될 수 있다. 2) 한 개의 컨트롤러에 하나 이상의 URL이 매핑될 수 있다 어노테이션을 이용하면 URL 매핑을 컨트롤러 클래스 단위가 아니라, 메소드 단위로 할 수 있다.**** 때문에, 요청의 타입이 늘어나도, 컨트롤러 내의 메소드만 늘어난다. @Component component-scan을 선언에 의해 특정 패키지 안의 클래스들을 스캔하고, @Component Annotation이 있는 클래스에 대하여 bean 인스턴스를 생성한다. @Controller, @Service, @Repositor..
2021년 1월 28일 오전 12:39이다. 막 하루가 넘어간 시점에 오늘 느낀 것에 대해 글을 써보려고 한다.😎 지금까지 xml을 이용하는 방식으로 스프링을 배우고 구현해보았다. "프레임워크" 라는 것은 처음 배우는 것이었기 때문에 이론적으론 알아도 어떻게 쓰이는 지 와닿지가 않았었다. 하나하나 배우면서 프레임워크의 용도는 이런것이구나 , 이런 점이 편해지는구나가 조금씩 느껴졌다. 일단 내가 지금까지 배우고 느낀 스프링 프레임워크는 모든 페이지에서 행해야하는 노가다 일을 한번에 관리할 수 있도록 줄여주는 것, 객체 의존성을 낮춰주는 것, 결합력을 낮춰주는 것, servlet 설정을 편하게 할 수 있는 것이라고 생각이 들었다. 프로젝트가 커지고 페이지가 많아지고 기능이 많아지면, xml을 이용하는 방식 ..
정적 파일 서비스 하기 WEB-INF 안의 내용들은 기본적으로 접근이 불가하다. 예를 들어 css나 js나 image 파일들은 접근이 불가하다. 그런데 jsp파일은 접근이 가능하다. 왜일까? dispatcher / web.xml 파일에 보면 dispatcher의 servlet-mapping의 url-pattern을 / 로 지정했었다. /* 로 지정하면 jsp파일 까지 접근 불가능하도록 막는 것이고, / 로 지정하면 jsp파일만 요청에 대한 컨트롤러를 찾는다는 뜻이다. 그러니 css나 js, image 폴더의 파일들은 접근할 수 없다. 근데 그렇게 되면 js나 css 등 자원 파일들을 jsp에서 불러오지 못하는 문제점이 생긴다. 그래서 접근을 할 수 있도록 지정할 수 있다. [ dispatcher-serv..