Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

24-Hwangyerin #104

Merged
merged 2 commits into from
Apr 1, 2024
Merged

24-Hwangyerin #104

merged 2 commits into from
Apr 1, 2024

Conversation

Hwangyerin
Copy link
Collaborator

πŸ”— 문제 링크

Baekjoon | μˆ˜κ°•μ‹ μ²­

  1. μˆ˜κ°•μ‹ μ²­ λ²„νŠΌμ΄ ν™œμ„±ν™” 된 ν›„, μˆ˜κ°•μ‹ μ²­ λ²„νŠΌμ„ μ‘°κΈˆμ΄λΌλ„ 빨리 λˆ„λ₯Έ 학생이 λŒ€κΈ°λͺ©λ‘μ— λ¨Όμ € λ“€μ–΄κ°„λ‹€.
  2. 이미 λŒ€κΈ°μ—΄μ— λ“€μ–΄κ°€ μžˆλŠ” μƒνƒœμ—μ„œ λ‹€μ‹œ μˆ˜κ°•μ‹ μ²­ λ²„νŠΌμ„ λˆ„λ₯Ό 경우 λŒ€κΈ°λͺ©λ‘μ˜ 맨 λ’€λ‘œ λ°€λ €λ‚œλ‹€.
  3. μž μ‹œ ν›„ μˆ˜κ°•μ‹ μ²­ λ²„νŠΌμ΄ λΉ„ν™œμ„±ν™” 되면, λŒ€κΈ°λͺ©λ‘μ—μ„œ κ°€μž₯ μ•žμ— μžˆλŠ” 학생뢀터 μžλ™μœΌλ‘œ μˆ˜κ°•μ‹ μ²­μ΄ μ™„λ£Œλ˜λ©°, μˆ˜κ°• κ°€λŠ₯ 인원이 꽉 μ°° 경우 λ‚˜λ¨Έμ§€ λŒ€κΈ°λͺ©λ‘μ€ λ¬΄μ‹œν•˜κ³  μˆ˜κ°•μ‹ μ²­μ„ μ’…λ£Œν•œλ‹€.

image

μœ„μ˜ ν‘œλŠ” μ΅œλŒ€ μˆ˜κ°• κ°€λŠ₯ 인원이 3λͺ…인 μ•Œκ³ λ¦¬μ¦˜ μˆ˜μ—…μ— λŒ€ν•΄ 6λͺ…μ˜ 학생이 μˆ˜κ°•μ‹ μ²­μ„ μ§„ν–‰ν•œ λͺ¨μŠ΅μ΄λ‹€. λ²„νŠΌμ΄ λΉ„ν™œμ„±ν™” 된 ν›„, λ¨Όμ € κ·œμΉ™ 1을 μ μš©ν•˜μ—¬ 클릭을 2번 이상 ν•œ ν•™μƒμ˜ μ€‘λ³΅λœ λŒ€κΈ°λͺ©λ‘μ„ μ‚­μ œν•œλ‹€. μ€‘λ³΅λœ λͺ©λ‘μ„ μ œκ±°ν•œ ν›„, 맨 μ•žμ—μ„œλΆ€ν„° μ΅œλŒ€ μˆ˜κ°• κ°€λŠ₯ 인원인 3λͺ…을 μ„ μ •ν•œλ‹€. ν‘œμ˜ 맨 였λ₯Έμͺ½μ—λŠ” κ·Έ μ΅œμ’…κ²°κ³Όλ₯Ό λ‚˜νƒ€λ‚Έ λͺ¨μŠ΅μ΄λ‹€. 이와 같은 방법을 μ΄μš©ν•˜μ—¬ μ΅œμ’…μ μœΌλ‘œ μˆ˜κ°•μ‹ μ²­μ— μ„±κ³΅ν•œ 인원을 좜λ ₯ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€.

βœ”οΈ μ†Œμš”λœ μ‹œκ°„

30λΆ„

