BOJ/๐Ÿฅ‰

โ˜…Greedy Upper-Beginner I - 9 Solvedโ˜…

metamong 2022. 12. 2.

โ˜… 10162 ์ „์ž๋ ˆ์ธ์ง€ โ˜…

 

T=int(input())
a=T//300
flag=0
for i in range(a,-1,-1):
    after_A=T-i*300
    b=after_A//60
    for j in range(b,-1,-1):
        after_B=after_A-j*60
        if after_B%10==0:
            flag+=1
            k=after_B//10
            print(i,j,k)
            break
    if flag==1:
        break
if flag==0:print(-1)

 

๐Ÿ‡ greedy ๊ด€์  ๋ถ„์„

: ๊ฐœ๋ณ„ ์ƒํ™ฉ) A / B / C ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋Š” ์ƒํ™ฉ

: ์ข…ํ•ฉ ์ƒํ™ฉ) A / B / C ๋ฒ„ํŠผ์„ ์—ฌ๋Ÿฌ ๋ฒˆ ๋ˆŒ๋Ÿฌ T time์— ๋”ฑ ๋งž๊ฒŒ ์š”๋ฆฌํ•˜๊ธฐ

 

โ˜… ์ตœ์ ์˜ ์ข…ํ•ฉ ์ƒํ™ฉ์€ ์ตœ์ ์˜ ๊ฐœ๋ณ„ ์ƒํ™ฉ์˜ ๋ชจ์Œ์œผ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ณ , ๊ฐœ๋ณ„ ์ƒํ™ฉ์˜ ์ตœ์  greedy ์†”๋ฃจ์…˜์€ A๋ฒ„ํŠผ์„ ์šฐ์„ ์ ์œผ๋กœ → B๋ฒ„ํŠผ → C๋ฒ„ํŠผ์„ ๋ˆ„๋ฅธ๋‹ค. (์‹œ๊ฐ„ ํšจ์œจ์„ ์œ„ํ•ด ๊ตฌํ•˜๋ฉด ๋ฐ”๋กœ break๋ฌธ)

 

๐Ÿ‡ ๋จผ์ € 300์ดˆ๋กœ ๋‚˜๋ˆ ์ง„๋‹ค๋ฉด, ๊ทธ๋‹ค์Œ 100์ดˆ๋กœ ๋‚˜๋ˆ ์ง€๋Š” ์ง€ ํ™•์ธํ•˜๊ณ , ๋งˆ์ง€๋ง‰์œผ๋กœ 10์œผ๋กœ ๋‚˜๋ˆ ์ง€๋Š” ์ง€ ์ฐจ๋ก€๋Œ€๋กœ ํ™•์ธ. 

→ greedyํ•œ ๋ฌธ์ œ์ด๋ฏ€๋กœ, 300์ดˆ๋กœ ๋‚˜๋ˆˆ ๋ชซ์ด ํฐ ๊ฒƒ๋ถ€ํ„ฐ 0๊นŒ์ง€ ๊ฑฐ๊พธ๋กœ ์ฐจ๋ก€๋Œ€๋กœ ํ™•์ธํ•˜๋‹ค๊ฐ€ ๋‹ต์ด ๋‚˜์˜ค๋ฉด print()ํ•˜๊ณ  ๋ฐ”๋กœ break!


โ˜… 3578 Holes โ˜…

 

