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

20-Hwangyerin #87

Merged
merged 2 commits into from
Mar 10, 2024
Merged

20-Hwangyerin #87

merged 2 commits into from
Mar 10, 2024

Conversation

Hwangyerin
Copy link
Collaborator

@Hwangyerin Hwangyerin commented Mar 4, 2024

πŸ”— 문제 링크

Baekjoon | 2+1 세일

문제
KSG νŽΈμ˜μ μ—μ„œλŠ” 과일우유, λ“œλ§ν‚Ήμš”κ΅¬λ₯΄νŠΈ λ“±μ˜ μœ μ œν’ˆμ„ '2+1 세일'ν•˜λŠ” 행사λ₯Ό ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. KSG νŽΈμ˜μ μ—μ„œ μœ μ œν’ˆ 3개λ₯Ό ν•œ λ²ˆμ— μ‚°λ‹€λ©΄ κ·Έμ€‘μ—μ„œ κ°€μž₯ μ‹Ό 것은 무료둜 μ§€λΆˆν•˜κ³  λ‚˜λ¨Έμ§€ 두 개의 μ œν’ˆ κ°€κ²©λ§Œ μ§€λΆˆν•˜λ©΄ λ©λ‹ˆλ‹€. ν•œ λ²ˆμ— 3개의 μœ μ œν’ˆμ„ 사지 μ•ŠλŠ”λ‹€λ©΄ 할인 없이 μ •κ°€λ₯Ό μ§€λΆˆν•΄μ•Ό ν•©λ‹ˆλ‹€.

예λ₯Ό λ“€μ–΄, 7개의 μœ μ œν’ˆμ΄ μžˆμ–΄μ„œ 각 μ œν’ˆμ˜ 가격이 10, 9, 4, 2, 6, 4, 3이고 μž¬ν˜„μ΄κ°€ (10, 3, 2), (4, 6, 4), (9)둜 총 3λ²ˆμ— κ±Έμ³μ„œ 물건을 μ‚°λ‹€λ©΄ 첫 번째 κΎΈλŸ¬λ―Έμ—μ„œλŠ” 13원을, 두 번째 κΎΈλŸ¬λ―Έμ—μ„œλŠ” 10원을, μ„Έ 번째 κΎΈλŸ¬λ―Έμ—μ„œλŠ” 9원을 μ§€λΆˆν•΄μ•Ό ν•©λ‹ˆλ‹€.

μž¬ν˜„μ΄λŠ” KSG νŽΈμ˜μ μ—μ„œ μΉœκ΅¬λ“€κ³Ό 같이 먹을 총 N팩의 μœ μ œν’ˆμ„ κ΅¬μž…ν•˜λ €κ³  ν•©λ‹ˆλ‹€. μž¬ν˜„μ΄λ₯Ό 도와 μ΅œμ†ŒλΉ„μš©μœΌλ‘œ μœ μ œν’ˆμ„ κ΅¬μž…ν•  수 μžˆλ„λ‘ λ„μ™€μ£Όμ„Έμš”!

μž…λ ₯
첫 번째 μ€„μ—λŠ” μœ μ œν’ˆμ˜ 수 N (1 ≀ N ≀ 100,000)이 μ£Όμ–΄μ§‘λ‹ˆλ‹€.

두 번째 쀄뢀터 N개의 μ€„μ—λŠ” 각 μœ μ œν’ˆμ˜ 가격 Ci (1 ≀ Ci ≀ 100,000)κ°€ μ£Όμ–΄μ§‘λ‹ˆλ‹€.

좜λ ₯
μž¬ν˜„μ΄κ°€ N개의 μœ μ œν’ˆμ„ λͺ¨λ‘ μ‚΄ λ•Œ ν•„μš”ν•œ μ΅œμ†ŒλΉ„μš©μ„ 좜λ ₯ν•©λ‹ˆλ‹€. 정닡은 231-1보닀 μž‘κ±°λ‚˜ κ°™λ‹€.

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

30λΆ„

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

Note

μœ μ œν’ˆ 3개λ₯Ό ν•œ λ²ˆμ— μ‚°λ‹€λ©΄ κ·Έμ€‘μ—μ„œ κ°€μž₯ μ‹Ό 것은 무료 둜 μ§€λΆˆν•˜κ³  λ‚˜λ¨Έμ§€ 두 개의 μ œν’ˆ κ°€κ²©λ§Œ μ§€λΆˆν•˜λ©΄ λ©λ‹ˆλ‹€.
ν•œ λ²ˆμ— 3개의 μœ μ œν’ˆμ„ 사지 μ•ŠλŠ”λ‹€λ©΄ 할인 없이 μ •κ°€λ₯Ό μ§€λΆˆν•΄μ•Ό ν•©λ‹ˆλ‹€.

