c o d i n g . . ๐Ÿ‰/Python

์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ ๊ณต๋ถ€(1)-[ํŒŒ์ด์ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ธํ„ฐ๋ทฐ]

H J 2020. 12. 23. 01:08

์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ๋ฅผ ์ค€๋น„ํ•˜๊ธฐ ์œ„ํ•ด์„œ ์šฐ์„  ์–ด๋–ค ์–ธ์–ด๋กœ ์‹œํ—˜์„ ์น  ๊ฑด์ง€ ๊ฒฐ์ •์„ ํ•ด์•ผ ํ–ˆ๋‹ค

 

C++๊ณผ ํŒŒ์ด์ฌ ์ค‘ ๊ณ ๋ฏผ์„ ํ•˜๋‹ค๊ฐ€ ๊ต์ˆ˜๋‹˜๊ป˜์„œ ์ถ”์ฒœํ•ด์ฃผ์‹  ์ฑ…์ธ 'ํŒŒ์ด์ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ธํ„ฐ๋ทฐ'๋ฅผ ๊ณต๋ถ€ํ•  ๊ฒธ ํŒŒ์ด์ฌ์œผ๋กœ ์ฝ”ํ…Œ ์ค€๋น„๋ฅผ ์‹œ์ž‘ํ•˜๊ธฐ๋กœ ํ–ˆ๋‹ค

 

์•ž์œผ๋กœ ์ด ์ฑ…์œผ๋กœ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ณต๋ถ€๋ฅผ ํ•  ์˜ˆ์ •์ด๋‹ค ><

 

ํŒŒ์ด์ฌ์€ 1ํ•™๋…„ 1ํ•™๊ธฐ ๋•Œ ์กฐ๊ฑด๋ฌธ, ๋ฐ˜๋ณต๋ฌธ, ํ•จ์ˆ˜ ์ •๋„ ์ž ์‹œ ๋‹ค๋ค„๋ณธ ๊ฒŒ ๋‹ค๋ผ์„œ ์ด๋ฒˆ ๋ฐฉํ•™ ๋•Œ ์—ด์‹ฌํžˆ ์ค€๋น„ํ•ด์•ผ๊ฒ ๋‹ค!

 

 

์ผ๋‹จ ์˜ํ˜„์ด๋ž‘(♥) ๋งค์ฃผ ์ตœ์†Œ 4๋ฌธ์ œ ์”ฉ ์ฑ…์— ์žˆ๋Š” ๋ฌธ์ œ๋ฅผ ํ’€์–ด๋ณด๊ธฐ๋กœ ํ–ˆ๋Š”๋ฐ ๊ทธ์ „์— ์•ž์— ๋งŽ์€ ๋‚ด์šฉ๋“ค์ด ์žˆ๊ธธ๋ž˜ ์˜ค๋Š˜ ์ฝ์–ด๋ณด๊ธฐ๋กœ ํ–ˆ๋‹ค

 

 

์ฑ…์„ ์ฝ๋˜ ๋„์ค‘ ๋Œ€์ถฉ ์ค‘์š”ํ•œ ๋ถ€๋ถ„์„ ์ •๋ฆฌํ•ด์•ผ ํ•  ๊ฒƒ ๊ฐ™์•„์„œ ํ‹ฐ์Šคํ† ๋ฆฌ๋ฅผ ์ผฐ๋‹ค

 

์šฐ์„ ,,, ๊ฐ ๊ธฐ์—…๋งˆ๋‹ค ์–ด๋–ค ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ ํ”Œ๋žซํผ์„ ์“ฐ๋Š”์ง€, ๊ทธ๋ฆฌ๊ณ  ์™œ ํŒŒ์ด์ฌ์ด ์ฝ”ํ…Œ๋ฅผ ์œ„ํ•œ ๊ฐ€์žฅ ์ข‹์€ ์–ธ์–ด์ธ์ง€ ๋‚˜์™€์žˆ๋‹ค