h=int(input())
if h==0:print(1)
elif h==1:print(0)
else:
    if h%2==0:print('8'*(h//2))
    else:print('4'+'8'*(h//2))

 

๐Ÿ‡ greedy ๊ด€์  ๋ถ„์„ (๊ฐœ๋ณ„ ์ƒํ™ฉ์ด ๋ถ„๊ธฐ๋ฌธ์œผ๋กœ ๋‚˜๋ˆ„์–ด์ง)

: ๊ฐœ๋ณ„ ์ƒํ™ฉ) hole์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด 0/4/6/9/8์ค‘ ํ•œ ๊ฐœ ์ˆซ์ž๋ฅผ ๋ˆ„๋ฅด๋Š” ์ƒํ™ฉ

: ์ข…ํ•ฉ ์ƒํ™ฉ) ์ˆซ์ž๋ฅผ ์—ฌ๋Ÿฌ ๋ฒˆ ๋ˆŒ๋Ÿฌ ๋งŒ๋“  ์ˆซ์ž๊ฐ€ ์ตœ์†Ÿ๊ฐ’์œผ๋กœ ๋‚˜์˜ค๊ณ  / ๋ˆ„๋ฅด๋Š” ๊ฐœ์ˆ˜ h๊ฐ€ ์ตœ์†Ÿ๊ฐ’์ด ๋˜๊ฒŒ๋” ๋งŒ๋“ค๊ธฐ

 

โ˜… ์ตœ์ ์˜ ์ข…ํ•ฉ ์ƒํ™ฉ์€ ์ตœ์ ์˜ ๊ฐœ๋ณ„ ์ƒํ™ฉ์˜ ๋ชจ์Œ์œผ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ณ 

→ ๊ฐœ๋ณ„ ์ƒํ™ฉ์˜ ์ตœ์  greedy ์†”๋ฃจ์…˜: ๋ˆ„๋ฅผ ๋•Œ 8์„ ์šฐ์„ ์ ์œผ๋กœ ๋ˆ„๋ฅด๋˜, h๊ฐ€ ํ™€์ˆ˜์ผ ๊ฒฝ์šฐ 4๋ฅผ ๋จผ์ € ๋ˆ„๋ฅด๊ณ  ์ดํ›„ 8 ๋ˆ„๋ฅด๊ธฐ (h๊ฐ€ 0๊ณผ 1๋งŒ ์˜ˆ์™ธ)

 

๐Ÿ‡ ๊ตฌ๋ฉ์ด ์ƒ๊ธฐ๋Š” ์ˆซ์ž 0,4,6,9,8์˜ ์กฐํ•ฉ์œผ๋กœ๋งŒ ๋งŒ๋“ค์–ด์•ผ ํ•˜๊ณ , ๋งจ ์•ž์— 0์ด ๋‘ ๋ฒˆ ์—ฐ์† ์˜ฌ ์ˆ˜ ์—†๋‹ค.

 

๐Ÿ‡ ์ตœ์†Ÿ๊ฐ’์œผ๋กœ ๋งŒ๋“ค์–ด์•ผ ํ•˜๋ฏ€๋กœ ์ž๋ฆฟ์ˆ˜๊ฐ€ ์ตœ์†Œ์—ฌ์•ผ ํ•œ๋‹ค. ๋”ฐ๋ผ์„œ 8๋กœ ์ตœ๋Œ€ํ•œ ๊ตฌ์„ฑ์ด ๋˜์–ด์•ผ ํ•จ (greedy)

โ‘  ํ™€์ˆ˜๊ฐœ์ˆ˜์˜ hole์„ ๋งŒ๋“ค์–ด์•ผ ํ•œ๋‹ค๋ฉด 8์„ ์ตœ๋Œ€ํ•œ ์ฑ„์šฐ๊ณ , ๋งˆ์ง€๋ง‰ ๊ฐœ์ˆ˜ 1๊ฐœ๋Š” ๊ฐ€์žฅ ์ตœ์†Ÿ๊ฐ’์ธ 4 - ์ฆ‰ 48888~ ํ˜•ํƒœ์—ฌ์•ผ ํ•œ๋‹ค.

โ‘ก ์ง์ˆ˜๊ฐœ์ˆ˜์˜ hole์„ ๋งŒ๋“ค์–ด์•ผ ํ•œ๋‹ค๋ฉด 8๋กœ๋งŒ ๊ตฌ์„ฑ๋˜์–ด์•ผ ํ•œ๋‹ค.

โ‘ขโ‘ฃ hole์ด ์—†๋‹ค๋ฉด 1, hole์ด 1๊ฐœ ์žˆ๋‹ค๋ฉด 1


โ˜… 2720 ์„ธํƒ์†Œ ์‚ฌ์žฅ ๋™ํ˜ โ˜…

 

for _ in range(int(input())):
    C=int(input())
    print(C//25,(C%25)//10,((C%25)%10)//5,C%5)

 

๐Ÿ‡ greedy ๊ด€์  ๋ถ„์„

: ๊ฐœ๋ณ„ ์ƒํ™ฉ) ์ฟผํ„ฐ / ๋‹ค์ž„ / ๋‹ˆ์ผˆ / ํŽ˜๋‹ˆ ์ค‘ ํ•œ ํ™”ํ์˜ ์ข…๋ฅ˜๋ฅผ ์„ ํƒํ•ด ๋ˆ์„ ๊ฑฐ์Šฌ๋Ÿฌ ์ฃผ๋Š” ์ƒํ™ฉ

: ์ข…ํ•ฉ ์ƒํ™ฉ) ์ฃผ์–ด์ง„ ๋ˆ์„ ์—ฌ๋Ÿฌ ํ™”ํ๋กœ ๊ฑฐ์Šฌ๋Ÿฌ ์ฃผ๋Š” ์ƒํ™ฉ / ๋ˆ„๋ฅด๋Š” ๊ฐœ์ˆ˜ h๊ฐ€ ์ตœ์†Ÿ๊ฐ’์ด ๋˜๊ฒŒ๋” ๋งŒ๋“ค๊ธฐ

 

โ˜… ์ตœ์ ์˜ ์ข…ํ•ฉ ์ƒํ™ฉ์€ ์ตœ์ ์˜ ๊ฐœ๋ณ„ ์ƒํ™ฉ์˜ ๋ชจ์Œ์œผ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ณ 

→ ๊ฐœ๋ณ„ ์ƒํ™ฉ์˜ ์ตœ์  greedy ์†”๋ฃจ์…˜: ์ฟผํ„ฐ - ๋‹ค์ž„ - ๋‹ˆ์ผˆ - ํŽ˜๋‹ˆ ์ˆœ์œผ๋กœ ๋จผ์ € ์ข…๋ฅ˜๋ฅผ ์„ ํƒ

 

๐Ÿ‡ ๋™์ „์˜ ๊ฐœ์ˆ˜๋ฅผ ์ตœ์†Œํ™” ํ•ด์•ผํ•˜๋ฏ€๋กœ ์ฟผํ„ฐ - ๋‹ค์ž„ - ๋‹ˆ์ผˆ - ํŽ˜๋‹ˆ ์ˆœ์œผ๋กœ greedyํ•˜๊ฒŒ ์ œ์ผ ํฐ ๊ธˆ์•ก๋ถ€ํ„ฐ ๊ฐœ์ˆ˜๋ฅผ countํ•œ๋‹ค


โ˜… 14720 ์šฐ์œ  ์ถ•์ œ โ˜…

 

import sys
input=sys.stdin.readline

N=int(input())
l=list(map(int,input().split()))
t=0
direction=0
for i in l:
    if direction==0 and i==0:
        t+=1
        direction+=1
    elif direction==1 and i==1:
        t+=1
        direction+=1
    elif direction==2 and i==2:
        t+=1
        direction-=2
    
print(t)

 

๐Ÿ‡ greedy ๊ด€์  ๋ถ„์„

: ๊ฐœ๋ณ„ ์ƒํ™ฉ) ๊ฐ ์šฐ์œ ๊ฐ€๊ฒŒ์—์„œ ๋”ธ๊ธฐ / ์ดˆ์ฝ” / ๋ฐ”๋‚˜๋‚˜ / x(์•ˆ ๋งˆ์‹ฌ) ์ค‘ ํ•œ ๊ฐœ๋ฅผ ์„ ํƒํ•ด ๋งˆ์‹œ๋Š” ์ƒํ™ฉ

