๐งฉ Baekjoon 30802 - ์ฐ์ปด ํคํธ
๋ฌธ์
2024๋ 2์ 3์ผ ๊ฐ์ต ์์ ์ธ ์จ์ฌ์ดํธ ๊ทธ๋๋ ์๋ ๋์์๋
์ฐธ๊ฐ์๋ค์๊ฒ ํฐ์ ์ธ ํ ์ฅ๊ณผ ํ ํ ์๋ฃจ๊ฐ ํฌํจ๋ ์ฐ์ปด ํคํธ๋ฅผ ๋๋ ์ค ์์ ์ ๋๋ค.
ํคํธ๋ฅผ ์ ์ํ๋ ์ ์ฒด๋ ๋ค์๊ณผ ๊ฐ์ ์กฐ๊ฑด์ผ๋ก๋ง ์ฃผ๋ฌธ์ด ๊ฐ๋ฅํฉ๋๋ค.ํฐ์ ์ธ ๋ S, M, L, XL, XXL, ๊ทธ๋ฆฌ๊ณ XXXL์ 6๊ฐ์ง ์ฌ์ด์ฆ๊ฐ ์์ต๋๋ค.
ํฐ์ ์ธ ๋ ๊ฐ์ ์ฌ์ด์ฆ์ T์ฅ ๋ฌถ์์ผ๋ก๋ง ์ฃผ๋ฌธํ ์ ์์ต๋๋ค.
ํ์ ํ ์ข ๋ฅ๋ก, P์๋ฃจ์ฉ ๋ฌถ์์ผ๋ก ์ฃผ๋ฌธํ๊ฑฐ๋ ํ ์๋ฃจ์ฉ ์ฃผ๋ฌธํ ์ ์์ต๋๋ค.
์ด N๋ช ์ ์ฐธ๊ฐ์ ์ค S, M, L, XL, XXL, XXXL ์ฌ์ด์ฆ์ ํฐ์ ์ธ ๋ฅผ ์ ์ฒญํ ์ฌ๋์
๊ฐ๊ฐ S, M, L, XL, XXL, XXXL๋ช ์ ๋๋ค.
ํฐ์ ์ธ ๋ ๋จ์๋ ๋์ง๋ง ๋ถ์กฑํด์๋ ์ ๋๊ณ ์ ์ฒญํ ์ฌ์ด์ฆ๋๋ก ๋๋ ์ฃผ์ด์ผ ํฉ๋๋ค.
ํ์ ๋จ๊ฑฐ๋ ๋ถ์กฑํด์๋ ์ ๋๊ณ ์ ํํ ์ฐธ๊ฐ์ ์๋งํผ ์ค๋น๋์ด์ผ ํฉ๋๋ค.ํฐ์ ์ธ ๋ฅผ T์ฅ์ฉ ์ต์ ๋ช ๋ฌถ์ ์ฃผ๋ฌธํด์ผ ํ๋์ง,
๊ทธ๋ฆฌ๊ณ ํ์ P์๋ฃจ์ฉ ์ต๋ ๋ช ๋ฌถ์ ์ฃผ๋ฌธํ ์ ์๊ณ ,
๊ทธ ๋ ํ์ ํ ์๋ฃจ์ฉ ๋ช ๊ฐ ์ฃผ๋ฌธํ๋์ง ๊ตฌํ์ธ์.
์ ๋ ฅ
์ฒซ ์ค์ ์ฐธ๊ฐ์์ ์ N์ด ์ฃผ์ด์ง๋๋ค. ๋์งธ ์ค์ ํฐ์ ์ธ ์ฌ์ด์ฆ๋ณ ์ ์ฒญ์์ ์ S, M, L, XL, XXL, XXXL์ด ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถ๋์ด ์ฃผ์ด์ง๋๋ค.
์ ์งธ ์ค์ ์ ์ ํฐ์ ์ธ ์ ํ์ ๋ฌถ์ ์๋ฅผ ์๋ฏธํ๋ ์ ์ T์ P๊ฐ ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถ๋์ด ์ฃผ์ด์ง๋๋ค.
์ถ๋ ฅ
์ฒซ ์ค์ ํฐ์ ์ธ ๋ฅผ T์ฅ์ฉ ์ต์ ๋ช ๋ฌถ์ ์ฃผ๋ฌธํด์ผ ํ๋์ง ์ถ๋ ฅํ์ธ์.
๋ค์ ์ค์ ํ์ P์๋ฃจ์ฉ ์ต๋ ๋ช ๋ฌถ์ ์ฃผ๋ฌธํ ์ ์๋์ง์,
๊ทธ ๋ ํ์ ํ ์๋ฃจ์ฉ ๋ช ๊ฐ ์ฃผ๋ฌธํ๋์ง ๊ตฌํ์ธ์.โ
์์
โ ์ ๋ ฅ 1
1
2
3
23
3 1 4 1 5 9
5 7
โ ์ถ๋ ฅ 1
1
2
7
3 2
์์ฑ ์ฝ๋
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
32
33
34
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws Exception {
long startTime = System.currentTimeMillis();
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
int[] sizes = Arrays.stream(br.readLine().split(" "))
.mapToInt(Integer::parseInt)
.toArray();
StringTokenizer st = new StringTokenizer(br.readLine());
int t = Integer.parseInt(st.nextToken());
int p = Integer.parseInt(st.nextToken());
int tBundle = Arrays.stream(sizes)
.map(i -> (i % t) > 0 ? (i / t) + 1 : (i / t))
.sum();
int pBundle = n / p;
int pEach = n % p;
System.out.println(tBundle);
System.out.printf("%d %d\n", pBundle, pEach);
long endTime = System.currentTimeMillis();
System.out.println("์คํ ์๊ฐ: " + (endTime - startTime) + " ms");
}
}
- ์คํ ์๊ฐ์
955 ms
๋ค.
๊ฐ์ ์ฝ๋
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
32
33
34
35
36
37
38
39
40
41
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws Exception {
long startTime = System.currentTimeMillis();
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
String[] sizeStrArr = br.readLine().split(" ");
int[] sizes = new int[sizeStrArr.length];
for (int i = 0; i < sizeStrArr.length; i++) {
sizes[i] = Integer.parseInt(sizeStrArr[i]);
}
StringTokenizer st = new StringTokenizer(br.readLine());
int t = Integer.parseInt(st.nextToken());
int p = Integer.parseInt(st.nextToken());
int tBundle = 0;
for (int size : sizes) {
if (size % t > 0) {
tBundle += (size / t) + 1;
} else {
tBundle += size / t;
}
}
int pBundle = n / p;
int pEach = n % p;
System.out.println(tBundle);
System.out.printf("%d %d\n", pBundle, pEach);
long endTime = System.currentTimeMillis();
System.out.println("์คํ ์๊ฐ: " + (endTime - startTime) + " ms");
}
}
- ์คํ ์๊ฐ์
918ย ms
๋ค.
ํ๊ณ
Stream
์ ํตํด ์์ฑํ ์ฝ๋๋ณด๋ค ์กฐ๊ธ ๋น ๋ฅด๊ธด ํ์ง๋ง ํ์ฌ๋ ๋ฐ์ดํฐ๊ฐ ์์์ ๊ทธ๋ฐ์ง ์ฐจ์ด๊ฐ ๋ฏธ๋ฏธํ๋ค.- ๋ฐ๋ณต์ ํจ์ฌ ๋ง์ด ํ๋ค๋ฉด ์ฐจ์ด๊ฐ ์ปค์ง ๊ฒ์ผ๋ก ๋ณด์ธ๋ค.
for-each
๋ฌธ์ด ๋น ๋ฅด๋ค๊ณ ๋ฌด์กฐ๊ฑดStream
๋ณด๋ค ์ข์ ๊ฒ์ ์๋๋ค.- ์ฝ๋๊ฐ ๋๋ฌด ๊ธธ์ด์ง์ง๋ง ์๋๋ค๋ฉด
Stream
์ด ๊ฐ๋ ์ฑ์ด ๋ ์ข๋ค๊ณ ์๊ฐํ๋ค. - ๋ ๋ฌธ๋ฒ ๊ฐ์
Trade-off
๋ฅผ ๊ณ ๋ คํด์ ์ ์ ํ ๋ฌธ๋ฒ์ ์ฌ์ฉํด์ผ๊ฒ ๋ค.