# [Algorithm/JS] ๋ฐฑ์ค 10610๋ฒ 30
๐ ๋ฌธ์ ๋ฐ๋ก๊ฐ๊ธฐ (opens new window)
# Question
์ด๋ ๋ , ๋ฏธ๋ฅด์ฝ๋ ์ฐ์ฐํ ๊ธธ๊ฑฐ๋ฆฌ์์ ์์ N์ ๋ณด์๋ค. ๋ฏธ๋ฅด์ฝ๋ 30์ด๋ ์๋ฅผ ์กด๊ฒฝํ๊ธฐ ๋๋ฌธ์, ๊ทธ๋ ๊ธธ๊ฑฐ๋ฆฌ์์ ์ฐพ์ ์์ ํฌํจ๋ ์ซ์๋ค์ ์์ด 30์ ๋ฐฐ์๊ฐ ๋๋ ๊ฐ์ฅ ํฐ ์๋ฅผ ๋ง๋ค๊ณ ์ถ์ดํ๋ค.
๋ฏธ๋ฅด์ฝ๋ฅผ ๋์ ๊ทธ๊ฐ ๋ง๋ค๊ณ ์ถ์ดํ๋ ์๋ฅผ ๊ณ์ฐํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ๋ผ.
# Input
N์ ์ ๋ ฅ๋ฐ๋๋ค. N๋ ์ต๋ 105๊ฐ์ ์ซ์๋ก ๊ตฌ์ฑ๋์ด ์์ผ๋ฉฐ, 0์ผ๋ก ์์ํ์ง ์๋๋ค.
# Output
๋ฏธ๋ฅด์ฝ๊ฐ ๋ง๋ค๊ณ ์ถ์ดํ๋ ์๊ฐ ์กด์ฌํ๋ค๋ฉด ๊ทธ ์๋ฅผ ์ถ๋ ฅํ๋ผ. ๊ทธ ์๊ฐ ์กด์ฌํ์ง ์๋๋ค๋ฉด, -1์ ์ถ๋ ฅํ๋ผ.
# Example
# Input 1
30
# Output 1
30
# Input 3
102
# Output 2
210
# Input 3
2931
# Output 3
-1
# Solution
์๊ณ ๋ฆฌ์ฆ: ๊ทธ๋ฆฌ๋
์๋ ๊ท์น๋ง ์๋ฉด ํ๊ธฐ ์ฝ๋ค.
- 30์ ๋ฐฐ์๋ 0์ด ํ์์ ์ผ๋ก ๋ค์ด๊ฐ์ผํ๋ค. ์ซ์์ 0์ด ๋ค์ด๊ฐ์์ง ์๋ค๋ฉด ๊ทธ ์๋ 30์ ๋ฐฐ์๊ฐ ์๋๋ค.
- 30์ ๋ฐฐ์๋ ๊ฐ ์๋ฆฌ ์๋ฅผ ๋ชจ๋ ํฉํ ์๋ฅผ 3์ผ๋ก ๋๋์ด ๋จ์ด์ง๋ค๋ฉด ๊ทธ ์๋ 30์ ๋ฐฐ์์ด๋ค. ๋๋์ด ๋จ์ด์ง์ง ์๋๋ค๋ฉด ๊ทธ ์๋ 30์ ๋ฐฐ์๊ฐ ์๋๋ค.
const fs = require('fs');
const filePath = process.platform === 'linux' ? '/dev/stdin' : '../input.txt';
const input = fs.readFileSync(filePath).toString().trim().split('');
solution(input);
function solution(input) {
if (!input.includes('0')) {
// 1
console.log('-1');
} else {
const sum = input.map(Number).reduce((acc, cur) => acc + cur); // 2
if (sum % 3 !== 0) return console.log('-1'); // 3
const result = input.sort((a, b) => b - a).join('');
console.log(result);
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
- ์ ๋ ฅ ๊ฐ์ 0์ด ํฌํจ๋์ด์๋ ์ง ํ์ธํ๋ค. ํฌํจ๋์ด์์ง ์๋ค๋ฉด -1 ์ถ๋ ฅ
- map ์ ํตํด ์ด ์ซ์ํ ํ์ ์ผ๋ก ๋ณํ ํ ๊ฐ ์๋ฆฌ ์์ ํฉ์ reduce ๋ก ๊ตฌํ๋ค.
- ๊ฐ ์๋ฆฌ์์ ํฉ์ 3์ผ๋ก ๋๋์์ ๋ ๋๋์ด ๋จ์ด์ง์ง ์๋๋ค๋ฉด -1์ ์ถ๋ ฅํ๊ณ ํจ์๋ฅผ ๋น ์ ธ๋๊ฐ๋ค.
- ๋๋์ด ๋จ์ด์ง๋ค๋ฉด 30์ ๋ฐฐ์์ด๋ฏ๋ก ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌ ํ ํ๋์ ํฉ์ณ์ค๋ค
[ โ8โ, โ8โ, โ7โ, โ5โ, โ5โ, โ4โ, โ2โ, โ0โ ] โ 88755420