๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
  • What would life be If we had no courage to attemp anything?
Problem Solving/BAEKJOON

[baekjoon]python #1946 ์‹ ์ž…์‚ฌ์›

by DevIseo 2022. 5. 13.

https://www.acmicpc.net/problem/1946

#1946 ์‹ ์ž…์‚ฌ์›

์‹ ์ž…์‚ฌ์›์ด ๋˜๊ณ ์‹ถ์€ ๋งˆ์Œ์— ์ œ๋ชฉ๋ณด๊ณ  ํ‘ผ ๋ฌธ์ œ!


 

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

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

www.acmicpc.net

 

 

๐Ÿ•์ฒ˜์Œ์— ํ‘ผ ํ‘ผ ์ฝ”๋“œ -- ์‹œ๊ฐ„์ดˆ๊ณผ...

import sys
T = int(sys.stdin.readline())
for tc in range(T):
    N = int(sys.stdin.readline())
    arr = [list(map(int,sys.stdin.readline().split())) for _ in range(N)]
    arr.sort()


    fail = []
    def employment(interview,idx):
        global fail
        for j in range(idx,N):
            if arr[j][1]>interview:
                if arr[j][1] not in fail:
                    fail.append(arr[j][1])

    for i in range(N):
        employment(arr[i][1],i)

    print(N-len(fail))

import sys
T = int(sys.stdin.readline())
for tc in range(T):
    N = int(sys.stdin.readline())
    arr = [list(map(int,sys.stdin.readline().split())) for _ in range(N)]
    arr.sort()

    fail=set()
    def employment(interview,idx):
        global fail
        for j in range(idx,N):
            if arr[j][1]>interview:
                fail.add(arr[j][1])


    for i in range(N):
        employment(arr[i][1],i)
    print(N-len(fail))

๐ŸŽˆ arr๋ฐฐ์—ด์„ sortํ•ด์ฃผ๋ฉด 1๋ฒˆ ์ธ๋ฑ์Šค๋งŒ ๋น„๊ตํ•ด์„œ ํƒˆ๋ฝ์ž๋“ค์˜ ์ˆ˜๋ฅผ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค.

๐ŸŽˆ ๋‚˜๋Š” ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด์„œ ํ•จ์ˆ˜ ์ธ์ž๋กœ interview ์ ์ˆ˜์™€ index๋ฅผ ๋„ฃ์–ด ๋‹ค์Œ ๊ฐ’์„ ๋น„๊ตํ•ด interview๋ณด๋‹ค ํฌ๋‹ค๋ฉด ํƒˆ๋ฝ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ฐฐ์—ด์— ๋„ฃ๋Š” ์‹์œผ๋กœ ํ–ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋‹ค๋ณด๋ฉด ์ค‘๋ณต์ด ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์ƒ๊ฒจ set์„ ์ด์šฉํ•ด ์ค‘๋ณต์„ ์ œ๊ฑฐํ–ˆ๋‹ค.

๐ŸŽˆ ํ•˜์ง€๋งŒ ๋ถˆํ•„์š”ํ•œ ์ค‘๋ณต ๊ณผ์ •์ด ๋งŽ๊ณ  ๊ฒฐ๊ตญ for๋ฌธ์•ˆ์— 2์ค‘ for๋ฌธ์ด ๋˜์–ด ์‹œ๊ฐ„๋ณต์žก๋„ ๋ฉด์—์„œ ์—„์ฒญ๋‚˜๊ฒŒ ์†ํ•ด์˜€๋‹ค. ๊ทธ๋ž˜์„œ ์‹œ๊ฐ„์ดˆ๊ณผ๋กœ ์ฑ„์ ์ด ๋˜์ง€ ์•Š์•˜๋‹ค.

 

๐Ÿ”ํ†ต๊ณผํ•œ ์ฝ”๋“œ

import sys
T = int(sys.stdin.readline())
for tc in range(T):
    N = int(sys.stdin.readline())
    arr = [list(map(int,sys.stdin.readline().split())) for _ in range(N)]
    #documnet์ „ํ˜•์„ ๊ธฐ์ค€์œผ๋กœ sort
    arr.sort()

    hire=1 #arr[0][1]์€ ํ™•์‹คํ•œ ํ•ฉ๊ฒฉ์ž๋‹ˆ๊นŒ 
    		#( document์ „ํ˜•์—์„œ arr[0]๋ณด๋‹ค ์ž‘์€ ์ˆ˜๋Š” ์—†๊ธฐ ๋•Œ๋ฌธ)
    winner = arr[0][1] 
    for i in range(N):
    	#winner๋ณด๋‹ค ์ž‘์œผ๋ฉด ํ•ฉ๊ฒฉ์ž
        if arr[i][1]<winner:
            winner=arr[i][1]
            hire+=1
    print(hire)

๐ŸŽˆ๋ถˆํ•„์š”ํ•œ ์ฝ”๋“œ๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  winner๋ฅผ ๊ฐฑ์‹ ํ•ด arr[i][1]์„ ๋น„๊ตํ•ด์ฃผ๋Š” ๋ฐฉ๋ฒ•์„ ํƒํ–ˆ๋‹ค.

๐ŸŽˆ์ด์ค‘ for๋ฌธ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์‹œ๊ฐ„๋ณต์žก๋„๋ฉด์—์„œ ํ›จ์”ฌ ํšจ์œจ์ ์ด๊ณ  ๊ฐ„๊ฒฐํ•œ ์ฝ”๋“œ๋กœ ๋ฐ”๋€Œ์—ˆ๋‹ค.

 

โ•๊ด€๋ จ ALGORITHM ์ด๋ก 

2022.05.13 - [Problem Solving/ALGORITHM] - ๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜(Greedy Algorithm)

 

๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜(Greedy Algorithm)

๊ทธ๋ฆฌ๋””(Greedy) ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๐ŸŽˆ๊ฐœ๋… - ํƒ์š• ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋ผ๊ณ  ๋ถˆ๋ฆฌ๋ฉฐ, ์—ฌ๋Ÿฌ ๊ฒฝ์šฐ ์ค‘ ํ•˜๋‚˜๋ฅผ ๊ฒฐ์ •ํ•ด์•ผ ํ•  ๋•Œ ๊ทธ ์ˆœ๊ฐ„์— ์ตœ์ ์ด๋ผ๊ณ  ์ƒ๊ฐ๋˜๋Š” ๊ฒƒ์„ ์„ ํƒํ•ด ๋‚˜๊ฐ€๋Š” ๋ฐฉ์‹์œผ๋กœ ์ง„ํ–‰ํ•˜์—ฌ ์ตœ์ข…์ ์ธ ํ•ด๋‹ต์— ๋„

luminous24.tistory.com

 

๋Œ“๊ธ€