Hiya_
๊ฐœ๋ฐœ์ž์ทจ๐ŸŒฑ
Hiya_
Github
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (155)
    • ๐Ÿ’ปBackend (1)
      • ๋ผ์ด์ง•์บ ํ”„ (6)
      • SSAFY | ์‹ธํ”ผ (2)
      • ์‹ ํ•œDS ๊ธˆ์œตSW ์•„์นด๋ฐ๋ฏธ (2)
    • ๐Ÿ“๋ฌธ์ œ ํ’€์ด (102)
      • ๐ŸงฉBaekjoon (47)
      • ๐ŸงฉProgrammers (42)
      • ๐ŸงฉSWExpertAcademy (10)
      • ๐ŸงฉSofteer (3)
    • ๐Ÿ“‚Language (31)
      • Python (3)
      • JAVA (2)
      • SQL (6)
      • English (19)
    • โœจUseful information (5)
    • ๐Ÿ”‘Algorithms (3)
    • ๐Ÿ™Git (2)

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ํ™ˆ
  • ํƒœ๊ทธ
  • ๋ฐฉ๋ช…๋ก

๊ณต์ง€์‚ฌํ•ญ

์ธ๊ธฐ ๊ธ€

ํƒœ๊ทธ

  • ํ† ์ต์‹œํ—˜
  • ํ† ์ตRC
  • ์ •๋ ฌ
  • ํ† ์ต๋ฌด๋ฃŒ์ž๋ฃŒ
  • ์ฝ”ํ…Œ
  • ๊ทธ๋ฆฌ๋””
  • ํ† ์ต๊ณต๋ถ€
  • ์™„์ „ํƒ์ƒ‰
  • Python
  • sort
  • ๋ฆฌ์ŠคํŠธ
  • BaekJoon
  • Union
  • ์˜ค๋ธ”์™„
  • ๋ฐฑ์ค€
  • ํ† ์ต๊ธฐ์ถœ
  • ํ† ์ต๋…ํ•™
  • ๋‚ด์žฅํ•จ์ˆ˜
  • mysql
  • ๋‹ค์ต์ŠคํŠธ๋ผ
  • BFS
  • greedy algorithm
  • ํ† ์ต์ ์ˆ˜
  • UNION ALL
  • ํ‹ฐ์Šคํ† ๋ฆฌ์ฑŒ๋ฆฐ์ง€
  • ํ•ด์ปค์ŠคํŒŒ๋žญ์ด
  • ํ•ด์ปค์Šคํ† ์ต
  • ๊ตฌํ˜„
  • 2์ฐจ์› ๋ฐฐ์—ด
  • ํ† ์ต๋ฌด๋ฃŒ๊ฐ•์˜

์ตœ๊ทผ ๋Œ“๊ธ€

์ตœ๊ทผ ๊ธ€

ํ‹ฐ์Šคํ† ๋ฆฌ


Owner : ๊น€์‹ ์˜
Naver Blog

hELLO ยท Designed By ์ •์ƒ์šฐ.
Hiya_

๊ฐœ๋ฐœ์ž์ทจ๐ŸŒฑ

[Python | week1-4] ๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜(Greedy Algorithm) |
๐Ÿ“๋ฌธ์ œ ํ’€์ด/๐ŸงฉProgrammers

[Python | week1-4] ๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜(Greedy Algorithm) |

2023. 1. 17. 19:08

week 1-4

 

1-1๋ถ€ํ„ฐ ํ˜„์žฌ ๊ธ€(1-4)๊นŒ์ง€ ๋งค๋ฒˆ ์ž‘์„ฑํ•œ ๊ธ€์€

4์ฃผ์ฐจ, ์ฆ‰ week 4๊นŒ์ง€ ์ž‘์„ฑ ๋  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค School ์—์„œ ์ง„ํ–‰ํ•˜๋Š” ์ฝ”ํ…Œ ์ค€๋น„ ๊ฐ•์˜๋กœ

๋ณธ ๊ณผ์ •์„ ๋”์šฑ ๊นŠ์ด ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด์„œ ์Šค์Šค๋กœ ์ž‘์„ฑํ•˜๋Š” ์‹œ๋ฆฌ์ฆˆ์ž…๋‹ˆ๋‹ค

 

 

 

 

