반응형
250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 스프링 빈
- 기본형 매개변수
- 백준 1935
- removeAll
- 리버스 프록시
- 참조형 매개변수
- 싱글톤 패턴
- k번째큰수
- SOLID원칙
- 네트워크
- TCP/IP 4계층
- www.naver.com치면 발생하는일
- 팩토리패턴
- 쇠막대기
- 스프링 컨테이너
- 스프링 싱글톤
- 후위표기식
- Class Loader
- try-catch
- 옵저버 패턴
- @Tranctional
- 스프링
- 참조형 반환타입
- 전략 패턴
- 팩토리 패턴
- mvvm패턴
- 자바의 면접
- 백준 2164
- 빈 타입 조회
- 포워드 프록시
Archives
- Today
- Total
스파이더 웹 개발
K번째 큰 수 본문
728x90
반응형
1. 3장을 뽑아 각 카드에 적힌 수를 합한 값을 기록해야 하므로 Collection을 사용한다
2. 기록한 값 중 k번째 큰 수를 출력하므로 Collection의 값을 정렬한다
3. 예시에서 (만약 큰 수부터....) 합한 값이 중복인 경우 중복을 제거하고 k값을 찾는 것이므로
Collection에서 Set을 사용한다
4. 출력에서 k번째 수가 존재하지않는 경우 -1을 출력하므로 정답 answer 초기값을 -1로 지정해준다
import java.util.*;
public class a {
public static int solution(int n, int k, int[] arr){
int answer =-1;
Set<Integer> set = new TreeSet<>(Collections.reverseOrder());
for(int i=0; i<n; i++){
for(int j=i+1; j<n; j++){
for(int s=j+1; s<n; s++){
set.add(arr[i] + arr[j] + arr[s]);
}
}
}
int count =1;
for(int i : set){
if(count==k){
answer = i;
break;
}
count++;
}
return answer;
}
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int n = scan.nextInt();
int k = scan.nextInt();
int[] arr = new int[n];
for(int i=0; i<n; i++){
arr[i]=scan.nextInt();
}
System.out.println(solution(n,k,arr));
}
}
TreeSet 객체의 경우 정렬을 지원하므로 문제에서 중복과 정렬의 키워드를 해결하기위하여 TreeSet을 사용한다
3장의 카드의 값을 합한 값이므로 3중 for문을 이용하되, 초기값은 중복된 카드를 뽑을 수 없으므로 +1을하여 초기값을 설정해준다 이후 count를 선언하여, k번째 위치와 count의 위치가 같은 경우 해당 값을 answer에 대입한다
728x90
반응형
'알고리즘' 카테고리의 다른 글
공주 구하기 (0) | 2022.07.28 |
---|---|
백준 1935 - 후위 표기식 (0) | 2022.07.27 |
쇠막대기 - Stack (0) | 2022.07.26 |
백준 2164 (0) | 2022.07.22 |
백준 2941 - 크로아티 알파벳 (0) | 2022.07.20 |
Comments