✨ μˆ˜λ„ μ½”λ“œ

  1. μˆ˜κ°•μ‹ μ²­ λ²„νŠΌμ΄ ν™œμ„±ν™” 된 ν›„, μˆ˜κ°•μ‹ μ²­ λ²„νŠΌμ„ μ‘°κΈˆμ΄λΌλ„ 빨리 λˆ„λ₯Έ 학생이 λŒ€κΈ°λͺ©λ‘μ— λ¨Όμ € λ“€μ–΄κ°„λ‹€.
    1. 이미 λŒ€κΈ°μ—΄μ— λ“€μ–΄κ°€ μžˆλŠ” μƒνƒœμ—μ„œ λ‹€μ‹œ μˆ˜κ°•μ‹ μ²­ λ²„νŠΌμ„ λˆ„λ₯Ό 경우 λŒ€κΈ°λͺ©λ‘μ˜ 맨 λ’€λ‘œ λ°€λ €λ‚œλ‹€.
      ↳ ν•™μƒμ˜ ν•™λ²ˆμ„ ν‚€(key)둜 μˆœμ„œλŠ” ν˜„μž¬ ν‚€κ°€ μž…λ ₯된 μˆœμ„œ(인덱슀)둜, 즉 두 번 이상 ν΄λ¦­ν•œ 학생은 μžμ—°μŠ€λŸ½κ²Œ μΈλ±μŠ€κ°€ λ’€λ‘œ λ„˜μ–΄κ°
for i in range(L):
    student = input().rstrip()
    waiting[student] = i

# μˆœμ„œ(value)λŒ€λ‘œ μ •λ ¬
final_list = sorted(waiting.items(), key = lambda item: item[1])

ν”Όλ³΄λ‚˜μΉ˜ μˆ˜μ—΄-006

  1. μˆ˜κ°• κ°€λŠ₯ 인원이 꽉 μ°° 경우 λ‚˜λ¨Έμ§€ λŒ€κΈ°λͺ©λ‘μ€ λ¬΄μ‹œν•˜κ³  μˆ˜κ°•μ‹ μ²­μ„ μ’…λ£Œν•œλ‹€.

이 λ•Œ μƒκ°ν•˜μ§€ λͺ» ν•œ κ²½μš°κ°€ ν•œκ°€μ§€ μžˆμ—ˆλ‹€.

μˆ˜κ°•μ‹ μ²­ν•œ 학생 μˆ˜κ°€ μ œν•œμΈμ›λ³΄λ‹€ 더 λ§Žμ„ λ•ŒλŠ” λ¬Έμ œκ°€ λ˜μ§€ μ•ŠλŠ”λ‹€.
λ°˜λŒ€λ‘œ, μˆ˜κ°•μ‹ μ²­ν•œ 학생 μˆ˜κ°€ 정원을 μ±„μš°μ§€ λͺ»ν–ˆμ„ 경우λ₯Ό κ³ λ €ν•˜μ§€ λͺ»ν–ˆλ‹€.

κ·Έ 뢀뢄은 κ°„λ‹¨ν•˜κ²Œ 좜λ ₯ 인원을 Kμ—μ„œ λŒ€κΈ°μ—΄μ— μžˆλŠ” 학생 수둜 λ³€κ²½ν•΄μ£Όλ©΄ λœλ‹€.

# μ œν•œμΈμ›λ³΄λ‹€ 신청인원이 적을 경우 μ œν•œμΈμ›μ„ μ‹ μ²­μΈμ›μœΌλ‘œ μ΄ˆκΈ°ν™”
if K > len(final_list):
    K = len(final_list)

βœ”οΈ μ΅œμ’…μ½”λ“œ

import sys
input = sys.stdin.readline

# K: μˆ˜κ°•κ°€λŠ₯인원, L: λŒ€κΈ°λͺ©λ‘μ˜ 길이
K, L = map(int,input().split())

#λŒ€κΈ°λͺ©λ‘ key:ν•™μƒμ˜ ν•™λ²ˆ, value: μˆœμ„œ
waiting = {}

# ν•™μƒμ˜ ν•™λ²ˆμ„ ν‚€λ‘œ μˆœμ„œλŠ” 인덱슀둜
# 즉 두 번 이상 ν΄λ¦­ν•œ 학생은 μžμ—°μŠ€λŸ½κ²Œ μΈλ±μŠ€κ°€ λ’€λ‘œ λ„˜μ–΄κ°
for i in range(L):
    student = input().rstrip()
    waiting[student] = i

