๐Ÿ“‚ ํ”„๋กœ๊ทธ๋ž˜๋ฐ/Python

ํŒŒ์ด์ฌPython | ๋ฆฌ์ŠคํŠธ(list) ์ค‘๋ณต ์ œ๊ฑฐ

์˜ˆ์ง„-D 2021. 9. 18. 00:03

 

์ตœ๊ทผ ๋ฐฑ์ค€(https://www.acmicpc.net/)์—์„œ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ณต๋ถ€๋ฅผ ํ•˜๊ณ  ์žˆ๋Š”๋ฐ, ์–ธ์–ด๋ฅผ ํŒŒ์ด์ฌ์œผ๋กœ ์ •ํ•˜๋Š” ๋ฐ”๋žŒ์— ๋ชจ๋ฅด๋Š” ๋ถ€๋ถ„์ด ๋งŽ์•„ ๋งค์šฐ ํ—ค๋งค๊ณ  ์žˆ๋Š” ์ค‘์ž…๋‹ˆ๋‹ค..๐Ÿฅฒ ๋ฉฐ์น  ์ „ ๋ฆฌ์ŠคํŠธ์˜ ์ค‘๋ณต ์ œ๊ฑฐ ๋ฌธ์ œ๋ฅผ ๋ดค๋Š”๋ฐ, ๊ธฐ์กดํ•˜๋˜ ๋Œ€๋กœ ๋‹น์—ฐํžˆ for ๋ฐ˜๋ณต๋ฌธ์„ ์ด์šฉํ•ด ์š”์†Œ๋ฅผ ์ˆœํšŒํ•˜๋ ค ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ •๋ง ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ๊ต‰์žฅํžˆ ์‹ ๊ธฐํ–ˆ์Šต๋‹ˆ๋‹ค.

 

 

 


์ง‘ํ•ฉ ์ž๋ฃŒํ˜• SET() ์ด์šฉํ•˜๊ธฐ

์ง‘ํ•ฉ ์ž๋ฃŒํ˜•์˜ ํŠน์ง• ์ค‘ ํ•˜๋‚˜๊ฐ€ ์ค‘๋ณต์ด ์—†๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค. ์ด ํŠน์ง•์„ ์ด์šฉํ•˜๋ฉด ์‰ฝ๊ฒŒ ์ค‘๋ณต์ด ์—†๋Š” set ํƒ€์ž…์œผ๋กœ ๋ณ€๊ฒฝ๋ฉ๋‹ˆ๋‹ค. ์ œ๊ฐ€ ๋ณธ ๋ฌธ์ œ์ฒ˜๋Ÿผ ์ค‘๋ณต์ด ์•ˆ๋œ ์ˆ˜์˜ ๊ฐœ์ˆ˜๋ฅผ ์•Œ๊ณ  ์‹ถ๋‹ค๋ฉด ์—ฌ๊ธฐ์„œ len() ํ•จ์ˆ˜๋งŒ ์ด์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

๋ฆฌ์ŠคํŠธ(list)์—์„œ ์ง‘ํ•ฉ(set)์œผ๋กœ

๊ทธ๋Ÿฌ๋‚˜ ๋งŒ์•ฝ ๊ธฐ์กด ์ˆœ์„œ๋ฅผ ์œ ์ง€ํ•œ ์ฑ„ ์ค‘๋ณต ์ œ๊ฑฐ๋ฅผ ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ์ˆœ์„œ๊ฐ€ ๋ฌด์ž‘์œ„๋กœ ๋ฐ”๋€Œ๋Š” SET์„ ์‚ฌ์šฉํ•˜๋ฉด ์•ˆ๋ฉ๋‹ˆ๋‹ค

 

 

 


๋”•์…”๋„ˆ๋ฆฌ(Dictionary) ์ด์šฉํ•˜๊ธฐ

ํŒŒ์ด์ฌ์—๋Š” ๋”•์…”๋„ˆ๋ฆฌ๋ผ๋Š” ๋Œ€์‘ ๊ด€๊ณ„ ์ž๋ฃŒํ˜•์ด ์žˆ์Šต๋‹ˆ๋‹ค. ํ”ํžˆ ๋‹ค๋ฅธ ์–ธ์–ด์—์„œ๋„ ๋ณผ ์ˆ˜ ์žˆ๋Š” Key-Value ํ˜•์‹์ด๋ฉฐ ํ•ด์‹œ(Hash)๋„ ์ด๋Ÿฌํ•œ ๋Œ€์‘ ๊ด€๊ณ„๋ฅผ ๋‚˜ํƒ€๋‚ด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. 

์ด ๋”•์…”๋„ˆ๋ฆฌ๋Š” ์œ„์—์„œ ๋ณธ SET()๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ Key๊ฐ€ ์ค‘๋ณต์ด ์—†๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค. ๋‹น์—ฐํ•˜๊ฒŒ๋„ ์ค‘๋ณต๋˜๋Š” Key๊ฐ’์ด ์žˆ๋‹ค๋ฉด, ๊ทธ์— ํ•ด๋‹นํ•˜๋Š” Value ์ค‘ ์–ด๋Š ๊ฒƒ์„ ๊ฐ€์ ธ์™€์•ผ ํ• ์ง€ ํ˜ผ๋ž€์ด ์ƒ๊ธฐ๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค. ์ด ํŠน์ง•์„ ์ด์šฉํ•˜๋ฉด ๊ธฐ์กด ๋ฆฌ์ŠคํŠธ์˜ ์ˆœ์„œ๋ฅผ ์œ ์ง€ํ•˜๋ฉฐ ์ค‘๋ณต์„ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฆฌ์ŠคํŠธ-๋”•์…”๋„ˆ๋ฆฌ-๋ฆฌ์ŠคํŠธ ๋ณ€ํ™˜

์ฒ˜์Œ ์ค‘๋ณต๋œ ์ˆ˜๊ฐ€ ๋“ค์–ด์žˆ๋Š” ๋ฆฌ์ŠคํŠธ arr๋ฅผ ๋งŒ๋“ค์–ด์ฃผ๊ณ , type์ด list์ž„์„ ํ™•์ธํ•ด๋ดค์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ dict.fromkeys()๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋”•์…”๋„ˆ๋ฆฌ๋กœ ๋ณ€ํ™˜ํ–ˆ๋Š”๋ฐ,  ๋‘ ๋ฒˆ์งธ ์ธ์ž๋กœ Value๋ฅผ ์ค„ ์ˆ˜ ์žˆ์ง€๋งŒ ์•„๋ฌด๊ฒƒ๋„ ์“ฐ์ง€ ์•Š์œผ๋ฉด Value๋Š” None์ด ๋ฉ๋‹ˆ๋‹ค. ๋”•์…”๋„ˆ๋ฆฌ๋กœ ๋ณ€ํ™˜๋œ arr๋ฅผ ํ™•์ธํ•ด๋ณด๋‹ˆ ์ค‘๋ณต๋œ ์ˆ˜๊ฐ€ ์‚ฌ๋ผ์ง„ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ๋‹ค์‹œ list()๋กœ ๋ฆฌ์ŠคํŠธ ๋ณ€ํ™˜์„ ํ•ด์ฃผ๋ฉด ๊ธฐ์กด ์ˆœ์„œ๋Š” ์œ ์ง€ํ•˜๋ฉฐ ์ค‘๋ณต๋œ ์ˆ˜๋งŒ ์‚ฌ๋ผ์ง€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

 

 

 


for ๋ฐ˜๋ณต๋ฌธ ์‚ฌ์šฉํ•˜๊ธฐ

ํŒŒ์ด์ฌ์—๋Š” not in ์ด๋ผ๋Š” ์ข‹์€ ๊ธฐ๋Šฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ์กด ๋ฆฌ์ŠคํŠธ์ธ arr๊ณผ ์ƒˆ๋กœ ์ค‘๋ณต ์—†๋Š” ๊ฐ’์„ ์ €์žฅํ•  temp๋ฅผ ๋งŒ๋“ค์–ด์ฃผ๊ณ , for๋ฌธ๊ณผ if๋ฌธ์„ ํ†ตํ•ด temp์— ๊ฐ’์„ ์ถ”๊ฐ€ํ•ด์ค๋‹ˆ๋‹ค. ์ด ๋ฐฉ๋ฒ•์œผ๋กœ ํ•  ๊ฒฝ์šฐ ์‹œ๊ฐ„ ๋ณต์žก๋„๊ฐ€ O(N)์œผ๋กœ 

not in ์‚ฌ์šฉํ•ด๋ณด๊ธฐ

if๋ฌธ์—์„œ not in์„ ์‚ฌ์šฉํ•˜๋ฉด ํ˜„์žฌ i ๊ฐ’์ด temp์— ์—†์„ ๊ฒฝ์šฐ๋งŒ append๋ฉ๋‹ˆ๋‹ค. ์ฐธ๊ณ ๋กœ ๊ถ๊ธˆํ•ด์„œ ์ฐพ์•„๋ณธ list์˜ append์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” O(1)์˜€์Šต๋‹ˆ๋‹ค.

 

 

 


๋ฒˆ์™ธ

์•„๋ž˜ ์ฝ”๋“œ๋Š” ๋งจ ์ฒ˜์Œ ์–ธ๊ธ‰ํ•œ ์ œ๊ฐ€ ํ•œ for๋ฌธ์ž…๋‹ˆ๋‹ค.. ์ผ๋‹จ ๊ณต๋ถ€์—†์ด ๋ถ€๋”ชํ˜€๋ณด์ž!๋ผ๋Š” ๊ฐ๊ธฐ๋กœ ๊ธฐ๋ณธ์ ์ธ ๋ฌธ๋ฒ• ๊ณต๋ถ€๋„ ์•ˆํ–ˆ๋”๋‹ˆ not in์˜ ์กด์žฌ์กฐ์ฐจ ๋ชฐ๋ž์Šต๋‹ˆ๋‹ค.๐Ÿ˜‚ ์ค‘์ฒฉ for๋ฌธ์„ ์‚ฌ์šฉํ•ด ์ž„์‹œ ๋ฆฌ์ŠคํŠธ temp์— ์—†๋Š” ์ˆซ์ž๋งŒ append๋กœ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ–ˆ์Šต๋‹ˆ๋‹ค.. ๊ฒฐ๊ณผ๋Š” ์–ด๋–ป๊ฒŒ ์ž˜ ๋‚˜์™”์ง€๋งŒ ์œ„์˜ not in์„ ์‚ฌ์šฉํ•œ for ์‚ฌ์šฉ๋ฒ•๊ณผ ๋‹ฌ๋ฆฌ, ์ด ๋ฐฉ๋ฒ•์€ ์‹œ๊ฐ„ ๋ณต์žก๋„๊ฐ€ O(n²)๋ผ์„œ ์›ฌ๋งŒํ•˜๋ฉด ์ง‘ํ•ฉ์ด๋‚˜ ๋”•์…”๋„ˆ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ ค ํ•ฉ๋‹ˆ๋‹ค.