문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/148653 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 문제 설명에서 간단하게 추론할 수 있는것은 두 가지였다. 첫 번째는 1의 자리 수 부터 순차적으로 처리해야 한다는 것이다. 내려갔을 때는 상관이 없지만 올라갔을 때, 현재 층의 값이 증가하기 때문에, 큰 자리 수부터 계산하게 되면 한번 더 처리를 해야한다. 두 번째는 돌을 적게 쓰는 최적의 방법이다. 돌을 가장 적게 쓰는 방법은 5를 기준으로 5보다 크면 올라가고, 5보다 작다면..
해당 게시글은 점프 투 스프링부트 교재를 통한 개인 학습 용도이며 기초 세팅은 생략하였습니다. 자바 8, 스프링부트 2.7.7버전입니다. 서비스가 필요한 이유 여태까지 QuestionController에서 QuestionRepository를 직접 사용하여 질문 목록 데이터를 조회했다. 하지만 대부분의 규모있는 스프링부트 프로젝트는 컨트롤러에서 리포지터리를 직접 호출하지 않는다. 중간에 서비스(Service)를 두어 데이터를 처리한다. 서비스는 스프링에서 데이터 처리를 위해 작성하는 클래스이다. 서비스는 왜 필요할까? 모듈화 예를들어 어떤 컨트롤러가 여러개의 리포지터리를 사용하여 데이터를 조회한후 가공하여 리턴한다고 가정해 보자. 이러한 기능을 서비스로 만들어 두면 컨트롤러에서는 해당 서비스를 호출하여 사..
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 해당 문제는 프로그래머스에서 탐욕법(Greedy) 카테고리 안에 있는 문제이다. 탐욕 알고리즘은 정리해 두었던 내용이다 ( 링크 ) 문제 풀이 아직 익숙치않은 Comparator 인터페이스로 이중배열인 costs의 값을 cost순으로 오름차순 했다는 것 정도다 Comparator의 사용법은 간단히 정리 해 두었다 ( 링크 ) 알고리즘 활용에 미숙해서인지 모르겠지만 내 생각엔 탐욕법이나 기타 알고리즘들을 사용해서 푼 것 같지는 않다 물론 이게 어떤 알고리즘이라고 한다면 공부를 더 깊게 해야 할 것 같다 1. 섬..
[ Iterator ] 컬렉션 프레임워크(Collection Framework)에서 값을 가져오거나 삭제할 때 사용한다 [ 장단점 ] 모든 컬렉션 프레임워크에서 공통으로 사용이 가능하다 3개의 메서드만 알면 되어서 쉽게 값을 가져오고 제거할 수 있다 처음부터 끝까지의 단방향 반복만 가능하다 값을 변경하거나 추가하는 것이 불가능하다 대량의 데이터를 제어할 때 속도가 느리다 [ 메서드 ] Iterator.hasNext() : 다음 값이 들었는지 확인 후 true / false를 반환한다 Iterator.next() : 다음 값을 가져온다 Iterator.remove() : next시 가져왔던 값을 컬렉션에서 삭제시킨다. 반드시 next()후에 사용해야 한다 [ 사용하기 ] import java.util.Ar..
문제 링크 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀기 바로 캐치한 것은 Set을 활용한 보석 종류 확인 ▶ 나중에 조건으로 활용 딱 이거 하나였다 그래서 엄청나게 헤딩을 하며 풀었던 것 같다 부끄러운 헤딩의 흔적들.. 더보기 더보기 import java.util.*; public class Diamond3 { int[] Solution(String[] gems) { //보석 종류 Set set = new HashSet(); for(String str : gems) set.add(str); System.out.println(set); //보석이 1..
문제 설명 프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 기능보다 먼저 개발될 수 있고, 이때 뒤에 있는 기능은 앞에 있는 기능이 배포될 때 함께 배포됩니다. 먼저 배포되어야 하는 순서대로 작업의 진도가 적힌 정수 배열 progresses와 각 작업의 개발 속도가 적힌 정수 배열 speeds가 주어질 때 각 배포마다 몇 개의 기능이 배포되는지를 return 하도록 solution 함수를 완성하세요. 제한 사항 작업의 개수(progresses, speeds배열의 길이)는 100개 이하입니다. 작업 진도는 100 미만의 자연수입니다. 작업 속도는 100 이하의 자..
프로그래머스 문제를 풀다가 중간에 Console 확인을 위해 코드를 실행 시켰는데 에러가 발생했다 Unable To Launch The selection cannot be launched, and there are no recent launches. 해결 방법 Window - Preferences - Run/Debug - Launching에서 해당 항목으로 체크 후 Apply
[ 람다함수 ] 프로그래밍 언어에서 사용되는 개념으로 익명 함수(Anonymous functions)를 지칭하는 용어 익명 함수들은 어느 언어에서나 일급 객체라는 특징을 가짐 일급 객체 다른 객체들에 일반적으로 적용 가능한 연산을 모두 지원하는 객체 를 가리킨다. 보통 함수에 인자로 넘기기, 수정하기, 변수에 대입하기와 같은 연산을 지원할 때 일급 객체라고 한다. [ 특징 ] 람다 대수는 이름을 가질 필요가 없고 두 개 이상의 입력이 있는 함수는 1개의 입력만 받는 람다 대수로 단순화 될 수 있다 - 커링 람다 실행블록에는 클래스의 필드와 메서드를 제약없이 사용 가능하다 람다식 내에서 사용되는 지역변수는 final이 없어도 상수로 간주된다 람다식으로 선언된 변수명은 다른 변수명과 중복될 수 없다 람다 대..