# μˆœμ„œ(value)λŒ€λ‘œ μ •λ ¬
final_list = sorted(waiting.items(), key = lambda item: item[1])

# μ œν•œμΈμ›λ³΄λ‹€ 신청인원이 적을 경우 μ œν•œμΈμ›μ„ μ‹ μ²­μΈμ›μœΌλ‘œ μ΄ˆκΈ°ν™”
if K > len(final_list):
    K = len(final_list)

# μˆ˜κ°•μ‹ μ²­μ— μ„±κ³΅ν•œ ν•™μƒμ˜ ν•™λ²ˆμ„ 좜λ ₯
for i in range(K):
    print(final_list[i][0])

πŸ“š μƒˆλ‘­κ²Œ μ•Œκ²Œλœ λ‚΄μš©

Comment on lines +16 to +25
# μˆœμ„œ(value)λŒ€λ‘œ μ •λ ¬
final_list = sorted(waiting.items(), key = lambda item: item[1])

# μ œν•œμΈμ›λ³΄λ‹€ 신청인원이 적을 경우 μ œν•œμΈμ›μ„ μ‹ μ²­μΈμ›μœΌλ‘œ μ΄ˆκΈ°ν™”
if K > len(final_list):
K = len(final_list)

# μˆ˜κ°•μ‹ μ²­μ— μ„±κ³΅ν•œ ν•™μƒμ˜ ν•™λ²ˆμ„ 좜λ ₯
for i in range(K):
print(final_list[i][0])
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

리슀트 μŠ¬λΌμ΄μ‹±μ„ μ‚¬μš©ν•˜λ©΄ μ œν•œλœ 인원보닀 μ‹ μ²­ 인원 값이 적은 κ²½μš°μ—λ„ μ‹ μ²­ 인원 수 만큼 좜λ ₯이 κ°€λŠ₯ν•©λ‹ˆλ‹€. λ”°λΌμ„œ KκΉŒμ§€μ˜ λ²”μœ„λ‘œ κ·ΈλŒ€λ‘œ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€ :)

λ”•μ…”λ„ˆλ¦¬μ˜ κ²½μš°λ„ sorted() ν•¨μˆ˜λ₯Ό 톡해 정렬을 ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
μ•„λ¬΄λŸ° μ˜΅μ…˜μ„ 지정해주지 μ•Šμ„ 경우 Keyλ₯Ό μ •λ ¬ν•œ 리슀트λ₯Ό λ°˜ν™˜ν•˜κΈ°λ•Œλ¬Έμ— key 값인 ν•™λ²ˆμ„ κ·ΈλŒ€λ‘œ 좜λ ₯해쀄 수 μžˆμŠ΅λ‹ˆλ‹€ !

μ˜ˆμ‹œ 
print(sorted(sugang))

['01234567', '20093778', '20103324', '20103325', '20133221', '20140101']

파이썬 λ”•μ…”λ„ˆλ¦¬ μ •λ ¬

print(*sorted(sugang, key = lambda x: sugang[x])[:k], sep='\n')

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

였옷 그러면 λ‹€μŒκ³Ό 같이 μ½”λ“œλ₯Ό μž‘μ„±ν•  수 μžˆκ² λ„€μš”

if K > len(final_list):
    print(*sorted(sugang, key = lambda x: sugang[x])[:k], sep='\n')
else:
    for i in range(K):
        print(final_list[i][0])

