728x90
๋ฐ์ํ
๐ ๋ฌธ์
N๊ฐ์ ์์ฐ์๊ฐ ์ ๋ ฅ๋๋ฉด ๊ฐ ์์ฐ์์ ์๋ฆฟ์์ ํฉ์ ๊ตฌํ๊ณ , ๊ทธ ํฉ์ด ์ต๋์ธ ์์ฐ์๋ฅผ ์ถ๋ ฅํ๋ ๋ฌธ์ ์ด๋ค. ์๋ฆฟ์์ ํฉ์ด ๊ฐ์ ๊ฒฝ์ฐ ์๋ ์ซ์๊ฐ ํฐ ์ซ์๋ฅผ ๋ต์ผ๋ก ํ๋ค.
๋ง์ฝ 235์ 1234๊ฐ ๋์์ ๋ต์ด ๋ ์ ์๋ค๋ฉด 1234๋ฅผ ๋ต์ผ๋ก ์ถ๋ ฅํด์ผ ํ๋ค.
๐ ํ์ด
๐ง๐ป๐ป ๋์ ํ์ด ๋ฐฉ๋ฒ
- ์ ๋ ฅ๋ ๊ฐ ์์ฐ์๋ฅผ String ์ ์ญ ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํด ๋ฌธ์์ด๋ก ๋ณํํ๋ค.
- split('') ๋ฉ์๋๋ฅผ ์ฌ์ฉํด ์๋ฆฟ์๋ณ๋ก ๋๋ ์ค ํ reduce() ๋ฉ์๋๋ฅผ ์ฌ์ฉํด ์๋ฆฟ์์ ํฉ์ ๊ตฌํ๋ค.
- max์ ๊ฐ๊ณผ val์ ๊ฐ์ ๋น๊ตํด ๋ ํฐ ๊ฐ์ max์ ์ฌํ ๋น ํด์ฃผ๊ณ ํด๋น ์์ฐ์๋ฅผ answer์ ์ฌํ ๋นํ๋ค.
- ๋ง์ฝ, ์๋ฆฟ์์ ํฉ์ด ๊ฐ์ ๊ฒฝ์ฐ ์๋ ์ซ์๋ฅผ ๋น๊ตํด ๋ ํฐ ๊ฐ์ answer์ ์ฌํ ๋นํ๋ค.
function solution(n, arr) {
let answer, max = Number.MIN_SAFE_INTEGER;
for (let i = 0; i < n; i++) {
const val = String(arr[i])
.split('')
.reduce((sum, v) => sum + Number(v), 0);
if (max === val) {
answer = Math.max(answer, arr[i]);
} else if (max < val) {
max = val;
answer = arr[i];
}
}
return answer;
}
let arr = [128, 460, 603, 40, 521, 137, 123];
console.log(solution(7, arr));
๐จ๐ผ๐ซ ๊ฐ์ฌ๋ ํ์ด ๋ฐฉ๋ฒ
- ์ ๋ ฅ๋ ์์ฐ์๋ฅผ ๊ทธ๋๋ก ์ ์ง์ํค๊ธฐ ์ํด tmp์ ์์ฐ์๋ฅผ ์ ์ฅํ๋ค.
- tmp์ ์ ์ฅ๋ ์์ฐ์๋ฅผ %, / ์์์ ์ฌ์ฉํ์ฌ ๊ฐ ์๋ฆฟ์๋ฅผ ์ฐจ๋ก๋๋ก ๊ตฌํจ๊ณผ ๋์์ sum์ ๋์ ํ๋ค.
- max์ ๊ฐ๊ณผ sum์ ๊ฐ์ ๋น๊ตํด ๋ ํฐ ๊ฐ์ max์ ์ฌํ ๋นํ๋ค.
- ๋ง์ฝ, ์๋ฆฟ์์ ํฉ์ด ๊ฐ์ ๊ฒฝ์ฐ ์๋ ์ซ์๋ฅผ ๋น๊ตํด ๋ ํฐ ๊ฐ์ answer์ ์ฌํ ๋นํ๋ค.
function solution(n, arr) {
let answer, max = Number.MIN_SAFE_INTEGER;
for (let x of arr) {
let sum = 0, tmp = x;
// ์๋ฆฟ์์ ํฉ์ ๋ชจ๋ ๊ตฌํ๊ณ ๋๋ฉด while๋ฌธ ์ข
๋ฃ
while (tmp) {
// ์ผ์ ์๋ฆฌ ๊ตฌํ๊ธฐ
sum += tmp % 10;
tmp = Math.floor(tmp / 10);
}
if (max < sum) {
max = sum;
answer = x;
} else if (max === sum) {
if (answer < x) answer = x;
}
}
return answer;
}
let arr = [128, 460, 603, 40, 521, 137, 123];
console.log(solution(7, arr));
'Algorithm > ์ธํ๋ฐ(inflearn)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JavaScript/section 4] 03 - ๋ฉํ ๋ง (0) | 2022.09.14 |
---|---|
[JavaScript/section 4] 02 - ๋ค์ง์ ์์ (0) | 2022.09.14 |
[JavaScript/section 3] 05 - ๋ฌธ์์ด ์์ถ (0) | 2022.09.13 |
[JavaScript/section 3] 04 - ๊ฐ์ฅ ์งง์ ๋ฌธ์๊ฑฐ๋ฆฌ (0) | 2022.09.13 |
[JavaScript/section 3] 03 - ์ซ์๋ง ์ถ์ถ (0) | 2022.09.12 |