File tree 5 files changed +118
-17
lines changed
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 ())
3
3
4
4
result = 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 )
5
14
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