μ •μ€λ‹˜ 덕뢄에
μ–ΈνŒ¨ν‚Ήκ³Ό ν”„λ¦°νŠΈ λ¬Έ μ˜΅μ…˜ sep을 같이 μ‚¬μš©ν•  수 μžˆλ‹€λŠ”κ±Έ μ•Œκ³ κ°‘λ‹ˆλ‹€ (λ©”λͺ¨..

Copy link
Collaborator Author

@Hwangyerin Hwangyerin Mar 19, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

μ•„ μ•„λ‹ˆκ΅°μš”, μ •μ€λ‹˜ μ½”λ“œμ—μ„œλŠ” λ”•μ…”λ„ˆλ¦¬ 정렬쑰차도 ν”„λ¦°νŠΈλ¬Έμ—μ„œ ν•΄μ£Όκ³  μžˆκ΅°μš”..πŸ€”πŸ€”πŸ€”

μ œκ°€ μ •μ€λ‹˜ μ½”λ“œλ₯Ό 보고 λ‹€μ‹œ μž‘μ„±ν•œ μ½”λ“œκ°€ 잘λͺ»λλ‹€λŠ” κ±Έ μ•Œμ•˜μ§€λ§Œ 기둝을 μœ„ν•΄ λ‚¨κ²¨λ‘κ² μŠ΅λ‹ˆλ‹€! 또λ₯΅.

리슀트 μŠ¬λΌμ΄μ‹±μ„ μ‚¬μš©ν•˜λ©΄ μ œν•œλœ 인원보닀 μ‹ μ²­ 인원 값이 적은 κ²½μš°μ—λ„ μ‹ μ²­ 인원 수 만큼 좜λ ₯이 κ°€λŠ₯. λ©”λͺ¨.

@9kyo-hwang
Copy link
Contributor

μ€‘λ³΅μœΌλ‘œ λ“€μ–΄μ˜¨ ν•™λ²ˆμ˜ 경우 맨 λ§ˆμ§€λ§‰ ν•˜λ‚˜λ§Œ 남겨야 ν•˜λ‹ˆκΉŒ, 리슀트λ₯Ό λ’€μ§‘μ–΄μ„œ 필터링 ν•΄μ£ΌλŠ” 방법도 μžˆμŠ΅λ‹ˆλ‹€.

input = open(0).readline

K, L = map(int, input().split())
id_list = [input().rstrip() for _ in range(L)]

id_list.reverse()
...

필터링은 보톡 set을 μ΄μš©ν•΄μ•Ό ν•˜λŠ”λ° 이 κ²½μš°μ—” μˆœμ„œκ°€ μœ μ§€λΌμ•Ό ν•©λ‹ˆλ‹€. μ°Ύμ•„λ³΄λ‹ˆ dict 클래슀의 fromkeys()λž€ λ©”μ„œλ“œκ°€ μžˆλŠ”λ° 이λ₯Ό μ‚¬μš©ν•˜λ©΄ key μž…λ ₯ μˆœμ„œκ°€ μœ μ§€λ©λ‹ˆλ‹€.

...
id_list = list(dict.fromkeys(id_list))
...

fromkeys()κ°€ μ΄ν„°λŸ¬λΈ”κ³Ό νŠΉμ • 값을 λ„˜κ²¨μ£Όλ©΄ μ΄ν„°λŸ¬λΈ”μ„ key둜, λ„˜κ²¨μ€€ 값을 value둜 ν•˜λŠ” λ”•μ…”λ„ˆλ¦¬λ₯Ό μƒμ„±ν•΄μ£Όλ”λΌκ΅¬μš”.
μ—¬κΈ°μ„  valueκ°€ μ“Έλͺ¨ μ—†μ–΄μ„œ λ„˜κ²¨μ£Όμ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€. 이 경우 None κ°’μœΌλ‘œ μ΄ˆκΈ°ν™”λ©λ‹ˆλ‹€. 이λ₯Ό λ‹€μ‹œ list둜 λ³€ν™˜ν•΄μ„œ keyκ°’λ§Œ λ½‘μ•„λƒ…λ‹ˆλ‹€.

...
id_list.reverse()

print('\n'.join(id_list[:K]))

그럼 μ—­μˆœμœΌλ‘œ ID ν•˜λ‚˜μ”©λ§Œ 남긴 listκ°€ λ‚˜μ™”μœΌλ‹ˆ, 이λ₯Ό λ‹€μ‹œ 뒀집어 μ›λž˜ μˆœμ„œλŒ€λ‘œ λ§Œλ“€μ–΄μ€λ‹ˆλ‹€.
κ·Έ ν›„ μ•žμ— K개만큼만 좜λ ₯ν•΄μ£Όλ©΄ 되겠죠?

input = open(0).readline

K, L = map(int, input().split())
id_list = [input().rstrip() for _ in range(L)]

id_list.reverse()
id_list = list(dict.fromkeys(id_list))
id_list.reverse()

print('\n'.join(id_list[:K]))

image
μ΄λ ‡κ²Œ ν‘Ό λ‹€λ₯Έ μ‚¬λžŒλ„ 있던데, μ œκ°€ μΌλ“±μ΄λ„€μš” 히히

@LJEDD2
Copy link
Collaborator

LJEDD2 commented Mar 20, 2024

image

이게 무슨 ...

Copy link
Member

@janghw0126 janghw0126 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

저도 λ”•μ…”λ„ˆλ¦¬λ₯Ό μ΄μš©ν•΄μ„œ 이 문제λ₯Ό ν’€μ—ˆλŠ”λ°μš”! μ •μ€λ‹˜μ˜ 리뷰 덕뢄에

Note

리슀트 μŠ¬λΌμ΄μ‹±μ΄ μ œν•œλœ 인원보닀 μ‹ μ²­ 인원 값이 적은 κ²½μš°μ—λ„ μ‹ μ²­ 인원 수 만큼 좜λ ₯이 κ°€λŠ₯ν•˜λ‹€

λŠ” 것을 μ•Œκ²Œ λ˜μ—ˆμŠ΅λ‹ˆλ‹€! 저도 λ©”λͺ¨ν•΄λ†”μ•Όκ² λ„€μš”πŸ˜†γ…Žγ…Ž

또 κ΅ν™©λ‹˜ 덕뢄에 리슀트λ₯Ό λ’€μ§‘μ–΄μ„œ 필터링 ν•΄μ£ΌλŠ” 방법도 μžˆλ‹€λŠ” 것을 μ•Œμ•„κ°‘λ‹ˆλ‹€!
dict클래슀의 fromkeys() λ©”μ„œλ“œλ„ ν•˜λ‚˜ μ•Œμ•„κ°€λ„€μš”πŸ˜— 더 μžμ„Ένžˆ μ•Œμ•„λ΄μ•Όκ² μŠ΅λ‹ˆλ‹€πŸ˜Š

μ΄λ²ˆμ£Όλ„ λΏŒμ…”λ΄…μ‹œλ‹ΉπŸ‘ ν™”μ΄νŒ…πŸ€πŸ€

Copy link
Member

@avocado-13 avocado-13 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

저도 μ˜ˆλ¦°λ‹˜μ²˜λŸΌ 리슀트 μŠ¬λΌμ΄μ‹±μ„ ν•˜λ”λΌλ„ μˆ˜κ°•μ‹ μ²­μΈμ›μ΄ μ‹ μ²­ κ°€λŠ₯인원보닀 적은 경우λ₯Ό λ”°λ‘œ κ³ λ €ν•΄μ•Όν•˜μ§€ μ•Šλ‚˜ μƒκ°ν–ˆμ—ˆλŠ”λ° '리슀트 μŠ¬λΌμ΄μ‹±μ„ μ‚¬μš©ν•˜λ©΄ μ œν•œλœ 인원보닀 μ‹ μ²­ 인원 값이 적은 κ²½μš°μ—λ„ μ‹ μ²­ 인원 수 만큼 좜λ ₯이 κ°€λŠ₯ν•©λ‹ˆλ‹€.' λŠ” 사싀을 μ•Œμ•„κ°‘λ‹ˆλ‹€. 쀑볡 클릭의 경우, 맨 λ§ˆμ§€λ§‰ 신청을 κ³ λ €ν•΄μ•Όν•˜λ―€λ‘œ 리슀트λ₯Ό λ’€μ§‘μ–΄μ£ΌλŠ” 것과, set둜 필터링해도 μˆœμ„œκ°€ μœ μ§€λ˜λŠ” fromkeysλΌλŠ” ν₯미둜운 아이도 μ•Œμ•„κ°‘λ‹ˆλ‹€!! 이번 pr 정말 μˆ˜κ³ ν•˜μ…¨μŠ΅λ‹ˆλ‹€ ⭐︎✯

@Hwangyerin Hwangyerin merged commit 7c89827 into AlgoLeadMe:main Apr 1, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants