Skip to content

Commit 12f4742

Browse files
committed
Update
1 parent 4fafc22 commit 12f4742

File tree

5 files changed

+118
-17
lines changed

5 files changed

+118
-17
lines changed

3/2.cpp

+32
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
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+
}

3/2.java

+34
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
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+
}

3/4.py

+12-17
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,15 @@
1-
# N, K을 공백을 기준으로 구분하여 입력 받기
2-
n, k = map(int, input().split())
1+
# N, M을 공백을 기준으로 구분하여 입력 받기
2+
n, m = map(int, input().split())
33

44
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)
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) # 최종 답안 출력

3/5.py

+20
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
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)

3/6.py

+20
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
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)

0 commit comments

Comments
 (0)