ย
ย
ํ์ด๋ณด๊ธฐ
์ ์๊ฐ์ด ์ฃผ์ด์ง๋ฉด ๊ทธ๊ฑธ ๋ง๋ค ์ ์๋ ์์ 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];
}
}
ย