: ์ข…ํ•ฉ ์ƒํ™ฉ) ๋ชจ๋“  ์šฐ์œ ๊ฐ€๊ฒŒ์—์„œ ๊ฐ๊ฐ์˜ ์šฐ์œ ๋ฅผ ๋‹ค์–‘ํ•˜๊ฒŒ ์„ ํƒํ•ด ๋งˆ์‹œ๋Š” ์ƒํ™ฉ / ๋งˆ์‹œ๋Š” ์šฐ์œ  ๊ฐœ์ˆ˜๊ฐ€ ์ตœ๋Œ“๊ฐ’์ด ๋˜๊ฒŒ๋” ๋งŒ๋“ค๊ธฐ

 

โ˜… ์ตœ์ ์˜ ์ข…ํ•ฉ ์ƒํ™ฉ์€ ์ตœ์ ์˜ ๊ฐœ๋ณ„ ์ƒํ™ฉ์˜ ๋ชจ์Œ์œผ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ณ 

→ ๊ฐœ๋ณ„ ์ƒํ™ฉ์˜ ์ตœ์  greedy ์†”๋ฃจ์…˜: ๊ฐ ๊ฐ€๊ฒŒ์—์„œ๋Š” ์šฐ์œ ๋ฅผ 1๋ฒˆ๋งŒ ๋งˆ์‹ค ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๋งˆ์‹œ๋Š” ๊ทœ์น™์ด ์„ฑ๋ฆฝํ•œ๋‹ค๋ฉด '๋ฐ”๋กœ' ๊ทธ ๊ฐ€๊ฒŒ์—์„œ ๋งˆ์‹ฌ. (X๋ฅผ ์„ ํƒํ•˜์ง€ ์•Š๊ณ  ๋งˆ์‹œ๋Š” ์†”๋ฃจ์…˜)

 

