250x250
Notice
Recent Posts
Recent Comments
Link
\(@^0^@)/
[JS] ๋ฐฑ์ค 1157 ๋จ์ด๊ณต๋ถ ๋ณธ๋ฌธ
728x90
๐ฑ๐ 1. ๋ฌธ์ : 1157
https://www.acmicpc.net/problem/1157
โก 2. ์กฐ๊ฑด ๋ฐ ํ์ด ๋ฐฉ์?
// 1. ๋ฌธ์๋ค์ ๊ตฌ๋ถํ๊ธฐ ์ํด์๋, ๋ชจ๋ ๋๋ฌธ์๋ก ๋ณ๊ฒฝ.
// 2. a-z๊น์ง์ ๋ฐฐ์ด์ ์์ฑ.
// 3. ์ํ๋ฒณ๋ค์ charCodeAt()๋ฅผ ์ฌ์ฉํ์ฌ ์ซ์๋ก ๋ณํํ๊ณ a(65)๋งํผ์ ๋บ,
// ๊ทธ ์ซ์๋ฅผ ๋ฐฐ์ด์ ์ธ๋ฑ์ค๋ก ์ก๊ณ , 1์ ์ถ๊ฐ ํด์ค.
// ex) ์ํ๋ฒณ์ด a๋ผ๋ฉด 65 - 65 = 0 ์ด๋ฏ๋ก, ์ธ๋ฑ์ค 0์ 1์ถ๊ฐ.
// 4. indexOf()๋ก ๋ฐฐ์ด์ index max ๊ฐ์ ๊ตฌํ๊ณ ,
// 5. for๋ฌธ์ ์ฌ์ฉํ๋ max ๊ฐ์ Math.max()๋ก ๊ตฌํด์,
// 6. ๋์ max ๊ฐ์ ๋น๊ตํ์ฌ, ์ค๋ณต์ด ์์ ๊ฒฝ์ฐ "?"์ ์ถ๋ ฅ
// 7. ์ค๋ณต์ด ์๋ค๋ฉด, fromCharCode()๋ฅผ ์ด์ฉํ์ฌ ๋ฌธ์์ด๋ก ๋ณํ.
๐ฅ 3-1. ์ฝ๋ ๋ฐ ํ์ด
const fs = require('fs');
const file = process.platform === 'linux' ? '/dev/stdin' : './input.txt';
let input = fs.readFileSync(file).toString().toUpperCase();
// a-z๊น์ง์ ๋ฐฐ์ด.
const array = new Array(26).fill(0);
// ํด๋น ๋จ์ด์ ๊ธธ์ด๋งํผ ๋ฐ๋ณตํ๋ฉด์ ์ซ์๋ก ๋ณํ๋ ์ํ๋ฒณ๋ค์ ๋ฐฐ์ด ์ธ๋ฑ์ค๋ก ์ ์ฉ.
for (let i = 0; i < input.length; i++) {
array[input.charCodeAt(i) - 65] ++;
}
// console.log(array)
// [
// 3, 1, 0, 0, 0, 0, 0, 0,
// 0, 0, 0, 0, 0, 0, 0, 0,
// 0, 0, 0, 0, 0, 0, 0, 0,
// 0, 0
// ]
// ํด๋น ๋ฐฐ์ด์์ ์ต๋๊ฐ : [3]
const max = Math.max(...array);
// ์ต๋๊ฐ์ ์ธ๋ฑ์ค : 0
const index = array.indexOf(max);
// max ์ index๊ฐ ๋ค๋ฅธ ์ํ๋ฒณ์ผ ๊ฒฝ์ฐ, true๋ก ๋ณํ์์ผ์ "?" ์ถ๋ ฅ
let isSame = false;
for (let j = 0; j < 26; j++) {
if (array[j] === max && index != j) {
isSame = true;
break;
}
}
console.log(isSame ? "?" : String.fromCharCode(index + 65));
๐ฅ 3-2. ์ฝ๋ ๋ฐ ํ์ด
const fs = require('fs');
const file = process.platform === 'linux' ? '/dev/stdin' : './input.txt';
let input = fs.readFileSync(file).toString().toUpperCase();
// a-z๊น์ง์ ๋ฐฐ์ด.
const array = new Array(26).fill(0);
// ํด๋น ๋จ์ด์ ๊ธธ์ด๋งํผ ๋ฐ๋ณตํ๋ฉด์ ์ซ์๋ก ๋ณํ๋ ์ํ๋ฒณ๋ค์ ๋ฐฐ์ด ์ธ๋ฑ์ค๋ก ์ ์ฉ.
for (let i = 0; i < input.length; i++) {
array[input.charCodeAt(i) - 65] ++;
}
// console.log(array)
// [
// 3, 1, 0, 0, 0, 0, 0, 0,
// 0, 0, 0, 0, 0, 0, 0, 0,
// 0, 0, 0, 0, 0, 0, 0, 0,
// 0, 0
// ]
// ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋ ์ํ๋ฒณ์ filter() ์ฌ์ฉํ์ฌ ๊ตฌํ๋ ์ฝ๋.
// console.log(array.filter(val => val)) : [3, 1]
// console.log(array.filter(val => val === max)) : [3]
// console.log(array.filter(val => val === max).length) : 1
// ํด๋น ๋ฐฐ์ด์์ ์ต๋๊ฐ : [3] ์ ๊ธธ์ด๊ฐ 1์ผ ๊ฒฝ์ฐ, ๋ฌธ์์ด๋ก ๋ณํํ์ฌ ์ถ๋ ฅ
// max์ ๊ธธ์ด๊ฐ 2 ์ด์์ธ ๊ฒฝ์ฐ์๋, ์ต๋๊ฐ์ด 2๊ฐ๊ฐ ์๋ค๋ ๋ป์ด๋ฏ๋ก, "?" ์ถ๋ ฅ
const max = Math.max(...array);
let result2 = array.filter(val => val === max).length === 1 ?
String.fromCharCode(array.findIndex(val => val === max) + 65) : '?';
console.log(result2);
728x90
'์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Big O Notation (0) | 2021.12.14 |
---|---|
[JS] ๋ฐฑ์ค 1152 ๋จ์ด์ ๊ฐ์ (0) | 2021.10.16 |
[JS] ๋ฐฑ์ค 2675 ๋ฌธ์์ด ๋ฐ๋ณต (0) | 2021.10.11 |
[JS] ๋ฐฑ์ค 10809 ์ํ๋ฒณ ์ฐพ๊ธฐ (0) | 2021.10.11 |
[JS] ๋ฐฑ์ค 11654 ์์คํค ์ฝ๋ (0) | 2021.10.02 |