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

1-suhyun113 #2

Merged
merged 3 commits into from
Apr 2, 2024
Merged

1-suhyun113 #2

merged 3 commits into from
Apr 2, 2024

Conversation

suhyun113
Copy link
Collaborator

@suhyun113 suhyun113 commented Mar 25, 2024

πŸ”— 문제 링크

https://school.programmers.co.kr/learn/courses/30/lessons/42862



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

μ•½ 45λΆ„ μ†Œμš” - pm 07:15 ~ pm 08:03



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

n : ν•™μƒμ˜ 수
lost : μ²΄μœ‘λ³΅μ„ λ„λ‚œ λ‹Ήν•œ 학생
reserve : μ—¬λ²Œ μ²΄μœ‘λ³΅μ„ κ°€μ Έμ˜¨ 학생

문제 μš”μ•½

  • ν•™μƒλ“€μ˜ λ²ˆν˜ΈλŠ” 체격 순으둜 맀겨져 μžˆλ‹€.
  • 학생듀 쀑 μΌλΆ€λŠ” μ²΄μœ‘λ³΅μ„ λ„λ‚œ λ‹Ήν•΄ 체윑 μˆ˜μ—…μ„ 듀을 수 μ—†λ‹€.
  • μ—¬λ²Œ μ²΄μœ‘λ³΅μ„ κ°€μ Έμ˜¨ 학생은 μžμ‹ μ˜ μ•žλ²ˆν˜Έ ν•™μƒμ΄λ‚˜ λ’·λ²ˆν˜Έ ν•™μƒμ—κ²Œ λΉŒλ €μ€„ 수 μžˆλ‹€.
  • κ·ΈλŸ¬λ‚˜, μ—¬λ²Œ μ²΄μœ‘λ³΅μ„ κ°€μ Έμ˜¨ 학생이 μ²΄μœ‘λ³΅μ„ λ„λ‚œ λ‹Ήν•œ 경우 μ²΄μœ‘λ³΅μ„ λΉŒλ €μ€„ 수 μ—†λ‹€.
  • μ²΄μœ‘λ³΅μ„ 빌린 학생듀은 체윑 μˆ˜μ—…μ„ 듀을 수 있게 λœλ‹€.
    => 체윑 μˆ˜μ—…μ„ 듀을 수 μžˆλŠ” 학생은 λͺ‡λͺ…μΌκΉŒ?


1. μ—¬λ²Œ μ²΄μœ‘λ³΅μ„ κ°€μ Έμ˜¨ 학생이 μ²΄μœ‘λ³΅μ„ λ„λ‚œ λ‹Ήν•œ 경우
μ²΄μœ‘λ³΅μ„ 빌렀 쀄 수 μ—†κΈ° λ•Œλ¬Έμ— 이 경우λ₯Ό μ œμ™Έν•˜κΈ° μœ„ν•΄ reserve와 lostλ³€μˆ˜μ—μ„œ μ„œλ‘œ κ²ΉμΉ˜λŠ” 뢀뢄을 제거
-> 차집합 이용 -> μƒˆλ‘œμš΄ λ³€μˆ˜ re, lo 생성
re = list(set(reserve) - set(lost))
lo = list(set(lost) - set(reserve))

2. μ—¬λ²Œ μ²΄μœ‘λ³΅μ„ κ°€μ Έμ˜¨ 학생이 μ²΄μœ‘λ³΅μ„ λ„λ‚œ λ‹Ήν•œ ν•™μƒμ—κ²Œ λΉŒλ €μ£ΌλŠ” 경우
for문을 μ΄μš©ν•˜μ—¬ μ—¬λ²Œ μ²΄μœ‘λ³΅μ„ κ°€μ Έμ˜¨ 학생 수 만큼 λ°˜λ³΅ν•œλ‹€.

