๐Ÿ’ป Programming/Algorithm

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค Lv. 0] ๊ฐ€๊นŒ์šด 1 ์ฐพ๊ธฐ

Jiwon() 2023. 7. 28. 09:47

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํ’€์ด
์‚ฌ์šฉ ์–ธ์–ด - ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ JavaScript JS

1. ๊ฐ€๊นŒ์šด 1 ์ฐพ๊ธฐ

1) โ“ ๋ฌธ์ œ ์„ค๋ช…

์ •์ˆ˜ ๋ฐฐ์—ด arr๊ฐ€ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค. ์ด๋•Œ arr์˜ ์›์†Œ๋Š” 1 ๋˜๋Š” 0์ž…๋‹ˆ๋‹ค. ์ •์ˆ˜ idx๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, idx๋ณด๋‹ค ํฌ๋ฉด์„œ ๋ฐฐ์—ด์˜ ๊ฐ’์ด 1์ธ ๊ฐ€์žฅ ์ž‘์€ ์ธ๋ฑ์Šค๋ฅผ ์ฐพ์•„์„œ ๋ฐ˜ํ™˜ํ•˜๋Š” solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด ์ฃผ์„ธ์š”.

๋‹จ, ๋งŒ์•ฝ ๊ทธ๋Ÿฌํ•œ ์ธ๋ฑ์Šค๊ฐ€ ์—†๋‹ค๋ฉด -1์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

 

2) ๐Ÿšซ ์ œํ•œ ์‚ฌํ•ญ

  • 3 ≤ arr์˜ ๊ธธ์ด ≤ 100,000
    • arr์˜ ์›์†Œ๋Š” ์ „๋ถ€ 1 ๋˜๋Š” 0์ž…๋‹ˆ๋‹ค.

 

3) โ˜‘๏ธ ์ž…์ถœ๋ ฅ ์˜ˆ

arr idx result
[0, 0, 0, 1] 1 3
[1, 0, 0, 1, 0, 0] 4 -1
[1, 1, 1, 1, 0] 3 3

 

 


2. ์‚ฌ์šฉํ•œ ๋ฉ”์„œ๋“œ: for๋ฌธ

for๋ฌธ์œผ๋กœ ๋ฐฐ์—ด์˜ ๋ชจ๋“  ์š”์†Œ ์ˆœํšŒ

๋ฐฐ์—ด์˜ ๋ชจ๋“  ์š”์†Œ๋ฅผ ์ˆœํšŒํ•˜๋ฉฐ arr[i]๊ฐ€ 1์ด๋ฉด index๊ฐ’, ๊ทธ๋Ÿฌ๋‹ˆ๊นŒ i๋ฅผ returnํ•˜๊ณ  ๊ทธ๋Ÿฌํ•œ ์ธ๋ฑ์Šค๊ฐ€ ์—†๋‹ค๋ฉด -1์„ returnํ•˜๋„๋ก ํ’€์ด ์ž‘์„ฑ

 

 

 


3. ๋‹ต์•ˆ

1) ๋‚˜์˜ ํ’€์ด

const solution = (arr, idx) => {
    for (let i=idx; i<arr.length; i++) {
        if (arr[i] === 1) {return i}
    }
    return -1
}
  • ์•„๋ฌด๋ฆฌ ์ƒ๊ฐํ•ด๋„ for๋ฌธ ๋ฐ–์— ๋– ์˜ค๋ฅด์ง€ ์•Š์•„์„œ for๋ฌธ์œผ๋กœ ์ž‘์„ฑํ•œ ๋‹ต์•ˆ. ๋ฐฐ์—ด์˜ ๋ชจ๋“  ์š”์†Œ๋ฅผ ํ›‘๋Š”๋‹ค๊ณ  ํ•˜๋ฉด ์•„์ง for๋ฌธ๋ง๊ณ  ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•์„ ๋– ์˜ฌ๋ฆฌ์ง€ ๋ชปํ•˜๋Š” ๊ฒƒ ๊ฐ™์•„์„œ ๋‹ต๋‹ตํ–ˆ๋‹ค. ๐Ÿ˜ฅ
  • ๋‹ค๋ฅธ ์‚ฌ๋žŒ์˜ ํ’€์ด๋ฅผ ๋ณด๊ณ  ๋‹ค์–‘ํ•œ ๋ฉ”์„œ๋“œ์— ๋Œ€ํ•ด ๋” ๋„“๊ณ  ๊นŠ๊ฒŒ ์ดํ•ดํ•ด์•ผ ํ•  ํ•„์š”์„ฑ์„ ๋ผˆ์ €๋ฆฌ๊ฒŒx100 ๋Š๊ผˆ๋‹ค.

 

