ALGORITHM/BOJ

[백준_javascript] 심화 1 (1316, 25206)

오늘도 코딩하나 2024. 8. 12. 17:09

#1316 (그룹 단어 체커)

const fs = require('fs');
const file = process.platform === 'linux' ? '/dev/stdin' : __dirname+'/input.txt';

const input = fs.readFileSync(file).toString().trim().split('\n').map(item => item.trim().split(' '));

const gpa = {'A+':4.5, 'A0':4.0, 'B+':3.5, 'B0':3.0, 'C+':2.5, 'C0':2.0, 'D+':1.5, 'D0':1.0, 'F':0.0};

let total = 0;
let totalGrade = 0;
for(let [subject, score, grade] of input) {
    if(grade !== 'P') {
        total += Number(score) * gpa[grade];
        totalGrade += Number(score);
    }
}
console.log((total/totalGrade).toFixed(6));

 

#25206 (너의 평점은)

solution1_Set() 활용.

const fs = require('fs');
const file = process.platform === 'linux' ? '/dev/stdin' : __dirname+'/input.txt';

const [N, ...words] = fs.readFileSync(file).toString().trim().split('\n');

let result = 0;
for(let word of words) {
    let seen = new Set();
    let isGroupWord = true;
    let lastChar = '';

    for(let char of word) {
        if(char !== lastChar && seen.has(char)) {
            isGroupWord = false;
            break;
        }
        seen.add(char);
        lastChar = char;
    }
    if(isGroupWord) result++;
}
console.log(result);

 

solution_includes, index 비교.

const fs = require('fs');
const file = process.platform === 'linux' ? '/dev/stdin' : __dirname+'/input.txt';

const [N, ...words] = fs.readFileSync(file).toString().trim().split('\n');

let answer = words.length;
let temp = '';

words.forEach((item) => {
    temp = item[0];
    for(let i=1; i<item.length; i++) {
        if(temp.includes(item[i]) && item[i-1] !== item[i]) {
            answer--;
            break;
        }
        temp += item[i];
    }
});

console.log(answer);

 

solution3_solution1과 유사한 방법.

const fs = require('fs');
const file = process.platform === 'linux' ? '/dev/stdin' : __dirname+'/input.txt';

const [N, ...words] = fs.readFileSync(file).toString().trim().split('\n');

let countGroupWord = 0;
for(let word of words) {
    const letter = [];
    let isGroupWord = true;

    for(let j=0; j<word.length; j++) {
        if(letter.indexOf(word[j]) === -1) {
            letter.push(word[j]);
        } else {
            if(letter.indexOf(word[j]) !== letter.length -1) {
                isGroupWord = false;
                break;
            }
        }
    }

    if(isGroupWord) {
        countGroupWord += 1;
    }
}

console.log(countGroupWord);