Algorithms/프로그래머스 13

[Lv2] 호텔 대실

📌 문제 https://school.programmers.co.kr/learn/courses/30/lessons/155651 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 📌 풀이 주어진 문제의 배열을 오름차순으로 정렬한다. 시간의 비교를 숫자로 바꿔서 숫자 비교로 바꾸거나 아니면 LocalTime을 사용해서 Time의 비교를 진행해도 된다. 방의 할당은 PriorityQueue를 사용해서 할당한다. PriorityQueue는 기본형을 사용시 우선순위가 항상 낮은 숫자가 먼저 나오게 된다. 📌 코드 import java.util.*; class Solut..

[Lv2] 뒤에 있는 큰 수 찾기

📌 문제 뒤에 있는 큰 수 찾기 (스택) https://school.programmers.co.kr/learn/courses/30/lessons/154539 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 📌 풀이 이 문제는 우선 주어진 제한사항에 따라 이중 for 문이 아닌 다른 방법을 사용해서 정답을 탐색해야 함을 인지해야 합니다 각 자리 수 크기를 비교하기 위해 스택을 사용해야 시간 초과를 방지할 수 있습니다. 자세한 풀이는 코드의 주석으로 대체합니다. 📌 코드 import java.util.*; class Solution { public int[] ..

[프로그래머스][Lv2] 할인행사

📌 문제 [할인행사 - 프로그래머스 lv2] 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 📌 풀이 고객이 원하는 장바구니에 대한 map을 생성합니다. 할인점에서 만들 수 있는 장바구니(10일치)를 생성합니다. ✔️number 원소의 합은 10이므로 10일치에 대한 장바구니를 생성합니다. 이 둘을 비교하여 일치한다면 (장바구니를 구성하고 있는 과일과 그 개수) answer 의 값을 증가시켜 줍니다. 📌 코드 import java.util.*; class Solution { private static int answer = 0; public int solu..

[프로그래머스][Lv1][Java] 푸드파이트 대회

📌 문제 푸드파이트 대회 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 📌 풀이 레벨 1의 구현 문제라서 그런지 풀이라고 할 만한 것이 딱히 없고 문제에 나온 조건대로 구현하면 쉽게 풀 수 있는 문제였습니다. 다만 바로 떠오르지 않은 문자열 뒤집는 메서드에 대한 공부가 필요할 것 같습니다. 📌 코드 import java.util.*; import java.util.Collections; class Solution { public String solution(int[] food) { String answer = ""; //0, 1, 2, 3 for(int ..

[프로그래머스][Lv2][Java] 폰켓몬

📌 문제 폰켓몬 - Lv2 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 📌 풀이 배열의 크기를 구해 고를 수 있는 폰켓몬의 숫자를 구합니다. HashSet을 사용하여 폰켓몬의 종류 번호가 담긴 1차원 배열의 중복값을 제거합니다. 여기서 폰켓몬을 뽑는 경우의 수와는 상관없이(굳이 따지자면 순열 - 순서가 있음) 중복값을 제거한 폰켓몬의 종류에 따라 정답이 정해집니다. ❗️어차피 정답으로 구하는 것은 폰켓몬의 종류❗️ 중복을 제거한 Set 의 크기가 고를 수 있는 폰켓몬의 수보다 크다면 '고를 수 있는 폰켓몬의 수'가 정답입니다. 만약 Set의 크기가 고를..

[프로그래머스][Lv2][Java] 멀리뛰기

📌 문제 멀리뛰기 - Lv2 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 📌 풀이 맨 처음에는 2를 나눠서 개수를 늘리는 방식을 생각했습니다... ➡️ 매우 큰 삽질... ❗️그러나 이 문제의 힌트는 멀리뛰기 할 수 있는 칸의 수가 1 또는 2 라는 곳에 있습니다. 멀리뛰기 할 수 있는 칸 수가 정해져 있으므로 총 점프한 거리는 점프하고자 하는 위치에서 1칸 전인 곳과 2칸 전인 곳에서 점프하는 경우로 생각할 수 있습니다.. 따라서 numList[i] = numList[i-1] + numList[i-2] 다음과 같은 점화식이 성립합니다. 📌 코드 cla..

[프로그래머스][Java] 삼총사

📌 문제 프로그래머스 Lv1 - 삼총사 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 📌 풀이 처음엔 순서가 없는 조합 문제라고 생각하여 파이썬에서와 같은 조합을 구해주는 라이브러리가 있나 생각했지만 이중 for문으로 구할 수 있는 문제였다. 이중 for문으로 세가지 숫자의 조합을 만들 수 있을 때까지 반복문을 돌린다 이 때 idx 를 선언하여 마지막 숫자는 고정 값으로 넣어준다. 📌 코드 class Solution { public int solution(int[] number) { int answer = 0; //3개의 숫자 그룹을 만들 수 있을때까지만..

[프로그래머스][Lv2][Java] 귤 고르기

📌 문제 귤 고르기 - lv2 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 📌 풀이 알고리즘 보다는 문제의 제약조건 내용대로 구현 하는 문제 고르기로 한 개수인 k개 만큼 고르기 위해 필요한 각 귤의 개수를 알아야 한다. ➡️ 이를 위해 Map 을 사용해야 함 Map을 만든 후에는 key-value 에서 value 값에 따라 내림차순 정렬(❗️가장 개수가 많은 귤부터 차감해야 함) 내림차순으로 차감하여 귤을 k개 만큼 다 골랐을 시점이 서로 다른 귤의 종류가 최소일 때이다. 📌 코드 import java.util.*; class Solution { pu..

[프로그래머스][Java] 기사단원의 무기

📌 문제 프로그래머스 - 기사단원의 무기 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 📌 풀이 numbers 의 숫자들마다 약수의 개수를 구하고 구한 약수의 개수를 정답 리스트에 담는다. 이 때 limit 보다 약수의 개수가 크다면 power 의 공격력 수치로 그 값을 대체한다. 리스트에 담긴 값들의 합을 return 한다. 📌 코드 import java.util.List; import java.util.ArrayList; import java.util.IntSummaryStatistics; class Solution { public int soluti..

[프로그래머스][Java] 명예의 전당 (1)

문제 [명예의 전당 (1)] 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 ❗️알고리즘을 굳이 생각하지 않아도 문제의 규칙대로 구현하면 되는 구현 문제 ❗️명예의 전당에 등록할 수 있는 수만큼 점수를 등록하면서 명예의 전당 리스트 사이즈가 == k 일때 가장 작은 최소 점수와 비교대상인 score[i] 점수보다 크냐 작냐에 따라 다른 규칙을 실행하면 됩니다. 코드 import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Collections;..