λ°±μ€€ 1946 파이썬

2021. 5. 4. 23:29ㆍPython

www.acmicpc.net/problem/1946

 

1946번: μ‹ μž… 사원

첫째 μ€„μ—λŠ” ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€μ˜ 개수 T(1 ≤ T ≤ 20)κ°€ 주어진닀. 각 ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€μ˜ 첫째 쀄에 μ§€μ›μžμ˜ 숫자 N(1 ≤ N ≤ 100,000)이 주어진닀. λ‘˜μ§Έ 쀄뢀터 N개 μ€„μ—λŠ” 각각의 μ§€μ›μžμ˜ μ„œλ₯˜μ‹¬μ‚¬ μ„±

www.acmicpc.net

이 λ¬Έμ œλŠ” μš°μ„  이해가 μ€‘μš”ν•΄ 보인닀. μ²˜μŒμ— 문제 자체λ₯Ό 이해 λͺ» ν•΄μ„œ μ–΄λ–»κ²Œ μ ‘κ·Όν•΄μ•Ό 예제 정닡이 λ‚˜μ˜€λŠ”μ§€λ„ κΈ΄κ°€λ―Όκ°€ν•΄μ„œ.. μ²˜μŒμ— 쑰금 μ‹œλ„ν•˜λ‹€κ°€ λ°©μΉ˜ν•΄ λ‘μ—ˆλ‹€κ°€ λ‹€μ‹œ κΊΌλ‚΄μ„œ ν’€μ—ˆλ‹€.

 

1946 μ§ˆλ¬Έμ—μ„œ μ–΄λ–€ 뢄이 μ½”λ©˜νŠΈμ— λ„ˆλ¬΄ 잘 μ„€λͺ…ν•΄μ£Όμ…”μ„œ μ„€λͺ…을 κ·ΈλŒ€λ‘œ κ°€μ Έμ™”λ‹€.

 

μ§€μ›μžκ°€ λͺ¨λ‘ ν•œ μž₯μ†Œμ— λͺ¨μ˜€λ‹€κ³  생각해 λ³Όκ²Œμš”.
κ·Έ 쀑에 ν•œ μ§€μ›μžμ˜ μž…μž₯이 λ˜μ–΄, λ‹€λ₯Έ μ§€μ›μžλ“€μ˜ λ©΄μ ‘, μ„œλ₯˜ 점수λ₯Ό λ΄…λ‹ˆλ‹€.
κ·Έ 쀑에 μ–΄λ–€ ν•œ μ‚¬λžŒμ΄λΌλ„ λ‚˜λ³΄λ‹€ 두 μ μˆ˜κ°€ 더 λ†’μœΌλ©΄, λ‚˜λŠ” μ„ λ°œμ΄ μ•ˆ λ©λ‹ˆλ‹€. 그런 μ‚¬λžŒμ΄ μ—†μœΌλ©΄ λ‚˜λŠ” μ„ λ°œλ˜λŠ” κ±°κ³ μš”.
이λ₯Ό λͺ¨λ“  μ§€μ›μžμ— λŒ€ν•΄ λ‹€ ν•΄λ³΄λŠ” κ²ƒμž…λ‹ˆλ‹€.

 

μ—¬κΈ°μ„œ λ‚΄κ°€ 얻은 νžŒνŠΈλŠ” 그럼 μš°μ„  list 의 μ •λ ¬ κΈ°λŠ₯(sort)λ₯Ό 써보면 μ–΄λ–¨κΉŒ? μ˜€λ‹€. 

리슀트둜 μ •λ ¬ν•΄μ„œ ν•œ 번 print해보고 κ²°κ³Όλ₯Ό 보며 μƒκ°ν•΄λ³΄λ‹ˆ,

첫 번째 μ„œλ₯˜ μ‹¬μ‚¬μ—μ„œ 1등을 ν•œ μ‚¬λžŒμ€ 무쑰건 μ„ λ°œλœλ‹€. μ„œλ₯˜ 심사 2등은 1λ“±μ˜ λ©΄μ ‘ μ μˆ˜λ³΄λ‹€ 높은 λ“±μˆ˜λ₯Ό 가지면 μ„ λ°œλœλ‹€. 

 

λΌλŠ” 결둠을 내릴 수 μžˆμ—ˆλ‹€. 