week1-2 ์—์„œ ํ•™์Šตํ•œ ๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ๋˜ ๋‹ค์‹œ ๋“ฑ์žฅํ–ˆ์Šต๋‹ˆ๋‹ค!

 

2023.01.13 - [๐Ÿ“‚Language/Python] - [Python | week1-2] Greedy ์•Œ๊ณ ๋ฆฌ์ฆ˜ | ์ด๊ฒƒ์ด ์ฝ”๋”ฉํ…Œ์ŠคํŠธ๋‹ค

 

[Python | week1-2] Greedy ์•Œ๊ณ ๋ฆฌ์ฆ˜ | ์ด๊ฒƒ์ด ์ฝ”๋”ฉํ…Œ์ŠคํŠธ๋‹ค

week1-2 [์˜ค๋Š˜์˜ ํ•™์Šต] 1. Greedy ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ฐœ๋… 2. '์ฒด์œก๋ณต' ๋ฌธ์ œ ํ’€์ด 3. ๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ถ”์ฒœ ํ•™์Šต 1. Greedy Algorithm ๊ฐœ๋… ์ด๋ฆ„๊ณผ ๊ฐ™์ด ํƒ์š•์Šค๋Ÿฌ์šด ๋ฐฉ๋ฒ•์œผ๋กœ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ๋ˆˆ์•ž์— ๋†“์ธ

seen-young.tistory.com

ํ•˜์ง€๋งŒ ์ œ๊ฐ€ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜์ง„ ๋ชป ํ–ˆ์Šต๋‹ˆ๋‹คใ… 

๋‹น์‹œ์—๋Š” ์™„๋ฒฝํžˆ ์ดํ•ดํ–ˆ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์ง€๋งŒ..

 

์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์•Œ๊ณ  ์žˆ๋Š” ๊ฒƒ๊ณผ ์ ์šฉํ•˜์—ฌ ํ•ด๊ฒฐ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์€

๋ณ„๊ฐœ์˜ ๋ฌธ์ œ๋ผ๋Š” ๊ฒƒ์„ ๊นจ๋‹ฌ์•˜์Šต๋‹ˆ๋‹ค..!

 

 

 

 


 

๋‹ค์งœ๊ณ ์งœ ๋ฌธ์ œ๋ถ€ํ„ฐ ๋“ค์–ด๊ฐ‘๋‹ˆ๋‹ค.

# [๋ฌธ์ œ ์„ค๋ช…]
# ์–ด๋–ค ์ˆซ์ž์—์„œ k๊ฐœ์˜ ์ˆ˜๋ฅผ ์ œ๊ฑฐํ–ˆ์„ ๋•Œ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ํฐ ์ˆซ์ž๋ฅผ ๊ตฌํ•˜๋ ค ํ•ฉ๋‹ˆ๋‹ค.
#
# ์˜ˆ๋ฅผ ๋“ค์–ด, ์ˆซ์ž 1924์—์„œ ์ˆ˜ ๋‘ ๊ฐœ๋ฅผ ์ œ๊ฑฐํ•˜๋ฉด [19, 12, 14, 92, 94, 24] ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์ค‘ ๊ฐ€์žฅ ํฐ ์ˆซ์ž๋Š” 94 ์ž…๋‹ˆ๋‹ค.
#
# ๋ฌธ์ž์—ด ํ˜•์‹์œผ๋กœ ์ˆซ์ž number์™€ ์ œ๊ฑฐํ•  ์ˆ˜์˜ ๊ฐœ์ˆ˜ k๊ฐ€ solution ํ•จ์ˆ˜์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค.
# number์—์„œ k ๊ฐœ์˜ ์ˆ˜๋ฅผ ์ œ๊ฑฐํ–ˆ์„ ๋•Œ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ์ˆ˜ ์ค‘ ๊ฐ€์žฅ ํฐ ์ˆซ์ž๋ฅผ ๋ฌธ์ž์—ด ํ˜•ํƒœ๋กœ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•˜์„ธ์š”.
#
# [์ œํ•œ ์กฐ๊ฑด]
# number๋Š” 2์ž๋ฆฌ ์ด์ƒ, 1,000,000์ž๋ฆฌ ์ดํ•˜์ธ ์ˆซ์ž์ž…๋‹ˆ๋‹ค.
# k๋Š” 1 ์ด์ƒ number์˜ ์ž๋ฆฟ์ˆ˜ ๋ฏธ๋งŒ์ธ ์ž์—ฐ์ˆ˜์ž…๋‹ˆ๋‹ค.

