์๊ณ ์คํ ๐ฃ๐ฃ๐ฃ
์ฝ๋ฉํ๊ธฐ ์ ์ ํฌ๋กค๋งํ์๊ฒ ์ต๋๊น?
์ฐ๋ฆฌ๋ ์ธ์์ ์ด๋ ์์ ์์ "๊ฑท๊ธฐ ์ ์ ๊ธฐ์ด๊ฐ์ผ ํ๋ค"๋ ๋ง์ ๋ค์ด๋ณธ ์ ์ด ์์ ๊ฒ์
๋๋ค.
ํ์ต ์๊ณ ๋ฆฌ์ฆ์ ๊ฒฝ์ฐ ๊ฑฐ์ ๊ฑท๊ธฐ์์ ๋ฌ๋ฆฌ๊ธฐ๋ก ๋ฐ๋๋ ๊ฒ์ฒ๋ผ ๋ณด์
๋๋ค. ๐ค๐ค๐ค
1) ํฌ๋กค๋งํ ๋ ์ฝ๋ฉ์ ๊ธฐ๋ณธ์ ๋ฐฐ์ฐ๊ธฐ ์์ํฉ๋๋ค. ๋ณ์, ํจ์, ๋ฐ์ดํฐ ์ ํ ๋ฑ
2) ์ฐ๋ฆฌ๋ ํ๋ก์ ํธ๋ฅผ ๊ตฌ์ถํ๊ฑฐ๋ ๊ธฐ๋ณธ์ ์ธ ๋ฌธ์ ํด๊ฒฐ์ ์์ํจ์ผ๋ก์จ ๊ทธ๊ฒ๋ค์ ํ๋๋ก ๋ชจ์ผ๋ ๋ฒ์ ๋ฐฐ์ธ ๋ ๊ฑท๊ธฐ ์์ํฉ๋๋ค.
3) ์ง๊ธ ๋ด ๊ฒฝ์ฐ. ๊ฐ๋ฒผ์ด ์กฐ๊น
์ ๋์ ๋ฌ๋ฆฌ๊ธฐ๋ฅผ ์์ํ ๊ฒ ๊ฐ์ต๋๋ค. ์๊ณ ๋ฆฌ์ฆ๊ณผ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฌธ์ ํด๊ฒฐ์ ์ดํดํ๋ ๋ฐ ๋ ๊น์ด ๋ค์ด๊ฐ๊ธฐ ์์ํฉ๋๋ค.
ํจ๊ป ์กฐ๊น
ํ์
๋ฌธ์ ๋ฅผ ์ดํด๋ณด๊ณ ๋จ๊ณ๋ณ๋ก ์ดํด๋ณด๊ฒ ์ต๋๋ค.
1๋จ๊ณ - ๋ฌธ์ ์ดํด
๋ฐฐ์ด์ด ์ฃผ์ด์ง๋ฉด ๋ฐ์ํ๋ ์ฒซ ๋ฒ์งธ ์ค๋ณต ๊ฐ์ ์ฐพ์ต๋๋ค. ์ค๋ณต์ด ์์ผ๋ฉด -1์ ๋ฐํํฉ๋๋ค.
์ด๊ฒ์ ์ดํดํ๊ธฐ ๋งค์ฐ ๊ฐ๋จํด ๋ณด์ด์ง๋ง ์ด๊ฒ์ ๊ฐํํ๊ธฐ ์ํด ์์ ์ ๋ง๋ก ์ง๋ฌธ์ ๋ค์ ์์ฑํ์ญ์์ค.
์ฃผ์ด์ง ๋ฐฐ์ด์ ๊ฐ์ง๊ณ ์ฒซ ๋ฒ์งธ๋ก ์ผ์นํ๋ ์์ ์ฐพ์ผ์ญ์์ค. ์ผ์นํ๋ ํญ๋ชฉ์ด ์์ผ๋ฉด -1์ ๋ฐํํฉ๋๋ค.
์ด๋ ์ด: [1, 5, 3, 10, 2, 5]
2๋จ๊ณ - ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์ ๋ํ ๊ฒฝ๋ก ๋๋ ์๋ฃจ์
์ ์ ์ฌ ์ฝ๋ฉํฉ๋๋ค.
์์ฌ ์ฝ๋๋ ์ผ๋ฐ ํ
์คํธ ์ฝ๋์ ๋จ๊ณ๋ณ ๊ฐ์์
๋๋ค.
1) ๋ฐฐ์ด์ ํตํด ๋ฐ๋ณต
2) ์ฒซ ๋ฒ์งธ ์ธ๋ฑ์ค์ ๊ฐ์ ํ์ธํ๊ณ ๋ฐฐ์ด์ ๋๋จธ์ง ๋ถ๋ถ๊ณผ ์ผ์นํ๋์ง ๋น๊ตํฉ๋๋ค.
3) ์ผ์นํ๋ ํญ๋ชฉ์ด ์์ผ๋ฉด ํด๋น ํญ๋ชฉ์ ์ถ๋ ฅํฉ๋๋ค.
4) ์ผ์นํ๋ ํญ๋ชฉ์ด ์์ผ๋ฉด ๋ค์ ์ธ๋ฑ์ค๋ก ์ด๋ํ์ฌ ๋๋จธ์ง ๋ฐฐ์ด๊ณผ ๋น๊ตํฉ๋๋ค.
5) ๋ฐฐ์ด์ ๋ชจ๋ ๊ฐ์ด ํ์ธ๋ ๋๊น์ง ๊ณ์ ์งํํฉ๋๋ค.
์ผ์นํ์ง ์๋ ๊ฒฝ์ฐ -1์ ๋ฐํํฉ๋๋ค.
3๋จ๊ณ - ์ฝ๋
๋ฌธ์ ์ ๋ํ ์๋ฃจ์
์ ์ฝ๋๋ก ์์ฑํ๊ณ ํ์ํ ๊ฒฝ์ฐ ์ํ๋ ๊ฒฐ๊ณผ๋ฅผ ์ป๊ณ ์๋์ง ํ์ธํ๊ธฐ ์ํด ์์ ์ ํ
์คํธ๋ฅผ ์์ฑํ๋ ๊ฒ์ ๋๋ ค์ํ์ง ๋ง์ญ์์ค.
function findFirstDuplicate(arr) {
let elementSet = new Set()
for (let i = 0; i < arr.length; i++) {
if (elementSet.has(arr[i])) return arr[i];
elementSet.add(arr[i]);
}
return -1
}
๋ชจ๋ ๊ฒ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ์ผ์ ์ํํ๋ ๋ฐฉ๋ฒ์ ์ฌ๋ฌ ๊ฐ์ง๊ฐ ์์ง๋ง ์์ํ๋ฉด์ ์ํํ๊ธฐ ์์ํ ๋จ๊ณ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๋์์ด ๋์
จ๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
ํ๋ณตํ ์ฝ๋ฉ ๐จ๐ฟโ๐ป๐จ๐ปโ๐ป๐ง๐พโ๐ป๐ฉโ๐ป
Reference
์ด ๋ฌธ์ ์ ๊ดํ์ฌ(์๊ณ ์คํ
๐ฃ๐ฃ๐ฃ), ์ฐ๋ฆฌ๋ ์ด๊ณณ์์ ๋ ๋ง์ ์๋ฃ๋ฅผ ๋ฐ๊ฒฌํ๊ณ ๋งํฌ๋ฅผ ํด๋ฆญํ์ฌ ๋ณด์๋ค
https://dev.to/codejones/algo-step-4l4h
ํ
์คํธ๋ฅผ ์์ ๋กญ๊ฒ ๊ณต์ ํ๊ฑฐ๋ ๋ณต์ฌํ ์ ์์ต๋๋ค.ํ์ง๋ง ์ด ๋ฌธ์์ URL์ ์ฐธ์กฐ URL๋ก ๋จ๊ฒจ ๋์ญ์์ค.
์ฐ์ํ ๊ฐ๋ฐ์ ์ฝํ
์ธ ๋ฐ๊ฒฌ์ ์ ๋
(Collection and Share based on the CC Protocol.)
๋ฌธ์ ๋ฅผ ์ดํด๋ณด๊ณ ๋จ๊ณ๋ณ๋ก ์ดํด๋ณด๊ฒ ์ต๋๋ค.
1๋จ๊ณ - ๋ฌธ์ ์ดํด
๋ฐฐ์ด์ด ์ฃผ์ด์ง๋ฉด ๋ฐ์ํ๋ ์ฒซ ๋ฒ์งธ ์ค๋ณต ๊ฐ์ ์ฐพ์ต๋๋ค. ์ค๋ณต์ด ์์ผ๋ฉด -1์ ๋ฐํํฉ๋๋ค.
์ด๊ฒ์ ์ดํดํ๊ธฐ ๋งค์ฐ ๊ฐ๋จํด ๋ณด์ด์ง๋ง ์ด๊ฒ์ ๊ฐํํ๊ธฐ ์ํด ์์ ์ ๋ง๋ก ์ง๋ฌธ์ ๋ค์ ์์ฑํ์ญ์์ค.
์ฃผ์ด์ง ๋ฐฐ์ด์ ๊ฐ์ง๊ณ ์ฒซ ๋ฒ์งธ๋ก ์ผ์นํ๋ ์์ ์ฐพ์ผ์ญ์์ค. ์ผ์นํ๋ ํญ๋ชฉ์ด ์์ผ๋ฉด -1์ ๋ฐํํฉ๋๋ค.
์ด๋ ์ด:
[1, 5, 3, 10, 2, 5]
2๋จ๊ณ - ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์ ๋ํ ๊ฒฝ๋ก ๋๋ ์๋ฃจ์ ์ ์ ์ฌ ์ฝ๋ฉํฉ๋๋ค.
์์ฌ ์ฝ๋๋ ์ผ๋ฐ ํ ์คํธ ์ฝ๋์ ๋จ๊ณ๋ณ ๊ฐ์์ ๋๋ค.
1) ๋ฐฐ์ด์ ํตํด ๋ฐ๋ณต
2) ์ฒซ ๋ฒ์งธ ์ธ๋ฑ์ค์ ๊ฐ์ ํ์ธํ๊ณ ๋ฐฐ์ด์ ๋๋จธ์ง ๋ถ๋ถ๊ณผ ์ผ์นํ๋์ง ๋น๊ตํฉ๋๋ค.
3) ์ผ์นํ๋ ํญ๋ชฉ์ด ์์ผ๋ฉด ํด๋น ํญ๋ชฉ์ ์ถ๋ ฅํฉ๋๋ค.
4) ์ผ์นํ๋ ํญ๋ชฉ์ด ์์ผ๋ฉด ๋ค์ ์ธ๋ฑ์ค๋ก ์ด๋ํ์ฌ ๋๋จธ์ง ๋ฐฐ์ด๊ณผ ๋น๊ตํฉ๋๋ค.
5) ๋ฐฐ์ด์ ๋ชจ๋ ๊ฐ์ด ํ์ธ๋ ๋๊น์ง ๊ณ์ ์งํํฉ๋๋ค.
์ผ์นํ์ง ์๋ ๊ฒฝ์ฐ -1์ ๋ฐํํฉ๋๋ค.
3๋จ๊ณ - ์ฝ๋
๋ฌธ์ ์ ๋ํ ์๋ฃจ์ ์ ์ฝ๋๋ก ์์ฑํ๊ณ ํ์ํ ๊ฒฝ์ฐ ์ํ๋ ๊ฒฐ๊ณผ๋ฅผ ์ป๊ณ ์๋์ง ํ์ธํ๊ธฐ ์ํด ์์ ์ ํ ์คํธ๋ฅผ ์์ฑํ๋ ๊ฒ์ ๋๋ ค์ํ์ง ๋ง์ญ์์ค.
function findFirstDuplicate(arr) {
let elementSet = new Set()
for (let i = 0; i < arr.length; i++) {
if (elementSet.has(arr[i])) return arr[i];
elementSet.add(arr[i]);
}
return -1
}
๋ชจ๋ ๊ฒ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ์ผ์ ์ํํ๋ ๋ฐฉ๋ฒ์ ์ฌ๋ฌ ๊ฐ์ง๊ฐ ์์ง๋ง ์์ํ๋ฉด์ ์ํํ๊ธฐ ์์ํ ๋จ๊ณ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๋์์ด ๋์ จ๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
ํ๋ณตํ ์ฝ๋ฉ ๐จ๐ฟโ๐ป๐จ๐ปโ๐ป๐ง๐พโ๐ป๐ฉโ๐ป
Reference
์ด ๋ฌธ์ ์ ๊ดํ์ฌ(์๊ณ ์คํ ๐ฃ๐ฃ๐ฃ), ์ฐ๋ฆฌ๋ ์ด๊ณณ์์ ๋ ๋ง์ ์๋ฃ๋ฅผ ๋ฐ๊ฒฌํ๊ณ ๋งํฌ๋ฅผ ํด๋ฆญํ์ฌ ๋ณด์๋ค https://dev.to/codejones/algo-step-4l4hํ ์คํธ๋ฅผ ์์ ๋กญ๊ฒ ๊ณต์ ํ๊ฑฐ๋ ๋ณต์ฌํ ์ ์์ต๋๋ค.ํ์ง๋ง ์ด ๋ฌธ์์ URL์ ์ฐธ์กฐ URL๋ก ๋จ๊ฒจ ๋์ญ์์ค.
์ฐ์ํ ๊ฐ๋ฐ์ ์ฝํ ์ธ ๋ฐ๊ฒฌ์ ์ ๋ (Collection and Share based on the CC Protocol.)
์ข์ ์นํ์ด์ง ์ฆ๊ฒจ์ฐพ๊ธฐ
๊ฐ๋ฐ์ ์ฐ์ ์ฌ์ดํธ ์์ง
๊ฐ๋ฐ์๊ฐ ์์์ผ ํ ํ์ ์ฌ์ดํธ 100์ ์ถ์ฒ ์ฐ๋ฆฌ๋ ๋น์ ์ ์ํด 100๊ฐ์ ์์ฃผ ์ฌ์ฉํ๋ ๊ฐ๋ฐ์ ํ์ต ์ฌ์ดํธ๋ฅผ ์ ๋ฆฌํ์ต๋๋ค