(C์–ธ์–ด๋งŒ 2๋…„ ๋™์•ˆ ๊ณต๋ถ€ํ•œ ๋‚˜์—๊ฒ,,, C++ ์ด ์กฐ๊ธˆ์ด๋ผ๋„ ๋” ์ต์ˆ™ํ•˜์ง€๋งŒ ใ…œใ…œใ…œใ…œ)

 

C์–ธ์–ด๋งŒ ํ•˜๋‹ค๊ฐ€ ๊ฐ‘์ž๊ธฐ ํŒŒ์ด์ฌ์œผ๋กœ ๋„˜์–ด์˜ค๋‹ˆ๊นŒ ์ž๊พธ ;๋ฅผ ์น˜๊ฒŒ ๋˜๊ณ  ๋ฌธ๋ฒ•๋„ ๋„ˆ๋ฌด ํ—ท๊ฐˆ๋ฆฐ๋‹ค!!!!

 

ํŒŒ์ด์ฌ,,, ํ•จ ํ•ด๋ณด์ง€ ๋จธ~~

 

 

์ง€๊ธˆ๋ถ€ํ„ฐ ์˜ค๋Š˜ ๋‚ด๊ฐ€ ์ฑ…์„ ์ฝ์œผ๋ฉด์„œ ์ •ํ™•ํ•˜๊ฒŒ ์ดํ•ด๊ฐ€ ๋˜์—ˆ๊ณ , ์•ž์œผ๋กœ ๊ธฐ์–ตํ•˜๊ณ  ์‹ถ์€ ๊ฒƒ๋“ค๋งŒ ์ •๋ฆฌํ•  ๊ฒƒ์ด๋‹ค.


 

https://leetcode.com/

 

LeetCode - The World's Leading Online Programming Learning Platform

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com

์—ฌ๊ธฐ์— ์ฝ”๋“œ ์ž…๋ ฅํ•˜๊ณ  ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ์‹คํ–‰์‹œ์ผœ๋ณผ ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ•œ๋‹ค

 

 

https://github.com/onlybooks/algorithm-interview

 

onlybooks/algorithm-interview

<ํŒŒ์ด์ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ธํ„ฐ๋ทฐ> 95๊ฐ€์ง€ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ ํ’€์ด๋กœ ์™„์„ฑํ•˜๋Š” ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ. Contribute to onlybooks/algorithm-interview development by creating an account on GitHub.

github.com

์—ฌ๊ธฐ์„  ๋ชจ๋“  ๋ฌธ์ œ์˜ ํ’€์ด ์ฝ”๋“œ๋ฅผ ๋‹ค์šด๋กœ๋“œํ•  ์ˆ˜ ์žˆ๋‹ค


 

๋„ค์ด๋ฐ ์ปจ๋ฒค์…˜

 

ํŒŒ์ด์ฌ์˜ ๋ณ€์ˆ˜๋ช… ๋„ค์ด๋ฐ ์ปจ๋ฒค์…˜์€ ์Šค๋„ค์ดํฌ ์ผ€์ด์Šค๋ฅผ ๋”ฐ๋ฅธ๋‹ค.

์Šค๋„ค์ดํฌ ์ผ€์ด์Šค๋Š” ๊ฐ ๋‹จ์–ด๋ฅผ ๋ฐ‘์ค„( _ )๋กœ ๊ตฌ๋ถ„ํ•˜์—ฌ ํ‘œ๊ธฐํ•œ๋‹ค.

 

๋‚˜๋Š” C์–ธ์–ด๋กœ ์ฝ”๋”ฉ์„ ํ•˜๋ฉฐ ๋ณ€์ˆ˜๋ช…์„ ์ •ํ•  ๋•Œ ์ง€๊ธˆ๊ป ์นด๋ฉœ ์ผ€์ด์Šค๋ฅผ ๋”ฐ๋ฅด๊ณ  ์žˆ์—ˆ๋‹ค 

(์ด์ œ๋ถ€ํ„ฐ ํŒŒ์ด์ฌ์œผ๋กœ ์ฝ”๋”ฉ์„ ํ•  ๋• ์Šค๋„ค์ดํฌ ์ผ€์ด์Šค๋กœ ๋ณ€์ˆ˜๋ช… ๋„ค์ด๋ฐ ํ•˜๊ธฐ!!!!)

 

 

