File tree Expand file tree Collapse file tree 5 files changed +118
-17
lines changed
Expand file tree Collapse file tree 5 files changed +118
-17
lines changed Original file line number Diff line number Diff line change 1+ #include < bits/stdc++.h>
2+
3+ using namespace std ;
4+
5+ int n, m, k;
6+ vector<int > v;
7+
8+ int main () {
9+ // N, M, K를 공백을 기준으로 구분하여 입력 받기
10+ cin >> n >> m >> k;
11+
12+ // N개의 수를 공백을 기준으로 구분하여 입력 받기
13+ for (int i = 0 ; i < n; i++) {
14+ int x;
15+ cin >> x;
16+ v.push_back (x);
17+ }
18+
19+ sort (v.begin (), v.end ()); // 입력 받은 수들 정렬하기
20+ int first = v[n - 1 ]; // 가장 큰 수
21+ int second = v[n - 2 ]; // 두 번째로 큰 수
22+
23+ // 가장 큰 수가 더해지는 횟수 계산
24+ int cnt = (m / (k + 1 )) * k;
25+ cnt += m % (k + 1 );
26+
27+ int result = 0 ;
28+ result += cnt * first; // 가장 큰 수 더하기
29+ result += (m - cnt) * second; // 두 번째로 큰 수 더하기
30+
31+ cout << result << ' \n ' ; // 최종 답안 출력
32+ }
Original file line number Diff line number Diff line change 1+ import java .util .*;
2+
3+ public class Main {
4+
5+ public static void main (String [] args ) {
6+ Scanner sc = new Scanner (System .in );
7+
8+ // N, M, K를 공백을 기준으로 구분하여 입력 받기
9+ int n = sc .nextInt ();
10+ int m = sc .nextInt ();
11+ int k = sc .nextInt ();
12+
13+ // N개의 수를 공백을 기준으로 구분하여 입력 받기
14+ int [] arr = new int [n ];
15+ for (int i = 0 ; i < n ; i ++) {
16+ arr [i ] = sc .nextInt ();
17+ }
18+
19+ Arrays .sort (arr ); // 입력 받은 수들 정렬하기
20+ int first = arr [n - 1 ]; // 가장 큰 수
21+ int second = arr [n - 2 ]; // 두 번째로 큰 수
22+
23+ // 가장 큰 수가 더해지는 횟수 계산
24+ int cnt = (m / (k + 1 )) * k ;
25+ cnt += m % (k + 1 );
26+
27+ int result = 0 ;
28+ result += cnt * first ; // 가장 큰 수 더하기
29+ result += (m - cnt ) * second ; // 두 번째로 큰 수 더하기
30+
31+ System .out .println (result );
32+ }
33+
34+ }
Original file line number Diff line number Diff line change 1- # N, K을 공백을 기준으로 구분하여 입력 받기
2- n , k = map (int , input ().split ())
1+ # N, M을 공백을 기준으로 구분하여 입력 받기
2+ n , m = map (int , input ().split ())
33
44result = 0
5+ # 한 줄씩 입력 받아 확인하기
6+ for i in range (n ):
7+ data = list (map (int , input ().split ()))
8+ # 현재 줄에서 '가장 작은 수' 찾기
9+ min_value = 10001
10+ for a in data :
11+ min_value = min (min_value , a )
12+ # '가장 작은 수'들 중에서 가장 큰 수 찾기
13+ result = max (result , min_value )
514
6- while True :
7- # N이 K로 나누어 떨어지는 수가 될 때까지만 1씩 빼기
8- target = (n // k ) * k
9- result += (n - target )
10- n = target
11- # N이 K보다 작을 때 (더 이상 나눌 수 없을 때) 반복문 탈출
12- if n < k :
13- break
14- # K로 나누기
15- result += 1
16- n //= k
17-
18- # 마지막으로 남은 수에 대하여 1씩 빼기
19- result += (n - 1 )
20- print (result )
15+ print (result ) # 최종 답안 출력
Original file line number Diff line number Diff line change 1+ # N, K을 공백을 기준으로 구분하여 입력 받기
2+ n , k = map (int , input ().split ())
3+ result = 0
4+
5+ // N이 K 이상이라면 K로 계속 나누기
6+ while n >= k :
7+ # N이 K로 나누어 떨어지지 않는다면 N에서 1씩 빼기
8+ while n % k != 0 :
9+ n -= 1
10+ result += 1
11+ # K로 나누기
12+ n //= k
13+ result += 1
14+
15+ # 마지막으로 남은 수에 대하여 1씩 빼기
16+ while n > 1 :
17+ n -= 1
18+ result += 1
19+
20+ print (result )
Original file line number Diff line number Diff line change 1+ # N, K을 공백을 기준으로 구분하여 입력 받기
2+ n , k = map (int , input ().split ())
3+
4+ result = 0
5+
6+ while True :
7+ # N이 K로 나누어 떨어지는 수가 될 때까지만 1씩 빼기
8+ target = (n // k ) * k
9+ result += (n - target )
10+ n = target
11+ # N이 K보다 작을 때 (더 이상 나눌 수 없을 때) 반복문 탈출
12+ if n < k :
13+ break
14+ # K로 나누기
15+ result += 1
16+ n //= k
17+
18+ # 마지막으로 남은 수에 대하여 1씩 빼기
19+ result += (n - 1 )
20+ print (result )
You can’t perform that action at this time.
0 commit comments