2) ๋‹ค๋ฅธ ์‚ฌ๋žŒ์˜ ํ’€์ด

(1) indexOf()๋ฅผ ์‚ฌ์šฉํ•œ ๋ฐฉ๋ฒ•

const solution=(a,i)=>a.indexOf(1,i);

์ด๋ ‡๊ฒŒ ๊ฐ„๋‹จํ•˜๊ฒŒ ํ’€ ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ์˜€๋‹ค๋‹ˆ.. ์•„์ง ๊ฐˆ ๊ธธ์ด ๋ฉ€๊ณ ๋„ ํ—˜ํ•˜๊ตฌ๋‚˜

Array.prototype.indexOf()

  • indexOf() ๋ฉ”์„œ๋“œ๋Š” ์ฃผ์–ด์ง„ ์š”์†Œ๋ฅผ ๋ฐฐ์—ด์—์„œ ์ฐพ์„ ์ˆ˜ ์žˆ๋Š” ์ฒซ ๋ฒˆ์งธ ์ธ๋ฑ์Šค๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋ฉฐ, ์ฐพ์ง€ ๋ชปํ•œ ๊ฒฝ์šฐ์—๋Š” -1๋ฅผ returnํ•œ๋‹ค.
    • ์œ„์˜ ํ’€์ด์—์„œ๋Š” `๋ฐฐ์—ด a`์—์„œ ๊ฐ’์ด 1์ธ ์š”์†Œ์˜ ์ธ๋ฑ์Šค๋ฅผ ์ฐพ์•„์„œ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
    • `๋งค๊ฐœ๋ณ€์ˆ˜ i`๋Š” indexOf() ๋ฉ”์„œ๋“œ์˜ ๋‘ ๋ฒˆ์งธ ์ธ์ž๋กœ, ๊ฒ€์ƒ‰์„ ์‹œ์ž‘ํ•  ์ธ๋ฑ์Šค๋ฅผ ์ง€์ •ํ•œ๋‹ค.
    • ์ฃผ์–ด์ง„ ์ธ๋ฑ์Šค i์—์„œ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜์—ฌ(๋”ฐ๋กœ i์— ๊ฐ’์„ ์ฃผ์ง€ ์•Š์€ ๊ฒฝ์šฐ 0๋ถ€ํ„ฐ ๊ฒ€์ƒ‰) ๋ฐฐ์—ด a์—์„œ ์ฒซ ๋ฒˆ์งธ๋กœ ๋ฐœ๊ฒฌ๋˜๋Š” ๊ฐ’์ด 1์ธ ์š”์†Œ์˜ ์ธ๋ฑ์Šค๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ , i ์ดํ›„์— 1์ด ์—†๋‹ค๋ฉด -1๋ฅผ ๋ฆฌํ„ด

 

(2) Array.prototype.findIndex()๋ฅผ ์‚ฌ์šฉํ•œ ๋ฐฉ๋ฒ•

function solution(arr, idx) {
	return arr.findIndex((v, i) => idx <= i && v === 1);
}
  • findIndex() ๋ฉ”์„œ๋“œ๋Š” ์ฃผ์–ด์ง„ ํŒ๋ณ„ ํ•จ์ˆ˜๋ฅผ ๋งŒ์กฑํ•˜๋Š” ๋ฐฐ์—ด์˜ ์ฒซ ๋ฒˆ์งธ ์š”์†Œ์— ๋Œ€ํ•œ ์ธ๋ฑ์Šค๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ๋งŒ์กฑํ•˜๋Š” ์š”์†Œ๊ฐ€ ์—†์œผ๋ฉด -1์„ ๋ฐ˜ํ™˜
    • v๋Š” ํ˜„์žฌ ์š”์†Œ์˜ ๊ฐ’, i๋Š” ์ธ๋ฑ์Šค๋ฅผ ์˜๋ฏธ
    • idx <= i && v === 1์€ ํ˜„์žฌ ์š”์†Œ์˜ ์ธ๋ฑ์Šค๊ฐ€ `idx` ์ด์ƒ์ด๊ณ , ๊ฐ’์ด 1์ธ ๊ฒฝ์šฐ์— true๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
    • ๋งŒ์กฑํ•˜๋Š” ๊ฐ’์ด ์—†์œผ๋ฉด -1๋ฅผ ๋ฆฌํ„ด