N개의 μœ μ œν’ˆμ„ λͺ¨λ‘ μ‚΄ λ•Œ ν•„μš”ν•œ μ΅œμ†ŒλΉ„μš© 을 κ΅¬ν•˜κΈ° μœ„ν•΄μ„œλŠ” μ΅œλŒ€ν•œ 가격이 λΉ„μ‹Ό μœ μ œν’ˆμ„ 무료 둜 μ§€λΆˆν•΄μ•Όν•œλ‹€.
즉, μž…λ ₯ 받은 값을 λ‚΄λ¦Όμ°¨μˆœμœΌλ‘œ μ •λ ¬ν•΄ μ£Όμ—ˆλ‹€.

처음 μ½”λ“œ

  1. μž…λ ₯ 받은 μœ μ œν’ˆμ˜ 가격듀을 리슀트둜 μž…λ ₯λ°›μ•„ λ‚΄λ¦Όμ°¨μˆœμœΌλ‘œ μ •λ ¬ν•œλ‹€.
  2. 길이가 3인 λΆ€λΆ„ 리슀트λ₯Ό μƒμ„±ν•˜κ³  κ·Έ μ•ˆμ˜ μ΅œμ†Ÿκ°’ (min()) 을 길이가 3인 λΆ€λΆ„ 리슀트의 ν•©(sum()) μ—μ„œ λΊ€ ν›„ 총 합에 더해쀀닀.
ans += sum(tmp) - min(tmp)
  1. λ§Œμ•½ λΆ€λΆ„ 리슀트의 길이가 3보닀 μž‘μ„ 수 있기 λ•Œλ¬Έμ— 그런 κ²½μš°μ—λŠ” 2+1 행사λ₯Ό 진행할 수 μ—†μœΌλ―€λ‘œ μ •κ°€λ₯Ό κ³„μ‚°ν•œλ‹€. (sum())
ans+=sum(tmp)

μ „μ²΄μ½”λ“œ

import sys
input = sys.stdin.readline
N = int(input())
dairy_product = [int(input()) for _ in range(N)]
dairy_product = sorted(dairy_product,reverse=True)
ans = 0
for i in range(0,N,3):
    tmp = dairy_product[i:i+3]
    if len(tmp) < 3:
        ans+=sum(tmp)
    else:
        ans += sum(tmp) - min(tmp)
print(ans)

image




λ¬Έμ œκ°€ 맞긴 ν–ˆμœΌλ‚˜ μ½”λ“œκ°€ λ§ˆμŒμ— 듀지 μ•Šκ³  더 μ΅œμ ν™” μ‹œν‚¬ 수 μžˆμ„ 것 κ°™μ•„ μˆ˜μ •ν•΄ λ³΄μ•˜λ‹€.




λ‘λ²ˆμ§Έ μ½”λ“œ

  1. μž…λ ₯ 받은 μœ μ œν’ˆ 가격듀을 λ‚΄λ¦Όμ°¨μˆœμœΌλ‘œ μ •λ ¬ν•˜μ—¬ 리슀트 μƒμ„±ν•œλ‹€.
  2. 전체 리슀트의 합을 μ΄ˆκΈ°κ°’μœΌλ‘œ μ„€μ •
  3. 리슀트λ₯Ό μ„Έ 번째 μš”μ†ŒλΆ€ν„° μ‹œμž‘ν•˜μ—¬ μ„Έ κ°œμ”© κ±΄λ„ˆλ›°λ©΄μ„œ ν˜„μž¬ μš”μ†Œμ˜ 값을 전체 ν•©μ—μ„œ λΊ€λ‹€.

μš°μ„ , 첫번째 μ½”λ“œμ™€ λ‹€λ₯Έ 점은, μœ μ œν’ˆμ˜ 가격을 μž…λ ₯을 λ°›κ³  μ½μœΌλ©΄μ„œ λ™μ‹œμ— 리슀트λ₯Ό μƒμ„±ν•˜κ³  μ •λ ¬ν•œλ‹€.


λ‘λ²ˆμ§Έλ‘œ, 합계λ₯Ό κ³„μ‚°ν•˜λŠ” κ³Όμ •μ—μ„œ 리슀트λ₯Ό 전체λ₯Ό 훑지 μ•ŠλŠ”λ‹€. 미리 전체 μš”μ†Œμ˜ 합을 κ³„μ‚°ν•˜κ³ , μΌμ •ν•œ κ·œμΉ™μ— 따라 일뢀 값을 λΉΌμ„œ μ΅œμ†ŒλΉ„μš©μ„ κ³„μ‚°ν•œλ‹€.


import sys
input = sys.stdin.readline
N = int(input())