๐Ÿ‡ ๋งˆ์‹ค ์ˆ˜ ์žˆ๋‹ค๋ฉด ๋ฐ”๋กœ ๋งˆ์‹œ๋Š”, greedy ์œ ํ˜•! direction ๋ฐฉํ–ฅ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด, direction ๋ณ€์ˆ˜์— ๋งž๋Š” ๊ฐ’์ด๋ผ๋ฉด ๋ฐ”๋กœ ๋งˆ์‹œ๊ฒŒ๋” ์ฝ”๋“œ ์งฌ

 

๐Ÿ‡ ๋ฐฉํ–ฅ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•œ ์ฝ”๋“œ ๊ธฐ์–ตํ•˜์ž!


โ˜… 17931 Greedily Increasing Subsequence โ˜…

 

import sys
input=sys.stdin.readline
N=int(input())
A=list(map(int,input().split()))
ans=[A[0]]
l=1
cur=A[0]
for ai in A[1:]:
    if ai>cur:
        ans.append(ai)
        l+=1
        cur = ai
print(l)
print(*ans)

 

๐Ÿ‡ greedy ๊ด€์  ๋ถ„์„

: ๊ฐœ๋ณ„ ์ƒํ™ฉ) Subsequence๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ํ˜„์žฌ์˜ ์ˆซ์ž๋ฅผ subsequence์— ๋„ฃ์„ ์ง€ ์•ˆ ๋„ฃ์„ ์ง€ ๊ฒฐ์ •ํ•˜๋Š” ์ƒํ™ฉ

: ์ข…ํ•ฉ ์ƒํ™ฉ) Greedily Increasing Subsequence๋ฅผ ๋งŒ๋“œ๋Š” ์ƒํ™ฉ

 

โ˜… ์ตœ์ ์˜ ์ข…ํ•ฉ ์ƒํ™ฉ์€ ์ตœ์ ์˜ ๊ฐœ๋ณ„ ์ƒํ™ฉ์˜ ๋ชจ์Œ์œผ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ณ 

→ ๊ฐœ๋ณ„ ์ƒํ™ฉ์˜ ์ตœ์  greedy ์†”๋ฃจ์…˜: ํ˜„์žฌ Cur ๊ฐ’๋ณด๋‹ค ํฐ ๊ฐ’์ด๋ฉด subsequence์— ๋„ฃ๊ธฐ๋ฅผ ์„ ํƒ


โ˜… 5585 ๊ฑฐ์Šค๋ฆ„๋ˆ โ˜…

 

n=0
money=1000-int(input())
for x in [500,100,50,10,5,1]:
    n+=(money//x)
    money%=x
print(n)

 

๐Ÿ‡ greedyํ•˜๊ฒŒ ํฐ ํ™”ํ ๋‹จ์œ„๋ถ€ํ„ฐ ๋จผ์ € ์นด์šดํŠธ. ๊ทธ๋ž˜์•ผ ์ตœ์ข… ํ™”ํ ์ง€ํ ๊ฐœ์ˆ˜ ์ตœ์†Œํ™” ๊ฐ€๋Šฅ


โ˜… 4796 ์บ ํ•‘ โ˜…

 

import sys
input=sys.stdin.readline
i=0
while 1:
    i+=1
    L,P,V=map(int,input().split())
    if (L,P,V)==(0,0,0):break
    print(f'Case {i}: {(V//P)*L+min(L,V%P)}')

 

๐Ÿ‡ greedy ๊ด€์  ๋ถ„์„

: ๊ฐœ๋ณ„ ์ƒํ™ฉ) ๊ฐ ์ผ์ˆ˜ ๋ณ„๋กœ ์บ ํ•‘์„ ๊ฐˆ ์ง€, ๋ง ์ง€ ๊ฒฐ์ •

: ์ข…ํ•ฉ ์ƒํ™ฉ) ์บ ํ•‘์žฅ์„ ๊ฐ€๋Š” ๋‚  ์ˆ˜ ์ด ๋”ํ•˜๊ธฐ

 

โ˜… ์ตœ์ ์˜ ์ข…ํ•ฉ ์ƒํ™ฉ์€ ์ตœ์ ์˜ ๊ฐœ๋ณ„ ์ƒํ™ฉ์˜ ๋ชจ์Œ์œผ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ณ 

