๐Ÿ—๏ธ Algorithm 344

[๋ฐฑ์ค€] (Python) 1181๋ฒˆ_๋‹จ์–ด ์ •๋ ฌ

https://www.acmicpc.net/problem/1181 1181๋ฒˆ: ๋‹จ์–ด ์ •๋ ฌ ์ฒซ์งธ ์ค„์— ๋‹จ์–ด์˜ ๊ฐœ์ˆ˜ N์ด ์ฃผ์–ด์ง„๋‹ค. (1 ≤ N ≤ 20,000) ๋‘˜์งธ ์ค„๋ถ€ํ„ฐ N๊ฐœ์˜ ์ค„์— ๊ฑธ์ณ ์•ŒํŒŒ๋ฒณ ์†Œ๋ฌธ์ž๋กœ ์ด๋ฃจ์–ด์ง„ ๋‹จ์–ด๊ฐ€ ํ•œ ์ค„์— ํ•˜๋‚˜์”ฉ ์ฃผ์–ด์ง„๋‹ค. ์ฃผ์–ด์ง€๋Š” ๋ฌธ์ž์—ด์˜ ๊ธธ์ด๋Š” 50์„ ๋„˜์ง€ ์•Š๋Š”๋‹ค. www.acmicpc.net ํ’€์ด 1๋ฒˆ ํ’€์ด # ๋ฐฑ์ค€ 1181๋ฒˆ ๋ฌธ์ œ - ๋‹จ์–ด ์ •๋ ฌ # 1. ๊ธธ์ด๊ฐ€ ์งง์€ ๊ฒƒ๋ถ€ํ„ฐ # 2. ๊ธธ์ด๊ฐ€ ๊ฐ™์œผ๋ฉด ์‚ฌ์ „ ์ˆœ์œผ๋กœ import sys n = int(sys.stdin.readline().strip()) words = [] for _ in range(n): words.append(sys.stdin.readline().strip()) words = list(set(words)) # ์ค‘..

[๋ฐฑ์ค€] (Python) 1427๋ฒˆ_์ˆ์ฝ”๋”ฉ

https://www.acmicpc.net/problem/1427 1427๋ฒˆ: ์†ŒํŠธ์ธ์‚ฌ์ด๋“œ ์ฒซ์งธ ์ค„์— ์ •๋ ฌํ•˜๋ ค๊ณ  ํ•˜๋Š” ์ˆ˜ N์ด ์ฃผ์–ด์ง„๋‹ค. N์€ 1,000,000,000๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ž์—ฐ์ˆ˜์ด๋‹ค. www.acmicpc.net ํ’€์ด ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์‚ฌ์šฉ # ๋ฐฑ์ค€ 1427๋ฒˆ ๋ฌธ์ œ - ์†ŒํŠธ์ธ์‚ฌ์ด๋“œ n = list(input()) n.sort(reverse=True) new_list = "".join(n) print(new_list)

[๋ฐฑ์ค€] (Python) 10989๋ฒˆ_์ˆ˜ ์ •๋ ฌํ•˜๊ธฐ 3

https://www.acmicpc.net/problem/10989 10989๋ฒˆ: ์ˆ˜ ์ •๋ ฌํ•˜๊ธฐ 3 ์ฒซ์งธ ์ค„์— ์ˆ˜์˜ ๊ฐœ์ˆ˜ N(1 ≤ N ≤ 10,000,000)์ด ์ฃผ์–ด์ง„๋‹ค. ๋‘˜์งธ ์ค„๋ถ€ํ„ฐ N๊ฐœ์˜ ์ค„์—๋Š” ์ˆ˜๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ์ด ์ˆ˜๋Š” 10,000๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ž์—ฐ์ˆ˜์ด๋‹ค. www.acmicpc.net ํ’€์ด # ๋ฐฑ์ค€ 10989๋ฒˆ ๋ฌธ์ œ - ์ˆ˜ ์ •๋ ฌํ•˜๊ธฐ import sys n = int(sys.stdin.readline()) num = [0] * 10001 for i in range(n): num[int(sys.stdin.readline())] += 1 for i in range(10001): if num[i] != 0: for j in range(num[i]): print(i)

[๋ฐฑ์ค€] (Python) 10610๋ฒˆ_30

