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
- 윤성우 열혈자료구조
- Selection Sorting
- Serialization
- JSON
- datastructure
- Graph
- 메모리구조
- R
- Stack
- 이스케이프 문자
- insertion sort
- C 언어 코딩 도장
- s
- 알기쉬운 알고리즘
- Algorithm
- C programming
- 이것이 자바다
- 혼자 공부하는 C언어
- coding test
- buffer
- 윤성우의 열혈 자료구조
- list 컬렉션
- stream
Archives
- Today
- Total
Engineering Note
K번째 큰 수 본문
it 취업을 위한 알고리즘 문제 풀이
문제
코드
import sys
sys.stdin = open("input.txt","rt")
n,k = map(int,input().split())
card = list(map(int, input().split()))
res = set()
for i in range(n):
for j in range(i+1,n):
for m in range(j+1,n):
res.add(card[i]+card[j]+card[m])
res = list(res)
res.sort(reverse = True)
print(res[k-1])
문제해결방법
- 카드 3장을 뽑아 구할수 있는 모든 합을 구하고 중복을 제거한 형태의 K번째 큰 수를 구해야 하므로 set 자료구조를 사용했다.
- 3중 for문으로 i를 고정하고 j를 i+1부터 고정한채 m을 j+1부터 n-1까지 고르면서 합을 구하고 다시 j를 증가시키고 다음 합들을 구하고를 반복하여 합을 구한다.
- 선택하는 방법을 다시 구체적으로 나타낸 그림은 아래에 있다.
- 아래와 같이 10개의 숫자가 리스트에 저장되어 있을 때 3숫자를 선택하는 방법은 나열한 방법중 이부를 나타낸 것이다.
- 0번 인덱스(13)를 선택하고 1번 인덱스(15)를 선택한 상태에서
- 2번 인덱스를 선택, 다시 3번인덱스 선택, 4번인덱스 선택 ...9번인덱스 선택
- 다시 0번 인덱스(13)를 선택하고 2번 인덱스(34)를 선택한 상태에서
- 3번 인덱스를 선택, 다시 4번 인덱스를 선택, 5번 인덱스를 선택 .. 9번 인덱스를 선택하면 된다.
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
13 | 15 | 34 | 23 | 45 | 65 | 33 | 11 | 26 | 42 |
'Problem Solving > 파이썬 알고리즘 문제풀이(코딩테스트 대비)' 카테고리의 다른 글
정다면체 (0) | 2021.05.30 |
---|---|
자릿수의 합 (0) | 2021.05.30 |
대표값 (0) | 2021.05.29 |
K번째 작은수 (0) | 2021.05.12 |
K번째 약수 (0) | 2021.05.12 |
Comments