์Šค์Šค๋กœ ๋‹จ๊ณ„์ ์œผ๋กœ ์ƒ๊ฐํ•˜์—ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ž‘์„ฑํ•˜๋Š”๋ฐ ์–ด๋ ค์›€์ด ์žˆ์–ด์„œ

๊ฐ•์˜๋ฅผ ๋ณด๊ณ ์„œ ๋‹ค์‹œ ์ž‘์„ฑํ–ˆ๋Š”๋ฐ, ๊ทธ ๊ณผ์ •์„ ๋‹ค์‹œ ๊ฐ™์ด ์‚ดํŽด๋ด…์‹œ๋‹ค!

 

 

1. ๋ฌธ์ œ ์ดํ•ดํ•˜๊ธฐ

์ตœ์ข…์ ์œผ๋กœ ์ฃผ์–ด์ง„ ์ˆ˜์—์„œ ๊ฐ€์žฅ ํฐ ๊ฐ’์„ ์ถ”์ถœํ•˜๊ณ ์‹ถ์Šต๋‹ˆ๋‹ค!

ํ˜„์žฌ์˜ ์„ ํƒ์ด ์ตœ์ข… ์„ ํƒ์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š์Šต๋‹ˆ๋‹ค..!

๊ทธ๋ ‡๋‹ค๋ฉด ์–ด๋–ค ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์„๊นŒ์š”?

 

๋„ค ๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ž…๋‹ˆ๋‹ค!

์•ž๋‹จ๊ณ„ ์—์„œ์˜ ์„ ํƒ(์•ž์ž๋ฆฌ์— ํฐ ์ˆ˜)์ด ์ดํ›„ ๋‹จ๊ณ„์—์„œ์˜ 

๋™์ž‘์— ๋Œ€ํ•œ ํ•ด(solution)์˜ ์ตœ์ ์„ฑ์— ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š์Œ 

 

 

collection์ด๋ผ๋Š” ๋ฆฌ์ŠคํŠธ๋ฅผ ์ตœ์ ์˜ ๊ฒฐ๊ณผ๋ฅผ ๋‹ด๋„๋ก ์‚ฌ์šฉํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํ•ด๋‹น ๋ฆฌ์ŠคํŠธ์—๋Š” ๋งค ๋ฒˆ์˜ ์ˆœ๊ฐ„๋งˆ๋‹ค ์ตœ์„ ์˜ ์„ ํƒ์„ ํ•œ ๊ฒฝ์šฐ๊ฐ€ ์ €์žฅ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

 

๋ฌธ์ œ๋กœ ์ œ์‹œ๋œ number๋ฅผ ์ˆœ์ฐจ์ ์œผ๋กœ ๋Œ๋ฉด์„œ (์ž๋ฆฟ์ˆ˜๊ฐ€ ๋†’์€ ๊ฒƒ์—๋ถ€ํ„ฐ) ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ ์ž๋ฆฟ์ˆ˜๊ฐ€ ์ €์žฅ๋œ collection๋ณด๋‹ค ๋” ํฌ๋‹ค๋ฉด, ์ž‘์ง€ ์•Š์„ ๋•Œ๊นŒ์ง€ collection์˜ ๋งˆ์ง€๋ง‰ ์›์†Œ๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

 

def solution(number, k):
	collection = []
    for i, n in enumerate(number):
    	while len(collection) > 0 and collection[-1] < k:
        	collection.remove(collection[-1]) #์ดํ›„ ์ˆ˜์ • ์˜ˆ์ •
            k -= 1
        collection.append(n)
        
    answer = ''.join(collection)

 

