๐ ์ฝ๋ฉํ
์คํธ
ํ๋ก๊ทธ๋๋จธ์ค Lv0 ์ต๋น๊ฐ ๊ตฌํ๊ธฐ
rigood
2023. 1. 22. 15:07
[์ถ์ฒ] ํ๋ก๊ทธ๋๋จธ์ค https://school.programmers.co.kr/learn/courses/30/lessons/120812?language=javascript
function solution(array) {
// 1. ๋ฐฐ์ด์ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํ๋ค.
// 2. ์์์๋ถํฐ ์ฐจ๋ก๋๋ก ์์๋ฅผ ํ์ธํ๋ฉฐ ๊ฐ์๋ฅผ ์ผ๋ค.
// 3. ์ต๋น๊ฐ์ ๊ทธ๋๊ทธ๋ ๊ธฐ๋กํ๋ค.
// 4. ์ต๋น๊ฐ์ return ํ๋ค. (์ฌ๋ฌ๊ฐ์ด๋ฉด -1์ returnํ๋ค.)
// 1. ๋ฐฐ์ด ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌ
let sortedArray = array.sort((a,b)=>a-b);
// 2. ์ฐจ๋ก๋๋ก ์์ ๊ฐ์ ์ธ๊ธฐ
let cnt = 0;
let beforeNum = -1; // ํ์ฌ ์ซ์ ์ด์ ์ซ์
let repeatCnt = 0; // ํ์ฌ ๋๊ฐ์ ์ซ์๊ฐ ๋ช๋ฒ ๋ฑ์ฅํ๋์ง
let modeRepeatCnt = 0; // ์ต๋น๊ฐ์ด ๋ช๋ฒ ๋ฐ๋ณตํด์ ๋๊ฑด์ง
let mode = -1; // ์ต๋น๊ฐ
let isModeDuplicate = false; // ์ต๋น๊ฐ ์ค๋ณต ์ฌ๋ถ
while(cnt < array.length){
// ์ฒ์ ์ธ๋ ์ซ์์ด๋ฉด ๋ฐ๋ณตํ์ 1
if(beforeNum !== array[cnt]){
repeatCnt = 1;
// ์ด๋ฏธ ์
๋ ์ซ์์ด๋ฉด ๋ฐ๋ณตํ์ 1 ์ฆ๊ฐ
} else{
repeatCnt = repeatCnt+1;
}
// ์ต๋น๊ฐ์ด ์ฌ๋ฌ๊ฐ์ด๋ฉด ์ค๋ณต ํ์
if(repeatCnt === modeRepeatCnt){
if(mode !== array[cnt]){
isModeDuplicate = true;
}
}
// ์ต๋น๊ฐ ๊ฐฑ์ ๋๋ ๊ฒฝ์ฐ
if(repeatCnt > modeRepeatCnt){
mode = array[cnt];
modeRepeatCnt = repeatCnt;
isModeDuplicate = false;
}
beforeNum = array[cnt];
cnt= cnt+1;
}
// ์ต๋น๊ฐ return (์ฌ๋ฌ๊ฐ์ด๋ฉด -1 return)
if(isModeDuplicate) return -1;
return mode;
}
[์ถ์ฒ] ๋ผ๋งค๊ฐ๋ฐ์ https://youtu.be/wnl3UyLecnc