https://www.acmicpc.net/problem/10610 10610๋ฒˆ: 30 ์–ด๋Š ๋‚ , ๋ฏธ๋ฅด์ฝ”๋Š” ์šฐ์—ฐํžˆ ๊ธธ๊ฑฐ๋ฆฌ์—์„œ ์–‘์ˆ˜ N์„ ๋ณด์•˜๋‹ค. ๋ฏธ๋ฅด์ฝ”๋Š” 30์ด๋ž€ ์ˆ˜๋ฅผ ์กด๊ฒฝํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ๊ทธ๋Š” ๊ธธ๊ฑฐ๋ฆฌ์—์„œ ์ฐพ์€ ์ˆ˜์— ํฌํ•จ๋œ ์ˆซ์ž๋“ค์„ ์„ž์–ด 30์˜ ๋ฐฐ์ˆ˜๊ฐ€ ๋˜๋Š” ๊ฐ€์žฅ ํฐ ์ˆ˜๋ฅผ ๋งŒ๋“ค๊ณ  ์‹ถ์–ดํ•œ www.acmicpc.net ํ’€์ด ๋‚ด ํ’€์ด # ๋ฐฑ์ค€ 10610๋ฒˆ ๋ฌธ์ œ - 30 n = list(input()) new_list = [] for i in n: new_list.append(int(i)) if 0 in new_list: new_list.sort(reverse=True) for j in range(len(new_list)): new_list[j] = str(new_list[j]) new_list = ''.join(n..

[์ด๊ฒƒ์ด ์ทจ์—…์„ ์œ„ํ•œ ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ] ํŠธ๋ฆฌ ์ž๋ฃŒ๊ตฌ์กฐ

ํŠธ๋ฆฌ ์ž๋ฃŒ๊ตฌ์กฐ ์•ž์„œ ๋งํ•œ ์ด์ง„ ํƒ์ƒ‰์€ ์ „์ œ ์กฐ๊ฑด์ด ๋ฐ์ดํ„ฐ๊ฐ€ ์ •๋ ฌ๋˜์–ด ์žˆ์–ด์•ผ ํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋™์ž‘ํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ •๋ ฌํ•ด๋‘๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์œผ๋ฏ€๋กœ ์ด์ง„ ํƒ์ƒ‰์„ ํšจ๊ณผ์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ๋‚ด๋ถ€์ ์œผ๋กœ ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ์— ์ ํ•ฉํ•œ ํŠธ๋ฆฌ(tree) ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์ด์š”ํ•˜์—ฌ ํ•ญ์ƒ ๋ฐ์ดํ„ฐ๊ฐ€ ์ •๋ ฌ๋˜์–ด ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ์˜ ํƒ์ƒ‰์€ ์ด์ง„ ํƒ์ƒ‰๊ณผ๋Š” ์กฐ๊ธˆ ๋‹ค๋ฅด์ง€๋งŒ, ์ด์ง„ ํƒ์ƒ‰๊ณผ ์œ ์‚ฌํ•œ ๋ฐฉ๋ฒ•์„ ์ด์šฉํ•ด ํƒ์ƒ‰์„ ํ•ญ์ƒ ๋น ๋ฅด๊ฒŒ ์ˆ˜ํ–‰ํ•˜๋„๋ก ์„ค๊ณ„๋˜์–ด ์žˆ์–ด์„œ ๋ฐ์ดํ„ฐ๊ฐ€ ๋งŽ์•„๋„ ํƒ์ƒ‰ํ•˜๋Š” ์†๋„๊ฐ€ ๋น ๋ฅด๋‹ค. ํŠธ๋ฆฌ ์ž๋ฃŒ๊ตฌ์กฐ๋ž€ ๋ฌด์—‡์ธ๊ฐ€? ํŠธ๋ฆฌ ์ž๋ฃŒ๊ตฌ์กฐ๋Š” ๋…ธ๋“œ์™€ ๋…ธ๋“œ์˜ ์—ฐ๊ฒฐ๋ฃŒ ํ‘œํ˜„ํ•˜๋ฉฐ ์—ฌ๊ธฐ์—์„œ ๋…ธ๋“œ๋Š” ์ •๋ณด์˜ ๋‹จ์œ„๋กœ์„œ ์–ด๋– ํ•œ ์ •๋ณด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฐœ์ฒด๋กœ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ž˜ํ”„๋ฅผ ๋‹ค๋ฃฐ ๋•Œ ๋‚˜์˜จ ๋…ธ๋“œ์™€ ๋™์ผํ•˜๋‹ค. ์ตœ๋‹จ ๊ฒฝ๋กœ์—์„œ๋Š” ๋…ธ..

[์ด๊ฒƒ์ด ์ทจ์—…์„ ์œ„ํ•œ ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ] ์ด์ง„ ํƒ์ƒ‰(Binary Search)