# μž…λ ₯ 받은 μœ μ œν’ˆ 가격듀을 λ‚΄λ¦Όμ°¨μˆœμœΌλ‘œ μ •λ ¬ν•˜μ—¬ 리슀트 생성
dairy_product = sorted([int(input()) for _ in range(N)],reverse=True)

# μœ μ œν’ˆ 가격 리슀트의 합을 μ΄ˆκΈ°κ°’μœΌλ‘œ μ„€μ •
ans = sum(dairy_product)

# μœ μ œν’ˆ 가격 리슀트의 ν•©μ—μ„œ μ„Έ 번째 μš”μ†ŒλΆ€ν„° μ‹œμž‘ν•˜μ—¬ μ„Έ κ°œμ”© κ±΄λ„ˆλ›°λ©΄μ„œ ν˜„μž¬ μš”μ†Œμ˜ 값을 λΉΌλŠ” κ³Όμ •
for i in range(2,N,3):
    ans-= dairy_product[i]

# ν•„μš”ν•œ μ΅œμ†ŒλΉ„μš© 좜λ ₯
print(ans)

image



μ½”λ“œλ₯Ό μˆ˜μ •ν•˜λ‹ˆ μ‹œκ°„μ΄ 112ms μ—μ„œ 92ms둜 μ€„μ—ˆλ‹€.


ν’€μ—ˆλ˜ μ½”λ“œλ„ λ‹€μ‹œ λŒμ•„λ³΄μž!

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

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.

저도 μ˜ˆλ¦°λ‹˜μ΄ 처음으둜 μ§œμ‹  μ½”λ“œμ™€ λΉ„μŠ·ν•˜κ²Œ μ§°λŠ”λ° λ˜λŒμ•„λ³΄μ§€ μ•Šκ³  λ„˜κ²Όλ˜ 이λ ₯이 μžˆμŠ΅λ‹ˆλ‹€,,,πŸ˜… λ°˜μ„±ν•΄μ•Όκ² λ„€μš”πŸ˜₯πŸ˜₯
덕뢄에 μƒˆλ‘œμš΄ 풀이 방법도 μ•Œμ•„κ°‘λ‹ˆλ‹€!
저두 ν’€μ—ˆλ˜ μ½”λ“œλ„ λ‹€μ‹œ ν•œλ²ˆ λŒμ•„λ³΄λŠ” μŠ΅κ΄€μ„ λ“€μ—¬μ•Όκ² λ„€μš”πŸ”₯πŸ”₯

이번 PR도 μˆ˜κ³ ν•˜μ…¨μ–΄μš”!🍬

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.

μ €λŠ” μ΄ˆκΈ°κ°’μ„ 전체 μœ μ œν’ˆ κ°€κ²©μ˜ ν•©μœΌλ‘œ 두고, λΉΌλŠ” λ‹Ήμ‹μœΌλ‘œ μ§„ν–‰ν•˜μ˜€λŠ”λ° μ •λ‹΅μ΄μ—ˆμœΌλ‚˜ μ˜ˆλ¦°λ‹˜μ˜ 1μ°¨μ‹œλ„ 처럼 112 mκ°€ λœ¨λ”κ΅°μš”. 2μ°¨ μ½”λ“œμ²˜λŸΌ μ €λ ‡κ²Œ λΉ λ₯Έ μ†λ„λ‘œ μ‹€ν–‰λ˜λŠ” μ½”λ“œλ„ μžˆλ‹€λŠ” 것을 μ•Œμ•„κ°‘λ‹ˆλ‹€. 또, μ½”λ“œ μ΅œμ ν™”μ˜ μ€‘μš”μ„±λ„ μ•Œμ•„κ°€μš” !! πŸ’žμ΄λ²ˆ μ°¨μ‹œ PR도 μˆ˜κ³ λ§ŽμœΌμ…¨μŠ΅λ‹ˆλ‹€ πŸ‘πŸ»πŸ‘πŸ»

Comment on lines +6 to +9
ans = sum(dairy_product)

for i in range(2,N,3):
ans-= dairy_product[i]
Copy link
Collaborator

Choose a reason for hiding this comment

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

리슀트 μŠ¬λΌμ΄μ‹±μ„ μ‚¬μš©ν•˜μ—¬ for 루프 λŒ€μ‹ μ— 연산을 μˆ˜ν–‰ν•΄λ³Ό μˆ˜λ„ μžˆκ² λ„€μš” πŸŽƒ
늘 κΌ¬λ‘¬ν•œ μ½”λ“œλ₯Ό κ°œμ„ μ‹œμΌœλ³΄λ €λŠ” λ…Έλ ₯ 정말 보기 μ’‹μŠ΅λ‹ˆλ‹€ !!

ans -= sum(dairy_product[2:N:3])

@Hwangyerin Hwangyerin merged commit ac679b6 into AlgoLeadMe:main Mar 10, 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.

4 participants