Frontend ๊ฐœ๋ฐœ์ž - hyo.loui

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - ์ œ์ผ ์ž‘์€ ์ˆ˜ ์ œ๊ฑฐํ•˜๊ธฐ ๋ณธ๋ฌธ

Algorithm & Data Structure

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - ์ œ์ผ ์ž‘์€ ์ˆ˜ ์ œ๊ฑฐํ•˜๊ธฐ

hyo.loui 2023. 4. 24. 12:14

๐ŸŽฏ๋ชฉ์  :

Algorithm ๋ฌธ์ œํ’€์ด ๊ณผ์ •์„ ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค.
๋‚˜๋งŒ์˜ ํ•ด๊ฒฐ๋ฐฉ๋ฒ•์„ ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค.

1๏ธโƒฃ ๋ฌธ์ œ ๋งํฌ์™€ ๋ฌธ์ œ
2๏ธโƒฃ ํ’€์ด ์ „ ๊ณ„ํš๊ณผ ์ƒ๊ฐ (์ˆ˜๋„ ์ฝ”๋“œ)
3๏ธโƒฃ ํ’€์ด (์ฝ”๋“œ ๋ธ”๋ก ์ฒจ๋ถ€)
4๏ธโƒฃ ํ’€์ดํ•˜๋ฉด์„œ ๋ง‰ํ˜”๋˜ ์ ๊ณผ ๊ณ ๋ฏผ
5๏ธโƒฃ ํ’€์ด ํ›„ ์•Œ๊ฒŒ๋œ ๊ฐœ๋…๊ณผ ์†Œ๊ฐ

 


๋ฌธ์ œ ๋งํฌ

https://school.programmers.co.kr/learn/courses/30/lessons/12935

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr


๋ฌธ์ œ 

์ •์ˆ˜๋ฅผ ์ €์žฅํ•œ ๋ฐฐ์—ด, arr ์—์„œ ๊ฐ€์žฅ ์ž‘์€ ์ˆ˜๋ฅผ ์ œ๊ฑฐํ•œ ๋ฐฐ์—ด์„ ๋ฆฌํ„ดํ•˜๋Š” ํ•จ์ˆ˜,

solution์„ ์™„์„ฑํ•ด์ฃผ์„ธ์š”. ๋‹จ, ๋ฆฌํ„ดํ•˜๋ ค๋Š” ๋ฐฐ์—ด์ด ๋นˆ ๋ฐฐ์—ด์ธ ๊ฒฝ์šฐ์—” ๋ฐฐ์—ด์— -1์„

์ฑ„์›Œ ๋ฆฌํ„ดํ•˜์„ธ์š”. ์˜ˆ๋ฅผ๋“ค์–ด arr์ด [4,3,2,1]์ธ ๊ฒฝ์šฐ๋Š” [4,3,2]๋ฅผ ๋ฆฌํ„ด ํ•˜๊ณ , [10]๋ฉด

[-1]์„ ๋ฆฌํ„ด ํ•ฉ๋‹ˆ๋‹ค.

 

์ œํ•œ ์กฐ๊ฑด

- arr์€ ๊ธธ์ด 1 ์ด์ƒ์ธ ๋ฐฐ์—ด์ž…๋‹ˆ๋‹ค.

- ์ธ๋ฑ์Šค i, j์— ๋Œ€ํ•ด i !== j ์ด๋ฉด arr[i] !== arr[j] ์ž…๋‹ˆ๋‹ค.

 


ํ’€์ด ์ „ ๊ณ„ํš (์ˆ˜๋„ ์ฝ”๋“œ)

  • ์šฐ์„  ๋ฐฐ์—ด์„ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ ํ›„ pop() ๋ฉ”์„œ๋“œ๋กœ ๋งจ๋’ค์— ์žˆ๋Š” ๊ฐ€์žฅ ์ž‘์€ ์ˆ˜๋ฅผ ๋นผ๋ฉด ๊ฐ„๋‹จํ•  ๋“ฏ ํ•˜๋‹ค.
  • ์œ„ ๋ฐฉ๋ฒ•์ด ํ•ด๊ฒฐ๋˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ๋ฐฐ์—ด์„ ํƒ์ƒ‰ํ•˜๋ฉฐ ์ตœ์†Ÿ๊ฐ’์„ ์ฐพ์•„์•ผ ํ•œ๋‹ค.

ํ’€์ด

1. ์ •๋ ฌ sort() ๋ฉ”์„œ๋“œ ์‚ฌ์šฉํ•˜์—ฌ ํ’€์ด

์œ„์ฒ˜๋Ÿผ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋Š” ํ†ต๊ณผํ–ˆ์œผ๋‚˜,

