12018 : Yonsei TOTO#
์๊ฐ์ ํ |
๋ฉ๋ชจ๋ฆฌ์ ํ |
์ ๋ต๋น์จ |
---|---|---|
1์ด |
128MB |
34.7% |
๋ฌธ์ #
์ฐ์ธ๋ํ๊ต ์๊ฐ์ ์ฒญ์ด ์ผ๋ง ์ ๋ถํฐ ๋ฐ๋์ด, ๋ง์ผ๋ฆฌ์ง ์ ๋๋ก ๋ฐ๋์๋ค. ์ด ์ ๋๋ ๊ฐ๊ฐ์ ํ์๋ค์๊ฒ ๋ง์ผ๋ฆฌ์ง๋ฅผ ์ฃผ์ด ๋ฃ๊ณ ์ถ์ ๊ณผ๋ชฉ์ ๋ง์ผ๋ฆฌ์ง๋ฅผ ๊ณผ๋ชฉ๋น 1~36์ ๋ถ๋ฐฐํ๋ค. ๊ทธ๋ฆฌ๊ณ ๋ชจ๋ ๋ถ๋ฐฐ๊ฐ ๋์ด ๋๋ฉด ๊ณผ๋ชฉ์ ๋ํด์ ๋ง์ผ๋ฆฌ์ง๋ฅผ ๋ง์ด ํฌ์ํ ์์ผ๋ก ๊ทธ ๊ณผ๋ชฉ์ ์๊ฐ์ธ์๋งํผ ์ ์ฒญ๋๋ ๋ฐฉ์์ด๋ค.
์ฑ์ค์ด๋ ์ฐ์ธ๋ํ๊ต ์ฌํ ์ค์ธ ํ์์ด๋ค. ์ฑ์ค์ด๋ ์ ๋ฒ ์๊ฐ์ ์ฒญ์์ ์คํจํ์ฌ ํดํ์ ํ๊ธฐ ๋๋ฌธ์ ์ด๋ฒ ์๊ฐ์ ์ฒญ๋ง์ ํ์ฌ์ ์ผ๋ก ์ฑ๊ณตํ๋ ค๊ณ ํ๋ค. ๊ทธ๋์ ์ฑ์ค์ด๋ ํ๊ต ํํ์ด์ง๋ฅผ ๋ซ์ด๋ฒ๋ ธ๋ค.
๊ทธ ๋๋ถ์ ๋ค๋ฅธ ์ฌ๋๋ค์ด ์ ์ฒญํ ๋ง์ผ๋ฆฌ์ง๋ฅผ ๋ณผ ์ ์๊ฒ ๋์๋ค. ์ฑ์ค์ด๋ ์ฃผ์ด์ง ๋ง์ผ๋ฆฌ์ง๋ก ์ต๋ํ ๋ง์ ๊ณผ๋ชฉ์ ์ ์ฒญํ๊ณ ์ถ์ด ํ๋ค. (๋ด๊ฐ ๋ง์ผ๋ฆฌ์ง๋ฅผ ๋ฃ๊ณ ์ดํ์ ๊ณผ๋ชฉ์ ์ ์ฒญํ๋ ์ฌ๋์ ์๋ค) ๋ง์ผ๋ฆฌ์ง๋ ํ ๊ณผ๋ชฉ์ 1์์ 36๊น์ง ๋ฃ์ ์ ์๋ค.
input#
์ฒซ์งธ ์ค์๋ ๊ณผ๋ชฉ ์ n (1 โค n โค 100)๊ณผ ์ฃผ์ด์ง ๋ง์ผ๋ฆฌ์ง m (1 โค m โค 100)์ด ์ฃผ์ด์ง๋ค. ๊ฐ ๊ณผ๋ชฉ๋ง๋ค 2์ค์ ์ ๋ ฅ์ด ์ฃผ์ด์ง๋๋ฐ ์ฒซ์งธ ์ค์๋ ๊ฐ ๊ณผ๋ชฉ์ ์ ์ฒญํ ์ฌ๋ ์ Pi๊ณผ ๊ณผ๋ชฉ์ ์๊ฐ์ธ์ Li์ด ์ฃผ์ด์ง๊ณ ๊ทธ ๋ค์ ์ค์๋ ๊ฐ ์ฌ๋์ด ๋ง์ผ๋ฆฌ์ง๋ฅผ ์ผ๋ง๋ ๋ฃ์๋์ง ์ฃผ์ด์ง๋ค. (1 โค Pi โค100, 1 โค Li โค 100)
(๋จ ๋ง์ผ๋ฆฌ์ง๊ฐ ๊ฐ๋ค๋ฉด ์ฑ์ค์ด์๊ฒ ์ฐ์ ์์๊ฐ ์ฃผ์ด์ง๋ค๊ณ ํ์.)
output#
์ฃผ์ด์ง ๋ง์ผ๋ฆฌ์ง๋ก ์ต๋๋ก ๋ค์ ์ ์๋ ๊ณผ๋ชฉ ๊ฐ์๋ฅผ ์ถ๋ ฅํ๋ค.
think#
list์์ limit๋งํผ๋ง ํ๋ ์๊ฐ์ ์ฒญ์ธ์์ด ํ์ ์ธ์๋ณด๋ค ์ ์ผ๋ฉด ์ต์์ ๋ง์ผ๋ฆฌ์ง(1)๋ก ์๊ฐ์ ์ฒญ ๊ฐ๋ฅํ๋ค.
๋ง์ฝ ์๊ฐ์ ์ฒญ ์ธ์์ด ๊ฝ์ฐผ์ ๊ฒฝ์ฐ์๋ ํ์ ์ธ์ ์์ ์๋ ๊ฒ ์ค ์ต์๋งํผ ๋ฃ์ด์ฃผ๋ฉด ๋๋ค. ์กฐ๊ฑด๋๋ฌธ์ ์ฑ์ค์ด๊ฐ ๋์ผ ๋ง์ผ๋ฆฌ์ง์ผ ๊ฒฝ์ฐ๋ ์ด๊ธด๋ค.
์ด ๋ง์ผ๋ฆฌ์ง๋ฅผ ๊น๋ฉด์ +1์ฉ ํด์ฃผ๋ฉด ๊ฒฐ๊ณผ๊ฐ ๋์ฌ ๊ฒ์ด๋ค.
โ from su
python#
import sys, os
problem_num = "12018"
path = os.getcwd() + f"\\txt\\{problem_num}" + ".txt"
sys.stdin = open(path, "r")
input = sys.stdin.readline
subject_num, mileage = map(int, input().split())
need = []
result = 0
for i in range(subject_num):
enrolled, limit = map(int, input().split())
m = sorted(list(map(int, input().split())), reverse=True)[:limit]
if len(m) < limit:
need.append(1)
else:
need.append(m[-1])
need.sort()
for i in need:
if mileage >= i:
mileage -= i
result += 1
print(result)
1
JavaScript#
1const problem_num = "12018";
2const path = `${__dirname}\\txt\\${problem_num}.txt`;
3// const path = "/dev/stdin"; // for baekjoon
4
5const input = require("fs").readFileSync(path, 'utf8').toString().trim().split('\n');
6let currentLine = 0;
7
8//input setting
9function readLine() {
10 return input[currentLine++].split(' ').map(Number);
11}
12
13// mileage๋ ๋ค์์ -= ํด์ค์ผํ๊ธฐ ๋๋ฌธ์ let์ผ๋ก ๊ท์ subject_num์ ํ ๋ฒ๋ง ์ฌ์ฉ
14let [subject_num, mileage] = readLine();
15let need = [];
16let result = 0;
17
18for (let i = 0; i < subject_num; i++) {
19 const [enrolled, limit] = readLine();
20 const m = readLine().sort((a, b) => b - a).slice(0, limit);
21 if (m.length < limit) {
22 need.push(1);
23 } else {
24 need.push(m[m.length - 1])
25 }
26}
27
28need.sort((a, b) => a - b);
29for (let i = 0; i < need.length; i++) {
30 if (mileage >= need[i]) {
31 mileage -= need[i];
32 result++;
33 } else {
34 break;
35 }
36}
37console.log(result)
readLine
์ ํจ์ํํด์ ํ ์ค์ฉ ์ฝ์ด๊ฐ๋ฉด์ ์ฝ๋๊ฐ ์งํ๋๋ค. mileage๋ ๋ณ๊ฒฝ๋์ด์ผ ํ๋ ๋ณ์์ด๊ธฐ ๋๋ฌธ์ let์ผ๋ก ๋ง๋ค์ด์ฃผ๊ณ , sort((a,b) => b-a)๋ ์ญ์์ผ๋ก a-b๋ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌ๋๋ค. ์ฝ๋ ์์ฒด๊ฐ pythonicํ๊ธด ํ์ง๋ง javascript์ค๋ฌ์์ ๋์ค์ ํ์์ ๋ฐ๋ผ์ ์ฑ์ฐ๋๋ก ํ์. ์ง๊ธ์ ์ด๊ฑธ๋ก ๋ง์กฑ
JAVA#
1import java.io.*;
2import java.util.*;
3
4public class Main {
5 public static void main(String[] args) throws IOException {
6 BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
7 StringTokenizer st = new StringTokenizer(br.readLine());
8 int subjectNum = Integer.parseInt(st.nextToken());
9 int mileage = Integer.parseInt(st.nextToken());
10 ArrayList<Integer> need = new ArrayList<>();
11
12 for (int i = 0; i < subjectNum; i++) {
13 st = new StringTokenizer(br.readLine());
14 int enrolled = Integer.parseInt(st.nextToken());
15 int limit = Integer.parseInt(st.nextToken());
16
17 ArrayList<Integer> m = new ArrayList<>();
18 st = new StringTokenizer(br.readLine());
19 while (st.hasMoreTokens()) {
20 m.add(Integer.parseInt(st.nextToken()));
21 }
22 Collections.sort(m, Collections.reverseOrder());
23 if (m.size() < limit) {
24 need.add(1);
25 } else {
26 need.add(m.get(limit - 1));
27 }
28 }
29 Collections.sort(need);
30 int result = 0;
31 for (int i : need) {
32 if (mileage >= i) {
33 mileage -= i;
34 result++;
35 }
36 }
37
38 System.out.println(result);
39 }
40}
์๋ฐ๋ input์ ๋ฐ๋ ๊ณผ์ ์ด ์์ฒญ ๋ณ๋ก๋ค. ๊ธธ์ด๊ฐ ์์ฒญ ๊ธธ์ด์ง๊ณ ์ก์ค์ด ์์ฐฝ๋๊ฒ ๋ง์ ๊ฒ์ผ๋ก ๋ณด์ธ๋ค.