๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
  • ์žฅ์›์ต ๊ธฐ์ˆ ๋ธ”๋กœ๊ทธ
๐Ÿ’ป Computer Science/- Data Structure, Algorithm

[์•Œ๊ณ ๋ฆฌ์ฆ˜ PS] ๋ฐฑ์ค€ 1946๋ฒˆ ์‹ ์ž… ์‚ฌ์› ์ž๋ฐ” ๋ฌธ์ œํ’€์ด

by Wonit 2021. 8. 19.

๋ฌธ์ œ

ํ•ด๋‹น ํฌ์ŠคํŒ…์€ ๋ฐฑ์ค€์˜ ๋ฌธ์ œ ์ด๋ฆ„ ์˜ ์ ‘๊ทผ๊ณผ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•œ ๊ธ€ ์ž…๋‹ˆ๋‹ค.
์ •๋‹ต ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ํ™•์ธํ•˜์‹œ๋ ค๋ฉด solve url ์—์„œ ํ™•์ธ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

 

1946๋ฒˆ: ์‹ ์ž… ์‚ฌ์›

์ฒซ์งธ ์ค„์—๋Š” ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์˜ ๊ฐœ์ˆ˜ T(1 ≤ T ≤ 20)๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๊ฐ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์˜ ์ฒซ์งธ ์ค„์— ์ง€์›์ž์˜ ์ˆซ์ž N(1 ≤ N ≤ 100,000)์ด ์ฃผ์–ด์ง„๋‹ค. ๋‘˜์งธ ์ค„๋ถ€ํ„ฐ N๊ฐœ ์ค„์—๋Š” ๊ฐ๊ฐ์˜ ์ง€์›์ž์˜ ์„œ๋ฅ˜์‹ฌ์‚ฌ ์„ฑ

www.acmicpc.net

 

์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ ์ ‘๊ทผํ•ด์•ผ ํ•˜๋Š”์ง€๋ฅผ ๋จผ์ € ์ƒ๊ฐํ•ด๋ณด์ž.

 

๋ฌธ์ œ ์ ‘๊ทผ

 

์ด๋ฒˆ ๋ฌธ์ œ๋Š” Greedy ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ด์šฉํ•ด์„œ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ์ด๋‹ค.

 

Greedy ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ํŠน์„ฑ๋‹ต๊ฒŒ ํ•ต์‹ฌ ์•„์ด๋””์–ด๊ฐ€ ์ค‘์š”ํ•œ ๋ฌธ์ œ๊ฐ™๋‹ค.

 

ํ•ด๊ฒฐ๋ฒ•

 

๋งŒ์•ฝ ์„œ๋ฅ˜ ์ ์ˆ˜๋˜ ๋ฉด์ ‘์ด๋˜ ํ•˜๋‚˜๋ผ๋„ 1๋“ฑ์—๊ฒŒ ๋–จ์–ด์ง€๋ฉด ๊ทธ ์ธ์›์€ ์ ˆ๋Œ€๋กœ ์ž…์‚ฌํ•  ์ˆ˜ ์—†๋‹ค.

 

์ฆ‰, ์„œ๋ฅ˜ 1๋“ฑ๋ณด๋‹ค ๋ฉด์ ‘ ์ ์ˆ˜๊ฐ€ ๋‚ฎ์€ ์ง€์›์ž๋Š” ๋ชจ๋‘ ๋–จ์–ด์ง€๊ฒŒ ๋œ๋‹ค.

 

์ด์œ ๋Š” ์„œ๋ฅ˜ 1๋“ฑ์˜ ๋ฉด์ ‘ ๋“ฑ์ˆ˜๊ฐ€ 4๋“ฑ์ด๋ผ๋ฉด, ๋‹ค๋ฅธ ์ง€์›์ž๋Š” ๋ฌด์กฐ๊ฑด ์„œ๋ฅ˜๋Š” 1๋“ฑ๋ณด๋‹ค ๋‚ฎ๊ฒŒ ๋˜๋Š”๋ฐ, ๋ฉด์ ‘ ๋งˆ์ €๋„ 1๋“ฑ๋ณด๋‹ค ๋ชปํ•œ ๋“ฑ์ˆ˜๊ฐ€ ๋‚˜์˜ค๋ฉด 1๋“ฑ๋ณด๋‹ค ํ•ญ์ƒ ๋’ค์ณ์ง€๊ธฐ ๋•Œ๋ฌธ์— ํƒˆ๋ฝํ•˜๊ฒŒ ๋œ๋‹ค.

 

์ด๋ฅผ ์ด์šฉํ•ด์„œ ์„œ๋ฅ˜ ๋“ฑ์ˆ˜๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌ์„ ์ˆ˜ํ–‰ํ•˜๊ณ , ์„œ๋ฅ˜ 2๋“ฑ ๋ถ€ํ„ฐ ๋ฉด์ ‘ ์ ์ˆ˜๊ฐ€ ์„œ๋ฅ˜ 1๋“ฑ์˜ ์ ์ˆ˜๋ณด๋‹ค ๋†’์œผ๋ฉด ์ฑ„์šฉํ•˜๋ฉด ๋œ๋‹ค.

 

๋Œ€์‹  ๋งค๋ฒˆ ๋ฉด์ ‘์˜ ๋“ฑ์ˆ˜๋ฅผ ์ปคํŠธ๋ผ์ธ์œผ๋กœ ๊ฐฑ์‹ ์‹œ์ผœ์ค˜์•ผํ•œ๋‹ค.

 

if(applicants[i].interview < cutLine) {
    count++;
    cutLine = applicants[i].interview;
}

 

์ •๋‹ต ์ฝ”๋“œ

public class Main {
    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 t = Integer.parseInt(br.readLine());

        while(t-- > 0) {
            int n = Integer.parseInt(br.readLine());

            Applicant[] applicants = new Applicant[n];

            for (int i = 0; i < n; i++) {
                int[] s = Arrays.stream(br.readLine().split(" "))
                        .mapToInt(Integer::parseInt).toArray();
                applicants[i] = new Applicant(s[0], s[1]);
            }
            Arrays.sort(applicants, (a, b) -> a.paper - b.paper);

            int cutLine = applicants[0].interview;

            int count = 1;

            for (int i = 1; i < applicants.length; i++) {
                if(applicants[i].interview < cutLine) {
                    count++;
                    cutLine = applicants[i].interview;  // ???
                }
            }

            bw.write(count + "\n");
        }

        bw.flush();
        bw.close();
    }

    private static class Applicant {
        int paper;
        int interview;

        public Applicant(int paper, int interview) {
            this.paper = paper;
            this.interview = interview;
        }
    }
}

์ •๋‹ต ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ํ™•์ธํ•˜์‹œ๋ ค๋ฉด solve url ์—์„œ ํ™•์ธ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

๋Œ“๊ธ€