2. ๊ณ ๋ ค ์‚ฌํ•ญ

์œ„์™€ ๊ฐ™์€ ์ฝ”๋“œ๋กœ ํ•ด๊ฒฐ ๊ฐ€๋Šฅํ• ๊นŒ์š”?

๊ณ ๋ ค์‚ฌํ•ญ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

 

1) ์ž๋ฆฟ์ˆ˜๋ฅผ ๋ชจ๋‘ ์ œ๊ฑฐํ•ด์•ผํ•  ์ˆ˜(k)๊ฐ€ 0์ด ๋์„ ๋•Œ

๋”์ด์ƒ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐœ์ˆ˜(k)๊ฐ€ ์—†๋‹ค๋ฉด while๋ฌธ์„ ์ข…๋ฃŒํ•จ์œผ๋กœ ๋”์ด์ƒ ๊ฐ’์„ ์ œ๊ฑฐํ•˜๋ฉด ์•ˆ ๋ฉ๋‹ˆ๋‹ค.

def solution(number, k):
	collection = []
    for i, n in enumerate(number):
    	while len(collection) > 0 and collection[-1] < k and k > 0: #์กฐ๊ฑด์œผ๋กœ'k>0' ์ถ”๊ฐ€๋จ
        	collection.remove(collection[-1]) #์ดํ›„ ์ˆ˜์ • ์˜ˆ์ •
            k -= 1
        collection.append(n)
        
    answer = ''.join(collection)

2) ์ œ๊ฑฐํ•ด์•ผํ•  ์ˆ˜๊ฐ€ ๋‚จ์€์ฑ„๋กœ ๋ชจ๋“  ์ž๋ฆฟ์ˆ˜๋ฅผ ๋‹ค ๋Œ์•˜์„ ๋•Œ

def solution(number, k):
	collection = []
    for i, n in enumerate(number):
    	while len(collection) > 0 and collection[-1] < k and k > 0:
        	collection.remove(collection[-1]) #์ดํ›„ ์ˆ˜์ • ์˜ˆ์ •
            k -= 1
        if k == 0: #์ถ”๊ฐ€๋œ ์ฝ”๋“œ
        	collection += number[i:] #ํ˜„์žฌ ์ž๋ฆฌ์ˆ˜๋ถ€ํ„ฐ ๋๊นŒ์ง€ ๋ถ™์ด๊ธฐ
            break
        collection.append(n)
        
    answer = ''.join(collection)

3) ๋ฆฌ์ŠคํŠธ ๋์— ๊ฐ’์„ ๋„ฃ๊ณ  ๋นผ๊ธฐ

๋ฆฌ์ŠคํŠธ ๋์— ๊ฐ’์„ ๋„ฃ์„ ๋•Œ๋Š” append๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋งž์ง€๋งŒ

๊ฐ’์„ ์ œ๊ฑฐํ•  ๋•Œ๋Š” ์–ด๋–จ๊นŒ์š”?

collection.remove(collection[-1]) ํ•ด๋‹น ์ฝ”๋“œ๊ฐ€ ํšจ์œจ์ ์ผ๊นŒ์š”?

 

๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

collection[-1]์˜ ๊ฐ’์„ ์ฐพ๊ณ  ๊ทธ ๊ฐ’์„ ๋‹ค์‹œ ๋ฆฌ์ŠคํŠธ์—์„œ ์ฐพ์•„์„œ

์ œ๊ฑฐํ•˜๋Š” ๊ณผ์ •์„ ๊ฑฐ์น˜๋ฏ€๋กœ ํšจ์œจ์ ์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

 

๋ฆฌ์ŠคํŠธ์˜ ๋งˆ์ง€๋ง‰ ์›์†Œ๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด

list.pop()์„ ํ†ตํ•ด์„œ ๋”์šฑ ๋น ๋ฅด๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