λ§Œμ•½, μ—¬λ²Œ μ²΄μœ‘λ³΅μ„ κ°€μ Έμ˜¨ ν•™μƒμ˜ μ•žλ²ˆν˜Έ 학생이 μ²΄μœ‘λ³΅μ„ λ„λ‚œ λ‹Ήν•œ 학생이라면, κ·Έ ν•™μƒμ—κ²Œ μ²΄μœ‘λ³΅μ„ λΉŒλ €μ€€λ‹€.
κ·Έ 학생은 체윑볡이 μƒκ²ΌμœΌλ―€λ‘œ loλ³€μˆ˜μ—μ„œ μ œμ™Έμ‹œν‚¨λ‹€.

그게 μ•„λ‹ˆλΌ λ§Œμ•½, μ•žλ²ˆν˜Έ 학생이 μ²΄μœ‘λ³΅μ„ 가진 학생이라면, λ’·λ²ˆν˜Έ 학생을 ν™•μΈν•œλ‹€.
λ’·λ²ˆν˜Έ 학생이 μ²΄μœ‘λ³΅μ„ λ„λ‚œ λ‹Ήν•œ 학생이라면, κ·Έ ν•™μƒμ—κ²Œ μ²΄μœ‘λ³΅μ„ λΉŒλ €μ€€λ‹€.
κ·Έ 학생은 체윑볡이 μƒκ²ΌμœΌλ―€λ‘œ loλ³€μˆ˜μ—μ„œ μ œμ™Έμ‹œν‚¨λ‹€.

3. μ²΄μœ‘μˆ˜μ—…μ„ 듀을 수 μžˆλŠ” 학생 수 κ΅¬ν•˜κΈ°
μ΅œμ’…μ μœΌλ‘œ μ²΄μœ‘μˆ˜μ—…μ„ 듀을 수 μžˆλŠ” 학생 수λ₯Ό answer이라 놓을 λ•Œ,
(전체 학생 수) - (μ²΄μœ‘λ³΅μ„ λ„λ‚œ λ‹Ήν–ˆμ§€λ§Œ 빌린 ν•™μƒλ“€μ˜ 수λ₯Ό μ œμ™Έν•œ lo의 길이)
-> answer = n - len(lo)

μ΅œμ’…μ½”λ“œ

def solution(n, lost, reserve):
    answer = 0
    
    re = list(set(reserve) - set(lost))
    lo = list(set(lost) - set(reserve))
        
    for i in re:
        if i-1 in lo: 
            lo.remove(i-1)
        elif i+1 in lo: 
            lo.remove(i+1)
    
    answer = n - len(lo)
    return answer

example
<reserveμ΄λ©΄μ„œ lost인 경우>
image



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

리슀트 μ»΄ν”„λ¦¬ν—¨μ…˜μ„ μ‚¬μš©ν•˜κ³  μ‹Άμ—ˆμ§€λ§Œ, ꡬ쑰가 κΈ°μ–΅λ‚˜μ§€ μ•Šμ•„ μ‚¬μš©ν•˜μ§€ λͺ» ν–ˆλ‹€.

λ‹€λ₯Έ μ‚¬λžŒλ“€μ˜ 풀이λ₯Ό λ³΄λ‹ˆ λ‚˜μ²˜λŸΌ 차집합을 μ΄μš©ν•œ μ‚¬λžŒλ„ μžˆμ§€λ§Œ, 더 μ‰½κ²Œ ν’€ 수 μžˆλŠ” 방법이 λ§Žμ€ 것 κ°™μ•˜λ‹€.

μ²˜μŒμ—λŠ” μ•žλ²ˆν˜Έ 학생뢀터 λ‚˜λˆ μ£Όλ©΄μ„œ λ‚˜λˆ μ€€ κ·Έ 학생이 lost에 속할 경우 μ²΄μœ‘μˆ˜μ—…μ„ 듀을 수 μžˆλŠ” 학생 수λ₯Ό 1μ”© μ¦κ°€μ‹œν‚€λ©΄μ„œ μž‘μ„±ν•˜λ €κ³  ν–ˆλŠ”λ°,
κ·Έλ ‡κ²Œ ν•˜λ‹ˆ λ’·λ²ˆν˜Έ 학생도 생각해야 ν•˜κ³ , reserve와 lost λ‘˜ λ‹€ μ†ν•˜μ§€ μ•ŠλŠ” ν•™μƒλ“€μ˜ μˆ˜μ™€ ν•©μΉ˜λŠ” κ²ƒμ—μ„œλ„ 어렀움을 κ²ͺμ—ˆλ‹€. κ·Έλž˜μ„œ λ‹€λ₯Έ λ°©μ‹μœΌλ‘œ μ§œλ³΄μ•˜λŠ”λ°, 생각보닀 κ°„λ‹¨ν•˜κ²Œ μž‘μ„±λ˜μ–΄ ν•œλ²ˆμ— μƒκ°ν•˜μ§€ λͺ» ν–ˆλ˜ 것이 아쉬웠닀.