ํƒ€์ž… ํžŒํŠธ

 

ํŒŒ์ด์ฌ์€ ํƒ€์ž…์„ ๋ช…์‹œํ•˜์ง€ ์•Š์•„๋„ ๋˜์ง€๋งŒ ํƒ€์ž… ํžŒํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ฝ”๋“œ๋ฅผ ๋” ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๊ฒŒ ๋‚˜ํƒ€๋‚ผ ์ˆ˜๋„ ์žˆ๋‹ค

 

๋ณ€์ˆ˜๋ช…: int  -> ์ด๋Ÿฐ ์‹

 

** ํƒ€์ž… ํžŒํŠธ์— ์˜ค๋ฅ˜๊ฐ€ ์žˆ๋Š”์ง€ ์ž๋™์œผ๋กœ ํ™•์ธํ•˜๋ ค๋ฉด $ pip install mypy๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค**

(-> ์ด๊ฑฐ ์™œ ์จ๋ณธ ๊ธฐ์–ต์ด ์žˆ์ง€,,??)

 

 

์‹œ๊ฐ„ ๋ณต์žก๋„ Time Complexity

 

์ด๋ฒˆ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฐ ์‹ค์Šต ์‹œ๊ฐ„์— ๋ฌดํ•จ๋งˆ๋“œ ๊ต์ˆ˜๋‹˜๊ป˜์„œ ๋งค์šฐ๋งค์›€ใ…์šฐ ์ค‘์š”ํ•˜๊ฒŒ ์—ฌ๊ธฐ์…จ๋˜ ^^ Big-O ํ‘œ๊ธฐ๋ฒ•^^์€ ์ด๋ฏธ ๋‹ณ๋„๋ก ๋ณด๊ณ  ๊ณต๋ถ€ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ž์„ธํ•˜๊ฒŒ ์ •๋ฆฌํ•˜์ง€ ์•Š์„ ๊ฒƒ์ด๋‹ค

 

(๋‚ด๊ฐ€ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์‹œํ—˜ ๊ณต๋ถ€ํ•˜๋ฉด์„œ ํ•„๊ธฐํ•ด๋’€๋˜ ๊ฒƒ๋“ค ๋‹ค ์˜ฌ๋ ค์•ผ์ง€><!!!!! A+ ๋ฐ›์•„์„œ ๊ธฐ๋ถ„ ์ข‹์œผ๋‹ˆ๊นŒ ใ…Žใ……ใ…Ž)

 

์˜ˆ์‹œ)- ๊ด„ํ˜ธ ์•ˆ์˜ ๋ถ€๋ถ„์€ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์‹œ๊ฐ„์— ๋‚ด๊ฐ€ ๋”ฐ๋กœ ๋ฐฐ์› ๋˜ ๊ฒƒ๋“ค์ด๋‹ค (์ตœ์•…์˜ ๊ฒฝ์šฐ ์ œ์™ธํ•จ)

 

O(1)- ํ•ด์‹œ ํ…Œ์ด๋ธ”

O(log n)- ์ด์ง„ ๊ฒ€์ƒ‰(AVL tree, splay tree, red-black tree) 

O(n)- ์„ ํ˜• ์‹œ๊ฐ„(์ด๋ฏธ ์ •๋ ฌ๋˜์–ด์žˆ๋Š” ๊ฒฝ์šฐ insertion sort)

O(n log n)- ๋ณ‘ํ•ฉ ์ •๋ ฌ(merge sort, quick sort)

O(n^2)- ๋ฒ„๋ธ” ์ •๋ ฌ(insertion sort, selection sort)

O(2^n)- ํ”ผ๋ณด๋‚˜์น˜

O(n!)- ์™ธํŒ์› ๋ฌธ์ œ

 

๊ทธ๋ฆฌ๊ณ  Big-O ํ‘œ๊ธฐ๋ฒ• ๋ง๊ณ ๋„ ๋น…์˜ค๋ฉ”๊ฐ€, ๋น…์„ธํƒ€์™€ ๊ฐ™์€ ํ‘œ๊ธฐ๋ฒ•๋“ค์ด ์žˆ๋‹ค.

 

 

