ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [λ°±μ€€] 2535 μ•„μ‹œμ•„ μ •λ³΄μ˜¬λ¦Όν”Όμ•„λ“œ with Python
    PS 2022. 2. 8. 02:20
    728x90
    λ°˜μ‘ν˜•

    πŸ“Œ BOJ 2535 μ•„μ‹œμ•„ μ •λ³΄μ˜¬λ¦Όν”Όμ•„λ“œ

    πŸ’‘ 쑰건

    1. λŒ€νšŒμ°Έκ°€ 학생 수λ₯Ό λ‚˜νƒ€λ‚΄λŠ” N, 3 ≀ N ≀ 100.

    2. N개의 μ€„μ—λŠ” 각 μ€„λ§ˆλ‹€ ν•œ ν•™μƒμ˜ μ†Œμ† κ΅­κ°€ 번호, 학생 번호, 그리고 성적이 ν•˜λ‚˜μ˜ λΉˆμΉΈμ„ 사이에 두고 주어진닀.

    3. κ΅­κ°€ λ²ˆν˜ΈλŠ” 1λΆ€ν„° μˆœμ„œλŒ€λ‘œ ν•˜λ‚˜μ˜ μ •μˆ˜λ‘œ 주어지며, 각 ν•™μƒλ²ˆν˜ΈλŠ” 각 λ‚˜λΌλ³„λ‘œ 1λΆ€ν„° μˆœμ„œλŒ€λ‘œ ν•˜λ‚˜μ˜ μ •μˆ˜λ‘œ 주어진닀.

    4. μ μˆ˜λŠ” 0 이상 1000 μ΄ν•˜μ˜ μ •μˆ˜μ΄κ³ , λ™μ μžλŠ” μ—†λ‹€κ³  κ°€μ •ν•œλ‹€.

    5. μ •λ ¬, κ΅¬ν˜„μœ ν˜•μ˜ 문제.

    πŸ–₯ μ†ŒμŠ€ μ½”λ“œ

    from sys import stdin
    
    n = int(stdin.readline())
    grade = []
    for i in range(n):
        a,b,c = map(int, stdin.readline().split())
        grade.append((c, a, b))
    
    h = {}
    
    grade.sort(reverse=True)
    cnt = 0
    for i in range(n):
        if cnt == 3:
            break
    
        if grade[i][1] not in h:
            print(*grade[i][1:])
            cnt += 1
            h[grade[i][1]] = 1
        else:
            if h[grade[i][1]] < 2:
                print(*grade[i][1:])
                h[grade[i][1]] += 1
                cnt += 1
            else:
                continue

    πŸ”– 예제 및 μ‹€ν–‰κ²°κ³Ό

    예제

    9
    1 1 230
    1 2 210
    1 3 205
    2 1 100
    2 2 150
    3 1 175
    3 2 190
    3 3 180
    3 4 195

    μ‹€ν–‰κ²°κ³Ό

    1 1
    1 2
    3 4

    ⌨️ 문제 풀이

    1. μž…λ ₯을 λ°›μ•„ λ¦¬μŠ€νŠΈμ— μ €μž₯ν•  λ•Œ, 점수, μ°Έκ°€κ΅­, ν•™μƒλ²ˆν˜Έ 순으둜 μ €μž₯ν•œλ‹€.
      이후, sort λ₯Ό ν•΄μ£Όλ©΄ 점수순으둜 정렬이 λœλ‹€.

    2. μˆ˜μƒμ„ ν•œ 이λ ₯을 담을 h λ”•μ…”λ„ˆλ¦¬ λ³€μˆ˜λ₯Ό ν•˜λ‚˜λ§Œλ“€κ³ , μ •λ ¬λœ grade 리슀트λ₯Ό μˆœνšŒν•œλ‹€.
      grade 리슀트λ₯Ό μˆœνšŒν•˜λ©΄μ„œ
      λ§Œμ•½ ν•΄λ‹Ή κ΅­κ°€ (grade[i][1])κ°€ μˆ˜μƒ 이λ ₯이 μ—†μœΌλ©΄ μˆ˜μƒν•œ κ΅­κ°€μ˜ 수 cnt + 1
      μˆ˜μƒ 이λ ₯에 grade[i][1] λ₯Ό μΆ”κ°€ν•˜κ³  값을 1둜 ν•œλ‹€.

    3. λ§Œμ•½ ν•΄λ‹Ή κ΅­κ°€ (grade[i][1])κ°€ μˆ˜μƒ 이λ ₯이 있고, μˆ˜μƒ 이λ ₯의 μˆ˜κ°€ 2 미만이면 μˆ˜μƒν•œ κ΅­κ°€μ˜ 수 cnt + 1
      μˆ˜μƒ 이λ ₯에 ν•΄λ‹Ή ꡭ가에 + 1 ν•œλ‹€.

    4. λ§Œμ•½ μˆ˜μƒν•œ κ΅­κ°€κ°€ 3이라면 λ°˜λ³΅λ¬Έμ„ λ©ˆμΆ˜λ‹€.

    πŸ’Ύ λŠλ‚€μ 

    1. 정렬을 ν•˜κ³  μ•½κ°„μ˜ 쑰건문만 μΆ”κ°€ν•΄μ£Όλ©΄ μ‰½κ²Œ ν’€ 수 μžˆλŠ” λ¬Έμ œμ˜€μŠ΅λ‹ˆλ‹€.
    λ°˜μ‘ν˜•

    λŒ“κΈ€

Designed by Tistory.