문제λ₯Ό λ‹€ ν’€κ³  λ‹€λ₯Έ μ‚¬λžŒλ“€μ˜ 방식을 λ³΄λ‹ˆ λ‹€μŒλΆ€ν„°λŠ” μ’€ 더 λΉ λ₯΄κ³  효율적이게 μ½”λ“œλ₯Ό μž‘μ„±ν•  수 μžˆμ„ 것 κ°™λ‹€.

Copy link
Collaborator

@pu2rile pu2rile left a comment

Choose a reason for hiding this comment

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

λκΉŒμ§€ κ³ λ―Όν•˜λ©΄μ„œ 쑰금 더 효율적인 μ½”λ“œλ‘œ μž‘μ„±ν•˜μ‹  것 λ©‹μžˆμ–΄μš” πŸ‘πŸ»
저도 주둜 파이썬으둜 문제 ν‘ΈλŠ”λ° 같이 μ—΄μ‹¬νžˆ ν•΄ λ΄μš”! 첫 pr μˆ˜κ³ ν•˜μ…¨μŠ΅λ‹ˆλ‹€!!~

Copy link
Member

@oesnuj oesnuj left a comment

Choose a reason for hiding this comment

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

차집합을 μ΄μš©ν•˜λŠ” κΉ”λ”ν•œ μ½”λ“œ μž˜λ΄€μŠ΅λ‹ˆλ‹€. 그림이 같이 μžˆμœΌλ‹ˆ μ΄ν•΄ν•˜κΈ° μ’‹μ•˜μ–΄μš”!
set을 처음 λ΄μ„œ λ”°λ‘œ μ°Ύμ•„λ³΄κ²Œ λ˜μ—ˆλ„€μš”. 덕뢄에 μƒˆλ‘œμš΄ 자료ꡬ쑰λ₯Ό ν•˜λ‚˜ 더 λ°°μ›Œκ°‘λ‹ˆλ‹€!!
첫 PR μˆ˜κ³ ν•˜μ…¨μŠ΅λ‹ˆλ‹€πŸ‘

@Ghdrn1399
Copy link
Contributor

리뷰λ₯Ό 늦게 λ‚¨κ²¨μ€˜μ„œ μ£„μ†‘ν•΄μš”^^
μ €λŠ” 파이썬 μ–Έμ–΄λ₯Ό ν‰μ†Œμ— 잘 μ‚¬μš©ν•˜μ§€ μ•Šμ•„μ„œ λ‚―μ„€μ—ˆλŠ”λ° 덕뢄에 μƒˆλ‘œμš΄ 문법도 μ•Œμ•„κ°€λŠ” 것 κ°™μ•„μš”!
차집합을 μ΄μš©ν•˜μ—¬ 문제 푸신것도 잘 λ΄€μŠ΅λ‹ˆλ‹€!

re = list(set(reserve) - set(lost))
lo = list(set(lost) - set(reserve))

for i in re:
Copy link
Contributor

Choose a reason for hiding this comment

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

reserve와 lostλ³€μˆ˜μ—μ„œ μ„œλ‘œ κ²ΉμΉ˜λŠ” 뢀뢄을 μ œκ±°ν•˜λŠ” μ½”λ“œλ₯Ό μ•Œκ²Œ λ˜μ—ˆλ„€μš”

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.

4 participants