+

 

range(): ์ด๊ฑด ๋ฐ˜๋ณต๋ฌธ ์“ธ ๋•Œ for i in range(1, 10+1): ์ด๋Ÿฐ ์‹์œผ๋กœ ์ž์ฃผ ์จ๋ณธ ๊ธฐ์–ต์ด ์žˆ๋Š”๋ฐ ๋” ๋งŽ์€ ์ƒํ™ฉ์— ์“ฐ์ผ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ ๊ฐ™๋‹ค.

 

enumerate(): ์—ด๊ฑฐํ•˜๋Š” ํ•จ์ˆ˜์ธ๋ฐ ์ธ๋ฑ์Šค๋ฅผ ์ž๋™์œผ๋กœ ๋ถ€์—ฌํ•ด์ค€๋‹ค

 

๋‚˜๋ˆ—์…ˆ ์—ฐ์‚ฐ์ž๊ฐ€ ํŒŒ์ด์ฌ์—์„  // ์ผ ๋• ์ •์ˆ˜ํ˜•์„ ์œ ์ง€ํ•˜๊ณ  / ์ผ ๋• ์‹ค์ˆ˜ํ˜•์„ ์œ ์ง€ํ•œ๋‹ค

 

print(): (์•…!!!! ์ด๊ฒŒ ์ ค ํ—ท๊ฐˆ๋ ค ์ž๊พธ ์•„๋ฌด ์ƒ๊ฐ ์—†์ด ์ถœ๋ ฅํ•˜๋ ค๊ณ  ํ•  ๋•Œ printf๋ฅผ ์จ๋ฒ„๋ คใ…œ)

 

pass: ๋„ ์—ฐ์‚ฐ, ์•„๋ฌด๊ฒƒ๋„ ํ•˜์ง€ ์•Š๋Š” ๊ธฐ๋Šฅ

 

๋ฆฌ์ŠคํŠธ ์ปดํ”„๋ฆฌํ—จ์…˜: ๋‚œ ์•„์ง ์ด ๊ธฐ๋Šฅ์„ ๋ชจ๋ฅด์ง€๋งŒ ๊ฐ€๋…์„ฑ์„ ์œ„ํ•ด ์ค„ ๋ฐ”๊ฟˆ์„ ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค

 


 

์˜ค๋Š˜ ์ฑ…์„ ์ฝ์œผ๋ฉฐ ๋Š๋‚€ ์ 

 

ํŒŒ์ด์ฌ๊ณผ C์–ธ์–ด๋Š” ์ •๋ง ๋‹ค๋ฅด๋‹ค,,,

 

ํŒŒ์ด์ฌ ํ•œ ํ•™๊ธฐ ๋™์•ˆ ๋ฐฐ์›Œ์„œ ๊ทธ๋ž˜๋„ ์–ด๋Š ์ •๋„ ์•„๋Š” ์ค„ ์•Œ์•˜๋Š”๋ฐ,,, ์ „ํ˜€??? ์ดˆ๋ฉด์ธ ๊ธฐ๋ถ„,,

 

์Šค๋„ค์ดํฌ ์ผ€์ด์Šค๋กœ ๋ณ€์ˆ˜๋ช… ์ •ํ•˜๊ธฐ (select_min, insert_node ์ด๋Ÿฐ ๋Š๋‚Œ??)

 

๋‚˜๋„ ๋งŽ์€ ์‚ฌ๋žŒ์ด ์‰ฝ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ์ข‹์€ ์ฝ”๋“œ๋ฅผ ์งœ๊ณ  ์‹ถ๋‹ค!

 

๋ณ€์ˆ˜๋ช… ์ด์˜๊ฒŒ ์˜๋ฏธ ๋ถ€์—ฌ + ๊ฐ„๋‹จํ•œ ์ฃผ์„

(๋งจ๋‚  a, b, c, i, j, cnt, CNT ๋งŒ ์“ฐ๋˜ ๋‚˜,,,, ์•ž์œผ๋ก  ์ ˆ๋Œ€ ์•ˆ ๊ทธ๋Ÿฐ๋‹ค)