티스토리 뷰

Algorithm/Solution

[백준 10774] - 저지

기내식은수박바 2020. 3. 12. 22:53
반응형

 

문제

  • 학교 대표팀은 1부터 번호가 매겨진 저지를 학생 선수들에게 배분하고자 한다.
    • 저지의 사이즈는 S, M, L 중 하나이다 (물론 S = small, M = medium, L = Large다).
  • 각각의 선수들은 구체적인 저지의 번호와 선호하는 사이즈를 요구했다.
    • 선수들은 만약 자신이 원했던 번호가 아니거나, 선호하는 사이즈보다 작은 사이즈의 옷을 받으면 불만이 생길 것이다.
    • 그들을 만족시키기 위해서는, 요구하는 번호가 맞고 사이즈는 같거나 그 이상이어야 한다.
    • 두 명의 학생들이 같은 저지를 받을 수는 없다.
  • 조건을 만족하는 최대 학생 수를 구하는 프로그램을 작성하여라.

 

입력

  • 첫 번째 줄은 저지의 수인 J가 주어진다.
  • 두 번째 줄은 선수들의 수인 A가 주어진다.
  • 다음 J줄에는 등번호 j인 저지의 사이즈가 주어진다. (1 ≤ j ≤ J)
  • 마지막 A줄에는 선수들이 요구하는 사이즈와 번호가 입력된다.
  • 테스트케이스의 50%는 1 ≤ J ≤ \(10^{3}\) , 1 ≤ A ≤ \(10^{3}\) 를 만족하고,
  • 나머지 50%는 1 ≤ J ≤ \(10^{6}\) , 1 ≤ A ≤ \(10^{6}\) 를 만족한다.

 

출력

 

솔루션

  • 배열을 할당하여 번호에 해당하는 저지가 이미 다른 사람에게 배정되었는지를 체크한다.
    • 배정되었다면 해당 인덱스 배열 값은 'A'가 들어있다.
    • 배정되지 않았다면 'S', 'M', 'L' 중 하나가 들어있을 것이다.
      • 사이즈를 비교해서 저지 사이즈가 원하는 사이즈 보다 크거나 같다면 배정해주고 작다면 배정하지 않고 넘어간다.
    • 이런 과정으로 모든 사람 수만큼 반복하면 된다.

 

Code

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
42
43
public static void main(String[] args) throws IOException {
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
    int J = Integer.parseInt(br.readLine());
    int A = Integer.parseInt(br.readLine());
 
    char[] jersey = new char[J + 1];
 
    for (int i = 1; i <= J; i++)
        jersey[i] = br.readLine().charAt(0);
 
    int count = 0;
    for (int i = 0; i < A; i++) {
        StringTokenizer st = new StringTokenizer(br.readLine());
        char size = st.nextToken().charAt(0);
        int num = Integer.parseInt(st.nextToken());
 
        if (jersey[num] != 'A') {
            switch (size) {
            case 'S':
                jersey[num] = 'A';
                count++;
                break;
            case 'M':
                if (jersey[num] == 'M' || jersey[num] == 'L') {
                    jersey[num] = 'A';
                    count++;
                }
                break;
            case 'L':
                if (jersey[num] == 'L') {
                    jersey[num] = 'A';
                    count++;
                }
                break;
            }
        }
    }
    bw.write(count + " ");
    bw.flush();
    bw.close();
    br.close();
}
cs

 

결과

반응형

'Algorithm > Solution' 카테고리의 다른 글

[백준 6497] - 전력난  (0) 2020.03.16
[백준 1647] - 도시 분할 계획  (0) 2020.03.13
[백준 10775] - 공항  (0) 2020.03.12
[백준 4195] - 친구 네트워크  (0) 2020.03.12
[백준 1976] - 여행 가자  (0) 2020.03.11
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/05   »
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
글 보관함