본문 바로가기

분류 전체보기

(166)
[ 프로그래머스 - Java ] 기능개발 ( 자바 ) ( 스택/큐 / 기능개발 ) [문제] 문제 설명 프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 기능보다 먼저 개발될 수 있고, 이때 뒤에 있는 기능은 앞에 있는 기능이 배포될 때 함께 배포됩니다. 먼저 배포되어야 하는 순서대로 작업의 진도가 적힌 정수 배열 progresses와 각 작업의 개발 속도가 적힌 정수 배열 speeds가 주어질 때 각 배포마다 몇 개의 기능이 배포되는지를 return 하도록 solution 함수를 완성하세요. 제한사항 작업의 개수(progresses, speeds배열의 길이)는 100개 이하입니다. 작업 진도는 100 미만의 자연수입..
[ 프로그래머스 - Java ] 더 맵게 ( 자바 ) ( 힙(Heap) / 더 맵게 ) [문제] 문제 설명 매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같이 특별한 방법으로 섞어 새로운 음식을 만듭니다. 섞은 음식의 스코빌 지수 = 가장 맵지 않은 음식의 스코빌 지수 + (두 번째로 맵지 않은 음식의 스코빌 지수 * 2) Leo는 모든 음식의 스코빌 지수가 K 이상이 될 때까지 반복하여 섞습니다. Leo가 가진 음식의 스코빌 지수를 담은 배열 scoville과 원하는 스코빌 지수 K가 주어질 때, 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 섞어야 하는 최소 횟수를 return 하도록 solution ..
[ 스프링 ] 다양한 db 연결방법 ( 4편 AOP ) [시작] 이전 다양한 db연결방법 ( 3편 test code, JUnit, AssertJ )에 이어서 이번에는 각 코드가 실행하는데 얼마나 걸리는지 알아보도록 하겠습니다. 그리고 AOP를 사용하여 각 기능들의 처리속도를 log를 통해서 확인해 보도록 하겠습니다. 들어가기 전에 아래 설명에서는 전체적인 흐름 이해를 위하여 간단하게 구조나 부분 코드만 보여주기 때문에 전체 코드를 보시고 싶으시면 아래 github링크를 확인해 주세요. [AOP (Aspect Oriented Programming) - 관점 지향 프로그래밍] AOP 사용 이유 개발을 진행하다 보면 같은 코드를 여러 곳에 적용시켜야 하는 상황이 발생합니다. 이러한 공통 기능을 적용하기 위해 보통 상속을 사용하지만 java는 다중 상속이 불가능하다..
[ 프로그래머스 - Java ] 타겟 넘버 ( 자바 ) ( 깊이/너비 우선 탐색( DFS, BFS ) / 타겟 넘버 ) [문제] 문제 설명 n개의 음이 아닌 정수가 있습니다. 이 수를 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 있습니다. -1+1+1+1+1 = 3 +1-1+1+1+1 = 3 +1+1-1+1+1 = 3 +1+1+1-1+1 = 3 +1+1+1+1-1 = 3 사용할 수 있는 숫자가 담긴 배열 numbers, 타겟 넘버 target이 매개변수로 주어질 때 숫자를 적절히 더하고 빼서 타겟 넘버를 만드는 방법의 수를 return 하도록 solution 함수를 작성해주세요. 제한사항 주어지는 숫자의 개수는 2개 이상 20개 이하입니다. 각 숫자는 1 이상 50 ..
[ 프로그래머스 - Java ] 짝지어 제거하기 ( 자바 ) ( 2017 팁스타운 / 짝지어 제거하기 ) [문제] 문제 설명 짝지어 제거하기는, 알파벳 소문자로 이루어진 문자열을 가지고 시작합니다. 먼저 문자열에서 같은 알파벳이 2개 붙어 있는 짝을 찾습니다. 그다음, 그 둘을 제거한 뒤, 앞뒤로 문자열을 이어 붙입니다. 이 과정을 반복해서 문자열을 모두 제거한다면 짝지어 제거하기가 종료됩니다. 문자열 S가 주어졌을 때, 짝지어 제거하기를 성공적으로 수행할 수 있는지 반환하는 함수를 완성해 주세요. 성공적으로 수행할 수 있으면 1을, 아닐 경우 0을 리턴해주면 됩니다. 예를 들어, 문자열 S = baabaa 라면 b aa baa → bb aa → aa → 의 순서로 문자열을 모두 제거할 수 있으므로 1을 반환합니다. 제한사항 문자열의 길이 : 1,000,000이하..
[ 스프링 ] 다양한 db연결방법 ( 3편 test code, JUnit, AssertJ ) [시작] 이전 다양한 db연결방법 ( 2편 Jdbc , JdbcTemplate , Jpa , Spring Data Jpa )에 이어서 이번에는 이전 시간에 만든 코드를 테스트 코드를 통해서 검증하는 방법을 알려드리려고 합니다. 들어가기 전에 아래 설명에서는 전체적인 흐름 이해를 위하여 간단하게 구조나 부분 코드만 보여주기 때문에 전체 코드를 보시고 싶으시면 아래 github링크를 확인해 주세요. [Test code 작성 전 준비] 준비 우선 본 프로젝트에서는 테스트코드를 작성하기 위해 junit, assertJ 2가지 프레임워크를 사용할 예정입니다. JUnit : 자바 단위테스트를 위한 프레임워크 AssertJ : 오픈소스 라이브러리로 에러 메시지와 테스트 코드의 가독성을 높여줌 이렇게 두가지를 활용하여..
[ 프로그래머스 - Java ] 메뉴 리뉴얼 ( 자바 ) ( 2021 KAKAO BLIND RECRUITMENT / 메뉴 리뉴얼 ) [문제] 문제 설명 레스토랑을 운영하던 스카피는 코로나19로 인한 불경기를 극복하고자 메뉴를 새로 구성하려고 고민하고 있습니다. 기존에는 단품으로만 제공하던 메뉴를 조합해서 코스요리 형태로 재구성해서 새로운 메뉴를 제공하기로 결정했습니다. 어떤 단품메뉴들을 조합해서 코스요리 메뉴로 구성하면 좋을 지 고민하던 "스카피"는 이전에 각 손님들이 주문할 때 가장 많이 함께 주문한 단품메뉴들을 코스요리 메뉴로 구성하기로 했습니다. 단, 코스요리 메뉴는 최소 2가지 이상의 단품메뉴로 구성하려고 합니다. 또한, 최소 2명 이상의 손님으로부터 주문된 단품메뉴 조합에 대해서만 코스요리 메뉴 후보에 포함하기로 했습니다. 예를 들어, 손님 6명이 주..
[ 프로그래머스 - Java ] 뉴스 클러스터링 ( 자바 ) ( 2018 KAKAO BLIND RECRUITMENT / [1차] 뉴스 클러스터링 ) [문제] 문제 설명 여러 언론사에서 쏟아지는 뉴스, 특히 속보성 뉴스를 보면 비슷비슷한 제목의 기사가 많아 정작 필요한 기사를 찾기가 어렵다. Daum 뉴스의 개발 업무를 맡게 된 신입사원 튜브는 사용자들이 편리하게 다양한 뉴스를 찾아볼 수 있도록 문제점을 개선하는 업무를 맡게 되었다. 개발의 방향을 잡기 위해 튜브는 우선 최근 화제가 되고 있는 "카카오 신입 개발자 공채" 관련 기사를 검색해보았다. 카카오 첫 공채..'블라인드' 방식 채용 카카오, 합병 후 첫 공채.. 블라인드 전형으로 개발자 채용 카카오, 블라인드 전형으로 신입 개발자 공채 카카오 공채, 신입 개발자 코딩 능력만 본다 카카오, 신입 공채.. "코딩..

728x90