๋ฌธ์ œ ์ œ์ถœ์—์„œ ์ „๋ถ€ ํ†ต๊ณผํ•˜์ง€ ๋ชปํ–ˆ๋‹ค.

 

์›์ธ์€ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋Š” ์ •๋ ฌ์ด ๋˜์–ด์žˆ๋Š” ์ผ€์ด์Šค์˜€์ง€๋งŒ..

์ •๋ ฌ์ด ์•„๋‹Œ ์ผ€์ด์Šค๋Š” ์ˆœ์„œ๊ฐ€ ๋ฐ”๋€Œ๋Š” ๊ฒƒ ์ด๊ธฐ ๋•Œ๋ฌธ์—

์ •๋ ฌ์„ ํ•˜๋ฉด ์•ˆ๋๋‹ค...

 

 

 

2.

 


ํ’€์ดํ•˜๋ฉฐ ๋ง‰ํ˜”๋˜ ์ ๊ณผ ๊ณ ๋ฏผ 

 

Max.min์œผ๋กœ ์†์‰ฝ๊ฒŒ ์ตœ์†Ÿ๊ฐ’์„ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค.

ํ•˜์ง€๋งŒ ๋ฐฐ์—ด์ด ๋“ค์–ด๊ฐ€๋‹ˆ ์—๋Ÿฌ๊ฐ€ ๋‚ฌ๊ณ ,

 

ํ•˜๋‚˜์”ฉ ๋„ฃ๊ณ ์ž for๋ฌธ์„ ์‚ฌ์šฉํ–ˆ์ง€๋งŒ NaN์ด ๋‚˜์™”๋‹ค...

๋ถ„๋ช… ์†์‰ฝ๊ฒŒ ํ‘ธ๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์„ ๊ฒƒ ์ด๋ผ๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค.


ํ’€์ด ํ›„ ์•Œ๊ฒŒ๋œ ๊ฐœ๋…๊ณผ ์†Œ๊ฐ

 

๋‚ด๊ฐ€ ์ƒ๊ฐํ–ˆ๋˜ ๋ฐฉ๋ฒ•์ด๋‹ค.

Math.min ์„ ์‚ฌ์šฉํ•  ๋•Œ ์ธ์ˆ˜๋กœ ํ•ญ์ƒ ์ˆซ์ž๊ฐ€ ๋“ค์–ด๊ฐ€์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— 

spread์—ฐ์‚ฐ์ž(...arr) ๋กœ ๋ฐฐ์—ด์„ ๊นจ์„œ 1,2,3,4 ๋กœ ๋“ค์–ด๊ฐ€์•ผํ•œ๋‹ค...

 

์กฐ๊ธˆ๋งŒ ๋” ์ƒ๊ฐํ•ด๋ณด๋ฉด ์ข‹์•˜์„ ํ…๋ฐ. ์•„์‰ฌ์› ๋‹ค.

๊ทธ๋ฆฌ๊ณ  return์„ ์‚ผํ•ญ์—ฐ์‚ฐ์ž๋ฅผ ํ™œ์šฉ ํ–ˆ๋Š”๋ฐ ์กฐ๊ธˆ ๊ฐ€๋…์„ฑ์ด ๋–จ์–ด์ ธ ๋ณด์ธ๋‹ค.

 

ํ•˜์ง€๋งŒ filter๋กœ min์„ ๊ฑธ๋Ÿฌ๋‚ธ ๊ฒƒ๋„ ์ข‹์€ ์•„์ด๋””์–ด์˜€๋‹ค.


 

 ์ตœ์ข… ์ •๋ฆฌ 

  1. Math.min( ) ์˜ ์ธ์ž๋กœ๋Š” ๋ฐฐ์—ด์ด ๋“ค์–ด๊ฐˆ ์ˆ˜ ์—†๊ณ  ๋ฐฐ์—ด์ด๋ผ๋ฉด ์ „๊ฐœ์—ฐ์‚ฐ์ž(spread)๋กœ ๋„ฃ์–ด์ฃผ๋ฉด ํ™œ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค.
  2. return๋ฌธ์— ์‚ผํ•ญ์—ฐ์‚ฐ์ž๋ฅผ ๊ธธ๊ฒŒ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ๊ฐ€๋…์„ฑ์„ ํ•ด์นœ๋‹ค.
  3. ๋‹ค๋ฅธ์‚ฌ๋žŒ์˜ ํ’€์ด๋ฅผ ํ•ญ์ƒ ๋ณด๋ฉด์„œ ๋” ์ข‹์€ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ํžŒํŠธ๋ฅผ ์–ป๊ณ  ๋‚ด ์ฝ”๋“œ์™€ ๋น„๊ตํ•ด ๋ณด์ž