본문 바로가기

전체 글71

[level 2] 금고털이 (JAVA) 문제 요약 루팡은 배낭을 하나 메고 은행금고에 들어왔다. 금고 안에는 값비싼 금, 은, 백금 등의 귀금속 덩어리가 잔뜩 들어있다. 배낭은 W ㎏까지 담을 수 있다. 각 금속의 무게와 무게당 가격이 주어졌을 때 배낭을 채울 수 있는 가장 값비싼 가격은 얼마인가? 루팡은 전동톱을 가지고 있으며 귀금속은 톱으로 자르면 잘린 부분의 무게만큼 가치를 가진다. 문제 분석 보석을 가격이 높은 순서대로 정렬 배낭에 담을 수 있는 최대 무게인 bagWeight를 가지고, 배낭에 담을 수 있는 최대 가치를 계산 코드 import java.util.*; import java.io.*; public class Main { static class Jewelry implements Comparable { int weight; i.. 2023. 5. 10.
[level 3] 불량 사용자 - 64064 문제 요약 주어진 사용자 아이디 목록과 불량 사용자 아이디 목록에서, 불량 사용자 아이디 목록에 매핑되는 사용자 아이디 목록을 찾아내서 당첨에서 제외되어야 할 제재 아이디 목록의 경우의 수를 구하는 문제입니다. 각 사용자 아이디는 알파벳 소문자와 숫자로 이루어진 문자열입니다. 불량 사용자 아이디 목록은 각 아이디마다 문자열 내에서 일부 문자를 '*'로 가려서 주어집니다. 문제 분석 불량 사용자 아이디 목록에서 가능한 조합 구하기 각 불량 사용자 아이디에 대해 가능한 모든 사용자 아이디 조합 구하기 중복 제외한 가능한 경우의 수 구하기 DFS를 사용하자. 코드 import java.util.*; class Solution { static Set resultSet; public int solution(Str.. 2023. 5. 10.
[level 2] 소수 찾기 - 42839 (JAVA) 문제 요약 한자리 숫자가 적힌 종이 조각이 흩어져있습니다. 흩어진 종이 조각을 붙여 소수를 몇 개 만들 수 있는지 알아내려 합니다. 각 종이 조각에 적힌 숫자가 적힌 문자열 numbers가 주어졌을 때, 종이 조각으로 만들 수 있는 소수가 몇 개인지 return 하도록 solution 함수를 완성해 주세요. 문제 분석 가능한 경우를 모두 구해 Set에 넣어 중복을 제거하며 정말탐색한다. 코드 import java.util.*; import java.util.stream.Collectors; class Solution { public int solution(String numbers) { int answer = 0; // 문자열 numbers를 int 배열로 변환 int[] numArr = numbers... 2023. 5. 10.
[level 2] H-Index - 42747 (JAVA) 문제 요약 H-Index는 과학자의 생산성과 영향력을 나타내는 지표입니다. 어느 과학자의 H-Index를 나타내는 값인 h를 구하려고 합니다. 위키백과 1에 따르면, H-Index는 다음과 같이 구합니다. 어떤 과학자가 발표한 논문 n편 중, h번 이상 인용된 논문이 h 편 이상이고 나머지 논문이 h번 이하 인용되었다면 h의 최댓값이 이 과학자의 H-Index입니다. 어떤 과학자가 발표한 논문의 인용 횟수를 담은 배열 citations가 매개변수로 주어질 때, 이 과학자의 H-Index를 return 하도록 solution 함수를 작성해 주세요. 문제 분석 순차정렬 후 계산해야 한다. 코드 import java.util.*; class Solution { public int solution(int[] c.. 2023. 5. 10.
[level 2] 가장 큰 수 - 42746 (JAVA) 문제 요약 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 수는 6210입니다. 0 또는 양의 정수가 담긴 배열 numbers가 매개변수로 주어질 때, 순서를 재배치하여 만들 수 있는 가장 큰 수를 문자열로 바꾸어 return 하도록 solution 함수를 작성해 주세요. 문제 분석 정렬 조건을 두 수를 합쳤을 때 큰 수가 되는 것을 기준으로 한다. 모든 수가 0인 경우를 체크한다. 코드 import java.util.*; class Solution { public String solution(int[] nu.. 2023. 5. 10.
[level 1] 두 개 뽑아서 더하기 - 68644 (JAVA) 문제 요약 정수 배열 numbers가 주어집니다. numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return 하도록 solution 함수를 완성해 주세요. 문제 분석 Set을 사용해 중복값을 제거하며 이중반복문을 사용해 두 수를 더해가며 set에 저장 후 정렬하면 된다. 코드 import java.util.*; class Solution { public int[] solution(int[] numbers) { // 결과값을 저장할 answer 배열을 선언 int[] answer; // 중복값을 제외하며 숫자의 합을 저장할 Set을 선언. Set set = new HashSet(); // numbers 배열의 원소들을 순회하며 가능한.. 2023. 5. 7.