→ ๊ฐœ๋ณ„ ์ƒํ™ฉ์˜ ์ตœ์  greedy ์†”๋ฃจ์…˜: ์บ ํ•‘์žฅ ๊ฐ€๋Š” ์ตœ๋Œ€ ์ผ์ˆ˜(์ตœ๋Œ€ํ•œ ๊ฐ P์ผ ์ค‘ 1์ผ๋ถ€ํ„ฐ L์ผ๊นŒ์ง€ ์ญ‰ ๊ฐ„ ๋‹ค์Œ, ๊ทธ ๋‹ค์Œ P์ผ์—์„œ๋„ 1์ผ์—์„œ L์ผ๊นŒ์ง€ ๊ฐˆ ์ˆ˜ ์žˆ๊ฒŒ ํ•œ๋‹ค. ์ฃผ์–ด์ง„ P์ผ์—์„œ ์ตœ๋Œ€ L์ผ์„ ๊ฝ‰๊ฝ‰ ์ฑ„์šฐ๋Š” ๊ฒŒ ๊ฐ P์ผ์—์„œ์˜ greedyํ•œ ๊ฒฐ์ •. ํ›„๋ฐ˜์— ๊ฐ„๋‹ค๋ฉด ๋‹ค์Œ P์ผ์—์„œ์˜ L์ผ๊ณผ ๊ฒน์ณ ์บ ํ•‘์„ ๋ชป ๊ฐˆ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ 1์ผ๋ถ€ํ„ฐ ๋ชฐ์•„ ๊ฐ€๊ฒŒ ํ•ด์•ผ ์ตœ๋Œ€ L์ผ์„ ๊ฝ‰๊ฝ‰ ์ฑ„์›€ + ๋‚˜๋จธ์ง€๋Š” L์ผ๊ณผ ๋น„๊ตํ•ด์„œ min๊ฐ’ ์ถ”๊ฐ€)


โ˜… 2864 5์™€ 6์˜ ์ฐจ์ด โ˜…

 

A,B=input().split()

a1,b1=A.replace('6','5'),B.replace('6','5')
a2,b2=A.replace('5','6'),B.replace('5','6')

print(int(a1)+int(b1),int(a2)+int(b2))

 

๐Ÿ‡ greedy ๊ด€์  ๋ถ„์„

: ๊ฐœ๋ณ„ ์ƒํ™ฉ) 5์™€ 6์„ ๋งŒ๋‚˜๋ฉด ๊ฐ๊ฐ 5๋กœ ๋ฐ”๊ฟ€ ์ง€, 6์œผ๋กœ ๋ฐ”๊ฟ€ ์ง€ ๊ฒฐ์ •

: ์ข…ํ•ฉ ์ƒํ™ฉ) ๋‘ ์ˆ˜์˜ ํ•ฉ

 

โ˜… ์ตœ์ ์˜ ์ข…ํ•ฉ ์ƒํ™ฉ์€ ์ตœ์ ์˜ ๊ฐœ๋ณ„ ์ƒํ™ฉ์˜ ๋ชจ์Œ์œผ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ณ 

→ ๊ฐœ๋ณ„ ์ƒํ™ฉ์˜ ์ตœ์  greedy ์†”๋ฃจ์…˜: ์ตœ์†Ÿ๊ฐ’์€ ๋ชจ๋“  6์„ 5๋กœ, ์ตœ๋Œ“๊ฐ’์€ ๋ชจ๋“  5๋ฅผ 6์œผ๋กœ (replace()๋กœ ํ•œ๋ฒˆ์—)


โ˜… 30019 ๊ฐ•์˜์‹ค ์˜ˆ์•ฝ ์‹œ์Šคํ…œ โ˜…

 

๐Ÿ‡ ํ˜„์žฌ ์‹œ์ ์—์„œ ๋‹น์žฅ ๊ฐ•์˜๊ฐ€ ๋จผ์ € ์—ด๋ฆฌ๋Š” ๊ฐ•์˜๋ฅผ ์„ ํƒํ•˜๋ฏ€๋กœ greedy์  ์ ‘๊ทผ. cur list์— ๊ฐ ๊ฐ•์˜์‹ค์˜ ๋ ์‹œ๊ฐ„์„ update. s๊ฐ€ ์ž„๋ฐ•ํ•œ ์ˆœ์œผ๋กœ ์ฃผ์–ด์ง€๋ฏ€๋กœ ๊ฐ line ์ง„ํ–‰ํ•˜๋ฉด์„œ ํ˜„์žฌ์˜ e์™€ ๋น„๊ตํ•ด YES / NO ์ถœ๋ ฅ

import sys
input=sys.stdin.readline

N,M=map(int,input().split())
cur = [0 for _ in range(N)]

for _ in range(M):
    k,s,e=map(int,input().split())
    if s >= cur[k-1]:
       print('YES')
       cur[k-1]= e
    else:
        print('NO')

 

 

 

 

 

 

 

 

 

 

 

 

 

 

๋Œ“๊ธ€