๐Ÿ’Ž

ARR PS - two sum

notion image
ย 
notion image
ย 

ํ’€์–ด๋ณด๊ธฐ

์ •์ˆ˜๊ฐ’์ด ์ฃผ์–ด์ง€๋ฉด ๊ทธ๊ฑธ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ์›์†Œ 2๊ฐœ๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์ฐพ์•„๋‚ด์•ผํ•œ๋‹ค.
์‰ฝ๊ฒŒ ์ฐพ์•„๋‚ด๋ ค๋ฉด for๋ฌธ์—์„œ ๋ฐฐ์—ด์˜ ์›์†Œ๋ฅผ ํ•˜๋‚˜์”ฉ ๊บผ๋‚ด์„œ ์ •์ˆ˜๊ฐ’์—์„œ ๋นผ๊ณ  ๋ฐฐ์—ด.indexOf(๋บ€ ๊ฐ’)์œผ๋กœ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๋งŒ์•ฝ ์—†๋‹ค๋ฉด ๊ทธ๋ƒฅ ๋‹ค์Œ ๋ฐ˜๋ณต์œผ๋กœ ๋„˜๊ธฐ๋ฉด ๋˜๊ณ  includes์˜ ์ธ๋ฑ์Šค๊ฐ€ ๋ฐ˜ํ™˜๋œ๋‹ค๋ฉด ์ง€๊ธˆ for๋ฌธ์˜ ์ธ๋ฑ์Šค ๊ฐ’๊ณผ indexOf์˜ ์ธ๋ฑ์Šค ๊ฐ’์„ ๋ฐฐ์—ด์— ๋‹ด์•„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
ย 
two sum์ด๋ผ 2๊ฐœ๋งŒ ํ•„์š”ํ•œ๋ฐ indexOf ๋ฉ”์„œ๋“œ๋Š” ํ•ญ์ƒ ๋ฐฐ์—ด์˜ ๋งจ ์•ž์—์„œ๋ถ€ํ„ฐ ํƒ์ƒ‰ํ•ด์„œ ์ธ๋ฑ์Šค๋ฅผ ๋ฐ˜ํ™˜ํ•ด์„œ [3,3]๊ฐ™์€ ๊ฒฝ์šฐ [0,0]์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ๋‹ค. lastIndexOf()๋ผ๋Š” ๋ฉ”์„œ๋“œ๊ฐ€ ์žˆ์–ด์„œ ์ด๊ฑธ ์‚ฌ์šฉํ•ด์„œ ํ˜„์žฌ for๋ฌธ์˜ ์ธ๋ฑ์Šค์™€ ๊ฐ™๋‹ค๋ฉด lastIndexOf๋กœ ๋‹ค๋ฅธ ๊ณณ์— ์œ„์น˜ํ•œ ๊ฐ’์˜ ์ธ๋ฑ์Šค๋ฅผ ๋ฐ˜ํ™˜ํ•ด์˜ค๊ฒŒ ๋งŒ๋“ค์—ˆ๋‹ค.
ํ•˜์ง€๋งŒ ์—ฌ๊ธฐ์„œ๋„ ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š”๋ฐ, ๋งŒ์•ฝ target์ด 6์ผ ๋•Œ 3์„ ๋งŒ๋‚˜๋ฉด ๊ทธ ๋บ€ ๊ฐ’์ด 3์ด๋˜๊ณ  3์„ lastIndexOf๋กœ ์ฐพ์•„๋‚ด๋„ 3์ด ํ•˜๋‚˜๋ฐ–์— ์—†๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค. (TC 2)
์ด ๊ฒฝ์šฐ ๊ฑธ๋Ÿฌ๋‚ด๊ธฐ ์œ„ํ•ด์„œ lastIndexOf()์˜ ์ธ๋ฑ์Šค๊ฐ’์ด i์™€ ๊ฐ™์„ ๋•Œ๋Š” ํ•ด๋‹น ๊ฐ’์ด ํ•œ๊ฐœ๋งŒ ์กด์žฌํ•˜๋Š” ๊ฒƒ์ด๋ฏ€๋กœ ์—†๋Š” ๊ฒƒ์œผ๋กœ ํŒ๋‹จํ•˜๋„๋ก -1์„ ๋ฐ˜ํ™˜์‹œ์ผฐ๋‹ค.
ย 
function answer(nums, target) {
    for (let i = 0; i < nums.length; i++) {
        let t = target - nums[i];
        let idx =
            nums.indexOf(t) === i
                ? nums.lastIndexOf(t) === i
                    ? -1
                    : nums.lastIndexOf(t)
                : nums.indexOf(t);
        if (idx !== -1) return [i, idx];
    }
}
ย