๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿงฉ Algorithm/๊ตฌํ˜„6

[LeetCode] 2181๋ฒˆ: ๊ธฐ์กด ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ ์ˆ˜์ •ํ•˜๊ธฐ Hint 1. ์–ด๋–ป๊ฒŒ ํ•˜๋ฉด ํฌ์ธํ„ฐ 2๊ฐœ๋ฅผ ์ด์šฉํ•ด์„œ ๊ธฐ์กด ๋ฆฌ์ŠคํŠธ๋ฅผ ์›ํ•˜๋Š” ๊ฒฐ๊ณผ๋กœ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์„๊นŒ? 2. ํฌ์ธํ„ฐ 1๊ฐœ๋Š” ์ˆ˜์ •ํ•˜๋Š” ๋…ธ๋“œ ์œ„์น˜์— (a), ๋‹ค๋ฅธ ํ•˜๋‚˜๋Š” ๋ฆฌ์ŠคํŠธ ์ „์ฒด๋ฅผ ํ™•์ธํ•˜๋Š” ์šฉ๋„(b)๋กœ ์ด์šฉํ•ด๋ณด์ž! 3. ์›€์ง์ด๋Š” ํฌ์ธํ„ฐb๊ฐ€ ๊ทธ ๋‹ค์Œ 0์— ๋„๋‹ฌํ•  ๋•Œ๊นŒ์ง€ ์ˆซ์ž๋“ค์„ ์ˆ˜์ •ํ•˜๋Š” ํฌ์ธํ„ฐa ์œ„์น˜์— ๋”ํ•˜๋ฉด ๋œ๋‹ค. 4. ๋งˆ์ง€๋ง‰ ๋…ธ๋“œ๋Š” null์— ์—ฐ๊ฒฐ๋˜๋„๋ก ๋ฐ”๊ฟ”์•ผํ•œ๋‹ค. LeetCode 2181๋ฒˆ: Merge Nodes in Between Zeros (ํ’€์–ด๋ณด๊ธฐ) class Solution: def mergeNodes(self, head: Optional[ListNode]) -> Optional[ListNode]: # ํฌ์ธํ„ฐ 2๊ฐœ ๋งŒ๋“ค๊ธฐ # now = ๋ง์…ˆํ•  ํฌ์ธํ„ฐ ์œ„์น˜ # pointer = ๋ฆฌ์ŠคํŠธ ์ „์ฒด๋ฅผ ํ™•์ธํ•  .. 2023. 4. 30.
[LeetCode] 1828๋ฒˆ: ์› ์•ˆ์˜ ์  ๊ฐœ์ˆ˜ Hint 1. ์›๊ณผ ์ ๋“ค์˜ ์ตœ๋Œ€ ๊ฐœ์ˆ˜๊ฐ€ ๊ฐ๊ฐ 500๊ฐœ์ด๊ธฐ ๋•Œ๋ฌธ์— for๋ฌธ 2๊ฐœ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ผ์ผ์ด ๋น„๊ตํ•ด๋„ ๋œ๋‹ค 2. Follow up์— O(n)์œผ๋กœ ํ’€์–ด๋ณด๋ผ๊ณ  ๋˜์–ด์žˆ์ง€๋งŒ ์ด๊ฑด ๋‚˜์ค‘์— ๋„์ „...^^ LeetCode 1828๋ฒˆ: Queries on Number of Points Inside a Circle (ํ’€์–ด๋ณด๊ธฐ) class Solution: def countPoints(self, points: List[List[int]], queries: List[List[int]]) -> List[int]: # points๋ฅผ x, y ์ˆœ์„œ๋กœ ์ž‘์€ ์ˆซ์ž๋ถ€ํ„ฐ ํฐ ์ˆซ์ž๊นŒ์ง€ ์ •๋ ฌํ•œ๋‹ค points = sorted(points, key=lambda x: (x[0],x[1])) answer = [] for query in que.. 2023. 4. 28.
[LeetCode] 876๋ฒˆ: ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ Goal 1. ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ ์ดํ•ดํ•˜๊ธฐ 2. ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ ํ’€์–ด๋ณด๊ธฐ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ(Linked List)๋ž€? ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ๋ž€ ๋ฆฌ์ŠคํŠธ ์•ˆ์— ์žˆ๋Š” ํ•ญ๋ชฉ๋“ค์ด ๊ทธ ๋‹ค์Œ ์ˆœ์„œ๋กœ ์˜ค๋Š” ํ•ญ๋ชฉ๊ณผ ์—ฐ๊ฒฐ๋˜์–ด ์ •ํ•ด์ง„ ์ˆœ์„œ๋กœ ๋ฌถ์—ฌ ์žˆ๋Š” ๋ฆฌ์ŠคํŠธ ๊ตฌ์กฐ๋ฅผ ๋งํ•œ๋‹ค. LeetCode 876๋ฒˆ: Middle of the Linked List (ํ’€์–ด๋ณด๊ธฐ) Hint 1. head๋ผ๋Š” ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ ๊ตฌ์กฐ์˜ ์ •์˜ : head.val = ํ˜„์žฌ ์œ„์น˜์˜ ์ˆ˜ head.next= ๋‹ค์Œ ์—ฐ๊ฒฐ๋œ ๋ฆฌ์ŠคํŠธ 2. ์ด ๊ฐœ์ˆ˜๊ฐ€ 1๊ฐœ์ผ ๋•Œ๋Š” ํ˜„์žฌ ์œ„์น˜์™€ ์ค‘๊ฐ„ ์ง€์ ์˜ ์œ„์น˜๊ฐ€ ๊ฐ™๋‹ค 3. ์—ฐ๊ฒฐ๋œ ๋ฆฌ์ŠคํŠธ์˜ ๊ฐœ์ˆ˜๊ฐ€ ํ•˜๋‚˜์”ฉ ๋Š˜์–ด๋‚  ๋•Œ๋งˆ๋‹ค ํ˜„์žฌ ์œ„์น˜์™€ ์ค‘๊ฐ„ ์ง€์ ์˜ ์œ„์น˜๊ฐ€ ์–ด๋–ป๊ฒŒ ๋ณ€ํ•˜๋Š”์ง€ ์ƒ๊ฐํ•ด๋ณด์ž 4. ์ด ๊ฐœ์ˆ˜๊ฐ€ ํ™€์ˆ˜์ผ ๋•Œ์™€ ์ง์ˆ˜์ผ ๋•Œ ํ˜„์žฌ ์œ„์น˜์™€ ์ค‘๊ฐ„ ์ง€์ ์˜ .. 2023. 3. 11.
[๋ฐฑ์ค€] 10808๋ฒˆ: ์•ŒํŒŒ๋ฒณ ๊ฐœ์ˆ˜ Hint 1. ์•ŒํŒŒ๋ฒณ ๊ฐœ์ˆ˜๋Š” ์ด 26๊ฐœ๋กœ ์ •ํ•ด์ ธ ์žˆ๋‹ค. 2. ord()์„ ์‚ฌ์šฉํ•˜๋ฉด ์•ŒํŒŒ๋ฒณ์„ ์•„์Šคํ‚ค ์ˆซ์ž๋กœ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์žˆ๋‹ค. 3. ord('a')๋Š” 97์ด๋‹ค. ๋ฐฑ์ค€ 10808๋ฒˆ: ์•ŒํŒŒ๋ฒณ ๊ฐœ์ˆ˜ (ํ’€์–ด๋ณด๊ธฐ) # ์•ŒํŒŒ๋ฒณ ๊ฐœ์ˆ˜๋ฅผ ์…€ ์ˆ˜ ์žˆ๊ฒŒ ๋ฏธ๋ฆฌ 0์œผ๋กœ ๋œ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋งŒ๋“ค์–ด ์ค€๋‹ค alphabet = [0 for i in range(26)] for char in input(): # ord('a')๋Š” 97์ด๊ธฐ ๋•Œ๋ฌธ์— 97์„ ๋นผ๋ฉด alphabet ๋ฆฌ์ŠคํŠธ์—์„œ 0๋ฒˆ์งธ๋กœ ๊ฐ’์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค alphabet[ord(char) - 97] += 1 # ๋ฆฌ์ŠคํŠธ๋Š” join์„ ์จ์„œ string ํ˜•ํƒœ๋กœ ํ•ฉ์น  ์ˆ˜ ์žˆ๋‹ค. ์ด๋•Œ, ๋ฆฌ์ŠคํŠธ์— ๋“ค์–ด์žˆ๋Š” ๊ฐ’๋“ค์€ string์ด์–ด์•ผ ํ•œ๋‹ค print(' '.join(map(str, alphabet))) 2023. 3. 6.
[๋ฐฑ์ค€] 1929๋ฒˆ: ์†Œ์ˆ˜ ๊ตฌํ•˜๊ธฐ Hint 1. 1๋ถ€ํ„ฐ n๊นŒ์ง€์˜ ์ˆซ์ž๊ฐ€ ์†Œ์ˆ˜์ธ์ง€ ์•„๋‹Œ์ง€ ํ™•์ธ์„ ํ•˜๊ณ , ์†Œ์ˆ˜์ด๋ฉด ๊ทธ ์ˆซ์ž์˜ ๋ฐฐ์ˆ˜๋“ค์€ ์†Œ์ˆ˜์ผ๊นŒ์š”? 2. ์†Œ์ˆ˜์˜ ๋ฐฐ์ˆ˜๋“ค์€ ์†Œ์ˆ˜๊ฐ€ ์•„๋‹Œ๊ฒŒ ํ™•์‹คํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฏธ๋ฆฌ ์ œ๊ฑฐํ•ด์ฃผ๋ฉด ๋‚˜์ค‘์— ์†Œ์ˆ˜์ธ์ง€ ํ™•์ธํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค! 3. ์—๋ผํ† ์Šคํ…Œ๋„ค์Šค์˜ ์ฒด ์ด์šฉํ•˜๊ธฐ (๊ทธ๊ฒŒ ๋ญ์ง€?) ๋ฐฑ์ค€ 1929๋ฒˆ: ์†Œ์ˆ˜ ๊ตฌํ•˜๊ธฐ (ํ’€์–ด๋ณด๊ธฐ) import sys M, N = map(int, sys.stdin.readline().split()) # N๊นŒ์ง€์˜ ์ˆซ์ž์˜ ์†Œ์ˆ˜์ธ์ง€ ์•„๋‹Œ์ง€์— ๋Œ€ํ•œ ์—ฌ๋ถ€๋ฅผ ํŒ๋‹จํ•˜๋Š” ๋ฐฐ์—ด ๋งŒ๋“ค๊ธฐ # ์ด๊ฒƒ์ด ์—๋ ˆ์Šคํ† ์Šคํ…Œ๋„ค์Šค์˜ ์ฒด! is_prime = [True] * (N+1) is_prime[0], is_prime[1] = False, False # 2๋ถ€ํ„ฐ N๊นŒ์ง€์˜ ์ˆซ์ž์˜ ๋ฐฐ์ˆ˜๋Š” ๋ชจ๋‘ ์†Œ์ˆ˜๊ฐ€ ์•„๋‹ˆ๋ผ๊ณ  False๋กœ ๋ฐ”๊ฟ”์ฃผ๊ธฐ f.. 2023. 2. 18.
์—๋ผํ† ์Šคํ…Œ๋„ค์Šค์˜ ์ฒด Goal 1. ์†Œ์ˆ˜ ์ •์˜ํ•˜๊ธฐ 2. ์†Œ์ˆ˜ ์ฐพ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ - "์—๋ผํ† ์Šคํ…Œ๋„ค์Šค์˜ ์ฒด" ์ดํ•ดํ•˜๊ธฐ ์†Œ์ˆ˜๋ž€? ์†Œ์ˆ˜๋ž€ ์ˆซ์ž ์ค‘ ๋‚˜ ์ž์‹ ๊ณผ 1๋กœ๋งŒ ๋‚˜๋ˆ ์ง€๋Š” ์ˆ˜๋‹ค. ์ฆ‰, ๊ทธ 2๊ฐœ์˜ ์ˆ˜ ์ด์™ธ์˜ ๋‹ค๋ฅธ ์ˆ˜๋กœ ๋‚˜๋ˆ ์ง„๋‹ค๋ฉด ์†Œ์ˆ˜๊ฐ€ ์•„๋‹Œ "ํ•ฉ์„ฑ์ˆ˜" ๋ผ๊ณ  ๋งํ•  ์ˆ˜ ์žˆ๋‹ค! ์˜ˆ์‹œ) ์†Œ์ˆ˜ : 2, 3, 5, 7, 11, 13, 17, 19, ... ๊ทธ ์™ธ : 4 (2๋กœ ๋‚˜๋ˆ ์ง€๋‹ˆ๊นŒ), 6 (2์™€ 3์œผ๋กœ ๋‚˜๋ˆ ์ง€๋‹ˆ๊นŒ), 8 (2๋กœ ๋‚˜๋ˆ ์ง€๋‹ˆ๊นŒ), 9 (3์œผ๋กœ ๋‚˜๋ˆ ์ง€๋‹ˆ๊นŒ), ... "์—๋ผํ† ์Šคํ…Œ๋„ค์Šค์˜ ์ฒด"๋Š” ์–ธ์ œ ํ•„์š”ํ•œ๊ฐ€? N์ด๋ผ๋Š” ์ˆซ์ž๊ฐ€ ์†Œ์ˆ˜์ธ์ง€ ์•„๋‹Œ์ง€ ํŒ๋‹จํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” 2๋ถ€ํ„ฐ N/2 ๊นŒ์ง€์˜ ์ˆซ์ž๋กœ ๋‚˜๋ˆ ๋ด์•ผ ์•Œ ์ˆ˜ ์žˆ๋‹ค ํ•˜์ง€๋งŒ 2๋ถ€ํ„ฐ 100๊นŒ์ง€์˜ ์ˆซ์ž ์ค‘์—์„œ ์†Œ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•˜๋ผ๊ณ  ํ•œ๋‹ค๋ฉด ์ด์ค‘ for๋ฌธ์„ ๋Œ๋ ค์•ผํ•˜๊ณ  ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” O(n^2)์œผ๋กœ ๋Š๋ฆฌ๋‹ค .. 2023. 2. 13.