BOJ/๐Ÿฅ‡

โ˜…Greedy Advanced I - 4 Solvedโ˜…

metamong 2023. 8. 30.

โ˜… 1744 ์ˆ˜ ๋ฌถ๊ธฐ โ˜…

 

import sys
input=sys.stdin.readline

N=int(input())
arr=[int(input()) for _ in range(N)]
ans=0
pos,neg,zero,one=[],[],[],[]
for n in arr:
    if n==0: zero.append(0)
    elif n==1: one.append(1)
    elif n>0: pos.append(n)
    else: neg.append(n)
#1. don't tie ones
ans+=len(one)

#2.tie pos(from the biggest)
pos.sort(reverse=True)
for i in range(0,len(pos),2):
    if i==len(pos)-1:ans+=pos[i]
    else:ans+=(pos[i]*pos[i+1])

#3.tie neg(from the smallest, if one left, if zero exists, don't add or add)
neg.sort()
for i in range(0,len(neg),2):
    if i==len(neg)-1:
        if len(zero)==0: ans+=neg[i]
    else:ans+=(neg[i]*neg[i+1]) 
print(ans)

 

๐Ÿฆ› ๋ฌธ์ œ ์„ค๋ช…, ๋‘ ๊ฐœ๋กœ ๋ฌถ์–ด์„œ ๋‘ ๊ฐœ์˜ ์ˆ˜๋ฅผ ๊ณฑํ•˜๊ฑฐ๋‚˜, ๊ทธ๋Œ€๋กœ ๋†”๋‘๊ฑฐ๋‚˜, ๋‘˜ ์ค‘ 1๊ฐœ๋ฅผ ํƒํ•ด์„œ ์—ฐ์‚ฐ ๊ฒฐ๊ณผ ์ตœ๋Œ“๊ฐ’

 

๐Ÿฆ› greedy ๊ด€์  ๋ถ„์„

: ๊ฐœ๋ณ„ ์ƒํ™ฉ) ์ธ์ ‘ํ•œ ์™ผ์ชฝ ๋˜๋Š” ์˜ค๋ฅธ์ชฝ ์ˆ˜์™€ ๋ฌถ์„ ์ง€ / ์•ˆ ๋ฌถ์„ ์ง€ ๊ฒฐ์ •

: ์ข…ํ•ฉ ์ƒํ™ฉ) ๊ฐ๊ฐ์˜ ํ•ญ(๋ฌถ์€ mulsum ๋˜๋Š” ๊ฐœ๋ณ„) ํ•ฉ ๊ตฌํ•˜๊ธฐ / ์ตœ์ ์˜ ์ข…ํ•ฉ ์ƒํ™ฉ) ํ•ฉ ์ตœ๋Œ“๊ฐ’

โ˜… ์ตœ์ ์˜ ์ข…ํ•ฉ ์ƒํ™ฉ์€ ์ตœ์ ์˜ ๊ฐœ๋ณ„ ์ƒํ™ฉ์˜ ๋ชจ์Œ์œผ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ณ , ๊ฐœ๋ณ„ ์ƒํ™ฉ์˜ ์ตœ์  greedy ์†”๋ฃจ์…˜์€ (1) ์–‘์ˆ˜์ผ ๊ฒฝ์šฐ(1 ์ œ์™ธ) / (2) ์Œ์ˆ˜์ผ ๊ฒฝ์šฐ / (3) 0์ผ ๊ฒฝ์šฐ / (4) 1์ผ ๊ฒฝ์šฐ : 4๊ฐ€์ง€์˜ ์ƒํ™ฉ์œผ๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค.

 

โ˜… ๋‘ ์ˆ˜๊ฐ„์˜ ์—ฐ์‚ฐ์—์„œ ์ด ์•„๋ž˜์™€ ๊ฐ™์€ 10๊ฐ€์ง€ ์ƒํ™ฉ์œผ๋กœ ๋‚˜์˜ค๊ฒŒ ๋˜๋Š”๋ฐ

โ‘  1 ์ œ์™ธ ์–‘์ˆ˜์™€ 1 ์ œ์™ธ ์–‘์ˆ˜: ๊ณฑ ์šฐ์„ 

โ‘ก 1 ์ œ์™ธ ์–‘์ˆ˜์™€ ์Œ์ˆ˜: ํ•ฉ ์šฐ์„ 