def solution(number, k):
	collection = []
    for i, n in enumerate(number):
    	while len(collection) > 0 and collection[-1] < k and k > 0:
        	collection.pop() #์ˆ˜์ •๋œ ์ฝ”๋“œ
            k -= 1
        if k == 0: #์ถ”๊ฐ€๋œ ์ฝ”๋“œ
        	collection += number[i:]
            break
        collection.append(n)
        
    answer = ''.join(collection)

 

 

[์ตœ์ข… ์ฝ”๋“œ]

def solution(number, k):
	collection = []
    for i, n in enumerate(number):
    	whlie len(collection) > 0 and collection[-1] < n and k > 0:
        	collection.pop() #list์˜ ๋งˆ์ง€๋ง‰ ๊ฐ’
            k -= 1
        if k == 0: #๋”์ด์ƒ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐœ์ˆ˜๊ฐ€ ์—†์„ ๋•Œ
        	collection += number[i:] #number์˜ i๋ฒˆ์งธ๋ถ€ํ„ฐ ๋๊นŒ์ง€ ๋ถ™์ด๊ธฐ
            break #๋ฐ˜๋ณต๋ฌธ์—์„œ ํšจ์œจ์„ฑ์„ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ์•ˆ ์ค‘ ํ•˜๋‚˜
        collection.append(n)
        
    answer = collection[:-k] if k > 0 else collection #์ œ๊ฑฐํ•ด์•ผํ•  ๊ฐœ์ˆ˜(k)๊ฐ€ ๋‚จ์•˜์„ ๋•Œ ๋งจ ๋’ค k๊ฐœ๋ฅผ ์ œ๊ฑฐ
    return ''.join(answer)

 

'๐Ÿ“๋ฌธ์ œ ํ’€์ด > ๐ŸงฉProgrammers' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Python | week3] Heap(ํž™) | Dynamic Programming(๋™์  ๊ณ„ํš๋ฒ•) | DFS/ BFS (๊นŠ์ด/ ๋„ˆ๋น„ ์šฐ์„  ํƒ์ƒ‰)  (0) 2023.01.31
[Python | week2] ์ค‘๊ฐ„๊ณ ์‚ฌ | ๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜(Greedy Algorithm)  (0) 2023.01.31
[Python | week1-3] ์ •๋ ฌ | Sort ํ•จ์ˆ˜ | divmod ํ•จ์ˆ˜ | ์žฌ๊ท€ ์•Œ๊ณ ๋ฆฌ์ฆ˜  (0) 2023.01.16
[Python | week1-2] Greedy ์•Œ๊ณ ๋ฆฌ์ฆ˜ | ์ด๊ฒƒ์ด ์ฝ”๋”ฉํ…Œ์ŠคํŠธ๋‹ค  (0) 2023.01.13
[Python | week1-1] Hash ์ž๋ฃŒ๊ตฌ์กฐ | accumulate ํ•จ์ˆ˜ | enumerate ํ•จ์ˆ˜ | counter ํ•จ์ˆ˜  (0) 2023.01.11
    '๐Ÿ“๋ฌธ์ œ ํ’€์ด/๐ŸงฉProgrammers' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • [Python | week3] Heap(ํž™) | Dynamic Programming(๋™์  ๊ณ„ํš๋ฒ•) | DFS/ BFS (๊นŠ์ด/ ๋„ˆ๋น„ ์šฐ์„  ํƒ์ƒ‰)
    • [Python | week2] ์ค‘๊ฐ„๊ณ ์‚ฌ | ๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜(Greedy Algorithm)
    • [Python | week1-3] ์ •๋ ฌ | Sort ํ•จ์ˆ˜ | divmod ํ•จ์ˆ˜ | ์žฌ๊ท€ ์•Œ๊ณ ๋ฆฌ์ฆ˜
    • [Python | week1-2] Greedy ์•Œ๊ณ ๋ฆฌ์ฆ˜ | ์ด๊ฒƒ์ด ์ฝ”๋”ฉํ…Œ์ŠคํŠธ๋‹ค
    Hiya_
    Hiya_
    ํ•˜์–€ ์ฒœ๊ณผ ๋ฐ”๋žŒ๋งŒ ์žˆ๋‹ค๋ฉด ์–ด๋””๋“  ๊ฐˆ ์ˆ˜ ์žˆ์–ด

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”