즉, μ²˜μŒμ— 정렬을 톡해 μ„œλ₯˜ 심사 λ“±μˆ˜λ₯Ό μΌκ΄„μ μœΌλ‘œ μ •λ¦¬ν•˜κ³ , 였직 λ©΄μ ‘ λ“±μˆ˜λ‘œλ§Œ μ„ λ°œ 유무λ₯Ό νŒλ‹¨ν•˜λŠ” 것과 κ°™λ‹€. 

 

κ·Έλž˜μ„œ μ²˜μŒμ—λŠ” λ‹¨μˆœν•˜κ²Œ for 문을 λŒλ©΄μ„œ λ‚΄ μ„œλ₯˜μ‹¬μ‚¬ λ“±μˆ˜λ³΄λ‹€ λ°”λ‘œ μ•žμ— μžˆλŠ” μ‚¬λžŒμ˜ λ©΄μ ‘ λ“±μˆ˜λ₯Ό λ‚˜μ™€ λΉ„κ΅ν•˜λŠ” μ‹μœΌλ‘œ μ½”λ“œλ₯Ό μ§°λŠ”λ°, 'ν‹€λ ΈμŠ΅λ‹ˆλ‹€'λ₯Ό λ°›μ•˜λ‹€. κ·Έλž˜μ„œ λ°˜λ‘€λ₯Ό μ°Ύλ‹€ λ³΄λ‹ˆ μ•„ν•˜, λ‚΄ 기쀀이 잘λͺ»λ˜μ—ˆλ‹€λŠ” κ±Έ 인지할 수 μžˆμ—ˆλ‹€.

 

λ‹¨μˆœνžˆ μ•žμ‚¬λžŒκ³Ό λΉ„κ΅ν•˜λ‹€κ°„ λ¬Έμ œκ°€ μƒκΈ°λŠ”λ°, λŒ€ν‘œμ μΈ λ¬Έμ œλŠ” 이와 κ°™λ‹€.

 

<μž…λ ₯>

1
7
1 4
2 3
3 2
4 1
5 7
6 6
7 5

<λ§Œμ•½ μ„œλ₯˜ λ“±μˆ˜ μ•ž μ‚¬λžŒκ³Όμ˜ 비ꡐ'만' μ§„ν–‰ν•œλ‹€λ©΄ κ²°κ³Ό>

6

<μ‹€μ œ μ •λ‹΅>

4

 

μ™œ 그럴까? λ°”λ‘œ 5 7/ 6 6 / 7 5 λΆ€λΆ„μ—μ„œ λ¬Έμ œκ°€ 생긴닀.

5 7은 μžμ—°μŠ€λŸ½κ²Œ μ„ λ°œλ˜μ§€ λͺ»ν•œλ‹€. 그런데 6 6 은 μ•žμ˜ 5 7 κ³Ό λΉ„κ΅ν–ˆμ„ λ•Œ 6이 7보닀 μž‘κΈ° λ•Œλ¬Έμ— μ„ λ°œλœλ‹€λŠ” 착각을 ν•˜κ²Œ λœλ‹€.

 

즉, μ•žμ‚¬λžŒκ³Όμ˜ 비ꡐ가 μ•„λ‹ˆλΌ 'μ΅œμ†Ÿκ°’'으둜 비ꡐλ₯Ό ν•΄μ•Ό 문제 없이 λŒμ•„κ°„λ‹€. μ•„κΉŒμ™€ 같은 μƒν™©μ—μ„œλŠ” 4번째 루프인 4 1 μ—μ„œ 1이 μ΅œμ†Ÿκ°’μ΄ λ˜λ―€λ‘œ μžμ—°μŠ€λŸ½κ²Œ 5 7 /6 6 /7 5λŠ” νƒˆλ½ν•˜κ²Œ λœλ‹€.

 

<전체 μ½”λ“œ>

from sys import stdin

a = []
passed = []
t = int(stdin.readline())

for i in range(0, t):
    passed.append(1)
    n = int(stdin.readline())
    for j in range(0,n):
        ranks = list(map(int, stdin.readline().split()))
        a.append(ranks)
    a.sort();
    
    min = a[0][1]

    for j in range(1, n):
        if a[j][1] < min:
            passed[i] += 1
            min = a[j][1]

    del a[0:]

for i in range(0,t):
    print(passed[i])

'Python' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

λ°±μ€€ 2011 파이썬  (1) 2021.07.31
λ°±μ€€ 1924 파이썬  (0) 2021.06.29
λ°±μ€€ 1476 파이썬  (0) 2021.04.07
λ°±μ€€ 1021번 파이썬  (0) 2021.04.02
λ°±μ€€ 1550번 파이썬  (0) 2021.03.27