โ‘ข 1 ์ œ์™ธ ์–‘์ˆ˜์™€ 0: ํ•ฉ ์šฐ์„ 

โ‘ฃ 1 ์ œ์™ธ ์–‘์ˆ˜์™€ 1: ํ•ฉ ์šฐ์„ 

โ‘ค ์Œ์ˆ˜์™€ 0: ๊ณฑ ์šฐ์„ 

โ‘ฅ ์Œ์ˆ˜์™€ 1: ํ•ฉ ์šฐ์„ 

โ‘ฆ ์Œ์ˆ˜์™€ ์Œ์ˆ˜: ๊ณฑ ์šฐ์„ 

โ‘ง 0๊ณผ 1: ํ•ฉ ์šฐ์„ 

โ‘จ 0๊ณผ 0: ํ•ฉ ์šฐ์„ 

โ‘ฉ 1๊ณผ 1: ํ•ฉ ์šฐ์„ 

 

โ–ถ 1์ด ๋“ค์–ด๊ฐ€๋Š” โ‘ฃโ‘ฅโ‘งโ‘ฉ 4๊ฐœ์˜ case๋Š” ๋ฌด์กฐ๊ฑด ํ•ฉ์ด ์šฐ์„ ๋˜๋ฏ€๋กœ ๋ฌถ์„ ์ผ์ด ์—†๋‹ค. ๋”ฐ๋ผ์„œ (#1. ๋จผ์ € 1๋งŒ ๋นผ๋†“๊ณ  1์˜ ๊ฐœ์ˆ˜๋ฅผ ๋”ํ•œ๋‹ค.)

โ–ถ ์œ„์™€ ๊ฐ™์ด ๋ฌถ์–ด์•ผ ํ•˜๋Š” pair ์ข…๋ฅ˜๋Š” ์ •ํ™•ํžˆ ์„ธ ์Œ์ด๋‹ค. ๊ณฑ์ด ํ•ฉ๋ณด๋‹ค ์šฐ์„ ๋˜๋ฏ€๋กœ case โ‘ ์˜ 1์ œ์™ธ ์–‘์ˆ˜๋Š” โ‘ค์™€ โ‘ฆ์— ํ•ด๋‹น๋˜์ง€ ์•Š์œผ๋ฏ€๋กœ (#2. ๋จผ์ € 1์ œ์™ธ ์–‘์ˆ˜๋งŒ list๋กœ ๋นผ์„œ pair๊ฐ„์˜ mulsum์„ ๊ตฌํ•œ๋‹ค.(์ด ๋•Œ sortingํ•ด์„œ ํฐ ์ˆ˜๋ถ€ํ„ฐ ์ฐจ๋ก€๋Œ€๋กœ ๊ฐ์†Œ ์ˆœ(greedy)์œผ๋กœ ์—ฌ๋Ÿฌ pair์”ฉ ๊ณจ๋ผ mulsum / ๋งŒ์•ฝ 1์ œ์™ธ ์–‘์ˆ˜๊ฐ€ 1๊ฐœ ๋‚จ๋Š”๋‹ค๋ฉด ๋‚˜๋จธ์ง€ ์ข…๋ฅ˜์™€ ์—ฎ์ง€ ๋ง๊ณ  ๊ทธ๋Œ€๋กœ ํ•ฉ)

โ–ถ ์ค‘์š”ํ•œ ๊ฑด case โ‘ค์™€ case โ‘ฆ์ธ๋ฐ, ์Œ์ˆ˜๊ฐ€ ๋‘ case์— ๊ฒน์นœ๋‹ค. ์ด ์ค‘์— ๋จผ์ € ์šฐ์„ ๋˜๋Š” ๊ฑด(greedy) ์Œ์ˆ˜์™€ ์Œ์ˆ˜์˜ ๊ณฑ์ธ case โ‘ฆ ์ด๋‹ค. ์Œ์ˆ˜์™€ ์Œ์ˆ˜๋ฅผ ๊ณฑํ•˜๋ฉด 0์ด ์•ˆ๋‚˜์˜ค๊ณ  ์–‘์ˆ˜๊ฐ€ ๋‚˜์˜ค๋ฏ€๋กœ ๋” ํฐ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜ด. ๋”ฐ๋ผ์„œ greedyํ•˜๊ฒŒ case โ‘ค๋ฅผ ๋จผ์ € ํ’€๊ธฐ ์œ„ํ•ด (#3. ์œ„ 1 ์ œ์™ธ ์–‘์ˆ˜๊ฐ„์˜ ๊ณฑ case โ‘ ์ฒ˜๋Ÿผ ๋จผ์ € ์Œ์ˆ˜๋งŒ list๋กœ ๋นผ์„œ pair๊ฐ„์˜ mulsum์„ ๊ตฌํ•œ๋‹ค.(์ด ๋•Œ sortingํ•ด์„œ ์ž‘์€ ์ˆ˜๋ถ€ํ„ฐ ์ฐจ๋ก€๋Œ€๋กœ ์ฆ๊ฐ€ ์ˆœ(greedy)์œผ๋กœ ์—ฌ๋Ÿฌ pair์”ฉ ๊ณจ๋ผ mulsum)

โ–ถ ๊ทธ ๋‹ค์Œ ๋‚จ์€ case ์ค‘ case โ‘ฆ์ด ์šฐ์„ ๋˜๋ฏ€๋กœ(greedy), (#3. ์œ„ case โ‘ค์—์„œ ์Œ์ˆ˜๊ฐ€ 1๊ฐœ ๋‚จ์•˜๊ณ  0์ด ์žˆ๋Š” ์ƒํƒœ๋ผ๋ฉด ๊ณฑ ๋ฐ˜์˜ / ๋งŒ์•ฝ ์Œ์ˆ˜๊ฐ€ 1๊ฐœ ๋‚จ์•˜๋Š”๋ฐ 0์ด ์—†๋‹ค๋ฉด ๊ทธ๋Œ€๋กœ ํ•ฉ)

โ–ถ ๊ณฑ์„ ํ•ด์•ผํ•˜๋Š” ์œ„ ์„ธ๊ฐ€์ง€ case๋ฅผ ๋ชจ๋‘ ์‚ดํŽด๋ณด์•˜์œผ๋ฏ€๋กœ ๋‚˜๋จธ์ง€ ์ˆซ์ž๋“ค์€ 0๋งŒ ๋‚จ์Œ. the end.


โ˜… 12904 A์™€ B โ˜…

 

S=input()
T=input()
l=len(S)

while 1:
    if len(T)==l:
        if T==S: print(1)
        else: print(0)
        break

    if T[-1] == 'A':
        T=T[:-1]
    else:
        T=T[:-1][::-1]

 

๐Ÿฆ› S → T๋ฅผ T → S๋กœ ๋ฐฉํ–ฅ์„ ๋ฐ”๊พธ๋ฉด

โ‘  ๋์˜ ๋ฌธ์ž๊ฐ€ A์ธ ๊ฒฝ์šฐ: ๋ฌธ์ž์—ด์˜ ๋’ค์— A๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค → A๋ฅผ ๊ทธ์ € ์ œ์™ธํ•œ๋‹ค

โ‘ก ๋์˜ ๋ฌธ์ž๊ฐ€ B์ธ ๊ฒฝ์šฐ: ๋ฌธ์ž์—ด์„ ๋’ค์ง‘๊ณ  ๋’ค์— B๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค → B๋ฅผ ์ œ์™ธํ•˜๊ณ  ๋’ค์ง‘๋Š”๋‹ค

: ์ด๋ฏธ A๊ฐ€ ๋ถ™๋Š” ๊ฒฝ์šฐ, B๊ฐ€ ๋ถ™๋Š” ๊ฒฝ์šฐ๊ฐ€ ์ฐจ๋ก€๋Œ€๋กœ ๋ฌธ์ž์—ด์„ ์™„์„ฑํ•˜๋ฉด์„œ ์ •ํ•ด์ ธ ์žˆ์Œ. ์œ„์˜ ๋™๊ทธ๋ผ๋ฏธ ๊ฒฝ๋กœ๋Œ€๋กœ T๋ผ๋Š” ๋ฌธ์ž์—ด์ด ๋งŒ๋“ค์–ด์ง€๊ธฐ๊นŒ์ง€์˜ ๊ณผ์ • ์† ๋ฌธ์ž์—ด๋“ค์ด ์ด๋ฏธ ์ •ํ•ด์ง / S๋ผ๋Š” ๋ฌธ์ž์—ด์˜ ๊ธธ์ด๊ฐ€ ๊ฐ™์„ ๋•Œ T๋ฅผ ๊ฑฐ๊พธ๋กœ ๋Œ์•„ ๊ฐ™๋‹ค๋ฉด ๋ฐ”๋กœ 1 ์ถœ๋ ฅ, ๊ฐ™์ง€ ์•Š๋‹ค๋ฉด ๋‚˜์˜ฌ ์ˆ˜ ์—†๋Š” ๋ฌธ์ž์—ด์ด๋ฏ€๋กœ 0 ์ถœ๋ ฅ


โ˜… 30805 ์‚ฌ์ „ ์ˆœ ์ตœ๋Œ€ ๊ณตํ†ต ๋ถ€๋ถ„ ์ˆ˜์—ด โ˜…

 

import sys
input=sys.stdin.readline
N=int(input())
A=list(map(int,input().split()))
M=int(input())
B=list(map(int,input().split()))
nums=[y for y in range(100,0,-1)]
ans=[]
while True:
    flag=False
    for num in nums:
        if num in A and num in B:
            flag=True
            x=num
            ans.append(int(num))
            break
    if not flag:
        break
    a,b=A.index(x),B.index(x)
    A,B=A[a+1:],B[b+1:]

print(len(ans))
if len(ans) > 0:
    print(*ans)

 

๐Ÿฆ› ์‚ฌ์ „ ์ˆœ ๋‚˜์ค‘์ธ ๊ธฐ์ค€์„ ๋ณด๋ฉด โ‘  ๋ฌด์กฐ๊ฑด ๊ธด ์ˆ˜์—ด์ด ๋‚˜์ค‘ / โ‘ก ๊ธธ์ด๊ฐ€ ๊ฐ™๋‹ค๋ฉด ๊ฐ€์žฅ ์•ž์— ์žˆ๋Š” ์ˆซ์ž๊ฐ€ ํฐ ์ˆ˜์—ด์ด ๋‚˜์ค‘

: ๋”ฐ๋ผ์„œ ๊ฐ€์žฅ ํฐ ์ˆซ์ž์ธ 100๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด์„œ ๊ณตํ†ต์œผ๋กœ ๊ฐ–๊ณ  ์žˆ๋Š” ์ˆ˜๋ผ๋ฉด, '์™ผ์ชฝ ๊ธฐ์ค€ ๋จผ์ € ๋“ฑ์žฅํ•˜๋Š” ์ˆซ์ž'๋ฅผ ๊ณ ๋ฅด๋Š” greedyํ•œ ๊ด€์ ์œผ๋กœ ์‚ฌ์ „ ์ˆœ ๊ณตํ†ต ๋ถ€๋ถ„ ์ˆ˜์—ด์„ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด 100 100 100 50์ด ์žˆ๊ณ  100 100 50์ด ์žˆ๋‹ค๋ฉด, ๊ธธ์ด๊ฐ€ ๊ธด ์ˆ˜์—ด์ด ๋ฌด์กฐ๊ฑด ๋‚˜์ค‘์ด๋ฏ€๋กœ ์™ผ์ชฝ ๊ธฐ์ค€ ๋จผ์ € ๋“ฑ์žฅํ•˜๋Š” ๊ณตํ†ต ์ตœ๋Œ“๊ฐ’ ์ˆซ์ž๋ฅผ ๊ณจ๋ผ์•ผ ํ•œ๋‹ค. ๊ณ ๋ฅด๋ฉด ๊ทธ ์•ž์˜ ์ˆซ์ž๋“ค์€ greedy ์›๋ฆฌ์— ์˜ํ•ด ์ •๋‹ต x. ์˜ค๋ฅธ์ชฝ ์ดํ›„ ๋‚จ์€ ์ˆซ์ž๋“ค๋งŒ ๊ณจ๋ผ์„œ ๋‹ค์‹œ slicing ํ•˜๊ณ  ๋ฐ˜๋ณต์ ์œผ๋กœ ์ง„ํ–‰


โ˜… 7983 ๋‚ด์ผ ํ• ๊ฑฐ์•ผ โ˜…

 

import sys
input=sys.stdin.readline

dts=[]
for _ in range(int(input())):
    d,t=map(int,input().split())
    dts.append((d,t))

dts=sorted(dts,key=lambda x: x[1], reverse=True)
ans=dts[0][1]

for pair in dts:
    if ans > pair[1]:
        ans = pair[1] - pair[0]
    else: #ans <= pair[1]
        ans = ans - pair[0]
print(ans)

 

๐Ÿฆ› greedy 2๋ฒˆ ์ ์šฉ

โ‘  ๊ณผ์ œ ๊ฐ€๋Šฅ ์‹œ๊ฐ„ t์—์„œ ๊ณผ์ œ๋ฅผ ํ•˜๋Š” ์‹œ๊ฐ„์€ greedy์— ์˜ํ•ด ์ตœ๋Œ€ํ•œ ๋ ๋ถ€๋ถ„์—์„œ ์—ฐ์†์œผ๋กœ ์•ž์œผ๋กœ ๊ณผ์ œ ์‹œํ–‰์ด ์ตœ์  (์ตœ๋Œ€ํ•œ ๋…ธ๋Š” ๊ฑธ ์›ํ•˜๋ฏ€๋กœ ๋์—์„œ๋ถ€ํ„ฐ ๊ณผ์ œ๋ฅผ ์‹œํ–‰ํ•˜๊ฒŒ ํ•ด์•ผ ํ•จ)

โ‘ก ์—ฌ๋Ÿฌ ๊ณผ์ œ๊ฐ€ ์žˆ๋‹ค๋ฉด greedy์— ์˜ํ•ด ๊ณผ์ œ ๊ฐ€๋Šฅ ์‹œ๊ฐ„ t๊ฐ€ ์ œ์ผ ๊ธด ๊ฒƒ๋ถ€ํ„ฐ ๋จผ์ € t ๋์—์„œ ๊ณผ์ œ๋ฅผ ์‹œํ–‰ํ•˜๋Š” ๊ฒŒ ์ตœ์  (๊ณผ์ œ ๊ฐ€๋Šฅ ์‹œ๊ฐ„์ด ๊ธด ๊ณผ์ œ๋ฅผ ๋จผ์ € ๋์—์„œ ํ•ด์ฃผ์–ด์•ผ ์ตœ๋Œ€ํ•œ ์•ž์—์„œ ๋งŽ์ด ๋†€ ์ˆ˜ ์žˆ์Œ)

→ ๋”ฐ๋ผ์„œ ๊ฐ ๊ณผ์ œ๋ฅผ t ๊ฐ์†Œ์ˆœ์œผ๋กœ ๋‚˜์—ดํ•˜๊ณ , ํ•ด๋‹น ๊ณผ์ œ t์—์„œ d๋ฅผ ๋นผ๋Š” ๊ฑธ ์ตœ์„ ์œผ๋กœ ์„ ํƒ. ๋งŒ์•ฝ ํ˜„์žฌ ๋ ์ง€์ ์ด ํ•ด๋‹น ๊ณผ์ œ t๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™๋‹ค๋ฉด ํ˜„์žฌ ๋ ์ง€์ ์—์„œ d๋ฅผ ๋นผ๋Š” ๊ฑธ ์ตœ์„ ์œผ๋กœ ์„ ํƒ

: ๊ฐ ๊ณผ์ œ์˜ ์˜ค๋ฅธ์ชฝ ๋๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋Š” ๊ฒŒ ์ตœ์ ์ด๋‚˜, ์œ„ 10 ๊ณผ์ œ์—์„œ 3์„ ๋จผ์ € ํ•ด๊ฒฐํ•˜๊ณ  ๋‚˜๋ฉด 7์ด ๋˜์–ด 8 ๊ณผ์ œ์™€ ๊ฒน์นจ. ๋”ฐ๋ผ์„œ 8์ด ์•„๋‹Œ 7์—์„œ ์‹œ์ž‘ํ•ด 2๋ฅผ ๋นผ์•ผ ํ•จ.


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

'BOJ > ๐Ÿฅ‡' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

โ˜…Greedy Upper-Advanced I - 1 Solvedโ˜…  (1) 2023.10.18
โ˜…BF Advanced I - 3 Solvedโ˜…  (0) 2023.10.06
โ˜…Sorting Advanced I - 5 Solvedโ˜…  (0) 2023.07.28
โ˜…DP Advanced I - 4 Solvedโ˜…  (0) 2023.01.08
โ˜…hashing ์ƒ๊ธ‰ - 1๋ฌธ์ œ()โ˜…  (0) 2022.11.06

๋Œ“๊ธ€