** ์ด์ง„ ํƒ์ƒ‰์ด๋ž€ ? ๋‚ด๋ถ€์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์ •๋ ฌ๋˜์–ด ์žˆ์„ ๋•Œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ด๋ฏธ ์ •๋ ฌ๋˜์–ด ์žˆ๋‹ค๋ฉด ๋ฐ์ดํ„ฐ๋ฅผ ๋งค์šฐ ๋น ๋ฅด๊ฒŒ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค๋Š” ํŠน์ง•์ด ์žˆ์Œ ํƒ์ƒ‰ ๋ฒ”์œ„๋ฅผ ์ ˆ๋ฐ˜์”ฉ ์ขํ˜€๊ฐ€๋ฉฐ ๋ฐ์ดํ„ฐ๋ฅผ ํƒ์ƒ‰ ์‹œ๊ฐ„ ๋ณต์žก๋„ O(logN) ๊ตฌํ˜„ ๋ฐฉ๋ฒ• ์ด์ง„ ํƒ์ƒ‰์€ ์œ„์น˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋ณ€์ˆ˜ 3๊ฐœ๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๋ฐ ํƒ์ƒ‰ํ•˜๊ณ ์ž ํ•˜๋Š” ๋ฒ”์œ„์˜ ์‹œ์ž‘์ (start), ๋์ (end), ์ค‘๊ฐ„์ (mid)์„ ์ด์šฉ ์ฐพ์œผ๋ ค๋Š” ๋ฐ์ดํ„ฐ์™€ ์ค‘๊ฐ„์ (mid)์œ„์น˜์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ˜๋ณต์ ์œผ๋กœ ๋น„๊ตํ•˜์—ฌ ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ์Œ ์–ธ์ œ ์จ์•ผํ•˜๋‚˜ ? ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ์—์„œ์˜ ์ด์ง„ ํƒ์ƒ‰ ๋ฌธ์ œ๋Š” ํƒ์ƒ‰ ๋ฒ”์œ„๊ฐ€ ํฐ ์ƒํ™ฉ์—์„œ์˜ ํƒ์ƒ‰์„ ๊ฐ€์ •ํ•˜๋Š” ๋ฌธ์ œ๊ฐ€ ๋งŽ๋‹ค. ๋”ฐ๋ผ์„œ ํƒ์ƒ‰ ๋ฒ”์œ„๊ฐ€ 2000๋งŒ์„ ๋„˜์–ด๊ฐ€๋ฉด ์ด์ง„ ํƒ์ƒ‰์œผ๋กœ ๋ฌธ์ œ์— ์ ‘๊ทผํ•ด๋ณด๋Š” ๊ฒƒ์ด ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค. ์ฒ˜๋ฆฌํ•ด์•ผ ํ•  ๋ฐ์ดํ„ฐ์˜ ๊ฐœ์ˆ˜๋‚˜ ๊ฐ’์ด 1000..

[๋ฐฑ์ค€] (Python) 10162๋ฒˆ _์ „์ž๋ ˆ์ธ์ง€

https://www.acmicpc.net/problem/10162 10162๋ฒˆ: ์ „์ž๋ ˆ์ธ์ง€ 3๊ฐœ์˜ ์‹œ๊ฐ„์กฐ์ ˆ์šฉ ๋ฒ„ํŠผ A B C๊ฐ€ ๋‹ฌ๋ฆฐ ์ „์ž๋ ˆ์ธ์ง€๊ฐ€ ์žˆ๋‹ค. ๊ฐ ๋ฒ„ํŠผ๋งˆ๋‹ค ์ผ์ •ํ•œ ์‹œ๊ฐ„์ด ์ง€์ •๋˜์–ด ์žˆ์–ด ํ•ด๋‹น ๋ฒ„ํŠผ์„ ํ•œ๋ฒˆ ๋ˆ„๋ฅผ ๋•Œ๋งˆ๋‹ค ๊ทธ ์‹œ๊ฐ„์ด ๋™์ž‘์‹œ๊ฐ„์— ๋”ํ•ด์ง„๋‹ค. ๋ฒ„ํŠผ A, B, C์— ์ง€์ •๋œ ์‹œ๊ฐ„์€ www.acmicpc.net ํ’€์ด ๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜ # ๋ฐฑ์ค€ 10162๋ฒˆ ๋ฌธ์ œ - ์ „์ž๋ ˆ์ธ์ง€ import sys n = int(sys.stdin.readline().rstrip()) buttons = [300, 60, 10] count = [0] * 3 if(n % 10 != 0): print(-1) else: for i in range(3): count[i] = n // buttons[i] n = n % button..

[๋ฐฑ์ค€] (Python) 2217๋ฒˆ _๋กœํ”„

https://www.acmicpc.net/problem/2217 2217๋ฒˆ: ๋กœํ”„ N(1 ≤ N ≤ 100,000)๊ฐœ์˜ ๋กœํ”„๊ฐ€ ์žˆ๋‹ค. ์ด ๋กœํ”„๋ฅผ ์ด์šฉํ•˜์—ฌ ์ด๋Ÿฐ ์ €๋Ÿฐ ๋ฌผ์ฒด๋ฅผ ๋“ค์–ด์˜ฌ๋ฆด ์ˆ˜ ์žˆ๋‹ค. ๊ฐ๊ฐ์˜ ๋กœํ”„๋Š” ๊ทธ ๊ตต๊ธฐ๋‚˜ ๊ธธ์ด๊ฐ€ ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ๋“ค ์ˆ˜ ์žˆ๋Š” ๋ฌผ์ฒด์˜ ์ค‘๋Ÿ‰์ด ์„œ๋กœ ๋‹ค๋ฅผ ์ˆ˜๋„ ์žˆ๋‹ค. ํ•˜ www.acmicpc.net ํ’€์ด # ๋ฐฑ์ค€ 2217๋ฒˆ ๋ฌธ์ œ - ๋กœํ”„ def solution(): arr.sort(reverse=True) # ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ for i in range(n): # 1๋ถ€ํ„ฐ N๊นŒ์ง€ ๊ณฑํ•˜๋Š” ์‹ arr[i] = arr[i] * (i+1) return max(arr) # ๊ณ„์‚ฐํ•œ ๊ฐ’ ์ค‘ ๊ฐ€์žฅ ํฐ ๊ฐ’์„ return n = int(input()) arr = [] for _ in range(n): ..

[๋ฐฑ์ค€] (Python) 5585๋ฒˆ _๊ฑฐ์Šค๋ฆ„๋ˆ

https://www.acmicpc.net/problem/5585 5585๋ฒˆ: ๊ฑฐ์Šค๋ฆ„๋ˆ ํƒ€๋กœ๋Š” ์ž์ฃผ JOI์žกํ™”์ ์—์„œ ๋ฌผ๊ฑด์„ ์‚ฐ๋‹ค. JOI์žกํ™”์ ์—๋Š” ์ž”๋ˆ์œผ๋กœ 500์—”, 100์—”, 50์—”, 10์—”, 5์—”, 1์—”์ด ์ถฉ๋ถ„ํžˆ ์žˆ๊ณ , ์–ธ์ œ๋‚˜ ๊ฑฐ์Šค๋ฆ„๋ˆ ๊ฐœ์ˆ˜๊ฐ€ ๊ฐ€์žฅ ์ ๊ฒŒ ์ž”๋ˆ์„ ์ค€๋‹ค. ํƒ€๋กœ๊ฐ€ JOI์žกํ™”์ ์—์„œ ๋ฌผ๊ฑด์„ ์‚ฌ www.acmicpc.net ํ’€์ด ์•Œ๊ณ ๋ฆฌ์ฆ˜ : ๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜ # ๋ฐฑ์ค€ 5585๋ฒˆ ๋ฌธ์ œ - ๊ฑฐ์Šค๋ฆ„๋ˆ n = int(input()) val = 1000 - n # 500, 100, 50, 10, 5, 1 coin = [500, 100, 50, 10, 5, 1] count = 0 for i in coin: count += (val // i) val = val % i print(count) 1. ๊ฑฐ์Šค๋ฆ„๋ˆ์˜ ๊ฐฏ..

[๋ฐฑ์ค€] (Python) 1541๋ฒˆ _์žƒ์–ด๋ฒ„๋ฆฐ ๊ด„ํ˜ธ

https://www.acmicpc.net/problem/1541 1541๋ฒˆ: ์žƒ์–ด๋ฒ„๋ฆฐ ๊ด„ํ˜ธ ์ฒซ์งธ ์ค„์— ์‹์ด ์ฃผ์–ด์ง„๋‹ค. ์‹์€ ‘0’~‘9’, ‘+’, ๊ทธ๋ฆฌ๊ณ  ‘-’๋งŒ์œผ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๊ณ , ๊ฐ€์žฅ ์ฒ˜์Œ๊ณผ ๋งˆ์ง€๋ง‰ ๋ฌธ์ž๋Š” ์ˆซ์ž์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์—ฐ์†ํ•ด์„œ ๋‘ ๊ฐœ ์ด์ƒ์˜ ์—ฐ์‚ฐ์ž๊ฐ€ ๋‚˜ํƒ€๋‚˜์ง€ ์•Š๊ณ , 5์ž๋ฆฌ๋ณด๋‹ค www.acmicpc.net ํ’€์ด # # ๋ฐฑ์ค€ 1541๋ฒˆ ๋ฌธ์ œ - ์žƒ์–ด๋ฒ„๋ฆฐ ๊ด„ํ˜ธ exp = input().split("-") ans = 0 for i in exp[0].split("+"): ans += int(i) for i in exp[1:]: for j in i.split("+"): ans -= int(j) print(ans) # a = input().split('-') # num = [] # for i in a: ..