관리 메뉴

Jerry

백준 - 단계별 문제 - 문자열 - node.js / javascript 본문

Problem Solving/Algorithm 문제 풀기

백준 - 단계별 문제 - 문자열 - node.js / javascript

juicyjerry 2021. 7. 7. 17:49
반응형

 

 

 

1. 아스키코드

let input = require('fs').readFileSync('/dev/stdin').toString();
console.log(input.charCodeAt(0));

 

 

 

 

2. 숫자의 합

let input = require('fs').readFileSync('/dev/stdin').toString().split('\n');
let sum = input[1].split('').reduce((acc, cur) => acc + Number(cur), 0);

console.log(sum);

 

 

 

3. 알파벳 찾기

let input = require("fs").readFileSync("/dev/stdin").toString();
let arr = [];
for (let i = 97; i <= 122; i++) {
    let str = String.fromCharCode(i);
    console.log(Number(input.indexOf(str) + ' '));

}

 

 

 

4. 문자열 반복

let input = require("fs").readFileSync("/dev/stdin").toString().split('\n');
let len = input.shift();

for (let t = 0; t < len; t++) {
    let [time, str] = input[t].split(' ');
    let answer = '';
    
    for (let y = 0; y < str.length; y++) {
        for (let x = 0; x < time; x++) {
            answer += str[y];
        }
    }
    console.log(answer); 
}

 

 

5. 단어 공부 
(테케 통과가 되는데 문제가 통과 안 됨 - 다시 풀 예정)

let input = require("fs").readFileSync("/dev/stdin").toString().split('');
let obj = {};

for (let i = 0; i < input.length; i++) {
    if (obj[input[i].toUpperCase()]) obj[input[i].toUpperCase()]++;
    else obj[input[i].toUpperCase()] = 1;
}

let objValues = Object.values(obj);
let max = Math.max(...objValues);
let cnt = 0;
let maxIdx = 0;

for (let i = 0; i < objValues.length; i++) {
    if (max === objValues[i]) {
        cnt++;
        maxIdx = i;
    }
}

if (cnt > 1) console.log('?');
else console.log(input[maxIdx].toUpperCase());

 

 

 

6. 단어의 개수

let input = require("fs").readFileSync("/dev/stdin").toString().trim().split(' ');
let cnt = 0;

for (let i = 0; i < input.length; i++) {
    if (input[i] !== '') {
        cnt++;
    }
}
console.log(cnt);

 

 

 

 

7. 상수

let input = require('fs').readFileSync('/dev/stdin').toString();
let [num1, num2] = input.split(' ');
num1 = Number(num1.split('').reverse().join(''));
num2 = Number(num2.split('').reverse().join(''));

if (num1 > num2) console.log(num1);
else console.log(num2);

 

 

 

 

8.다이얼

(테케 통과가 되는데 문제가 통과 안 됨 - 다시 풀 예정)

let input = require('fs').readFileSync('/dev/stdin').toString();
let dial = {
  0: "",
  1: "ABC",
  2: "DEF",
  3: "GHI",
  4: "JHL",
  5: "MNO",
  6: "PQRS",
  7: "TUV",
  8: "WXYZ",
  9: "",
};

let sum = 0;
let dialTime = Object.keys(dial);
let dialStr = Object.values(dial);

for (let i = 0; i < input.length; i++) {
    let target;
    for (let j = 0; j < dialTime.length; j++) {
        target = dialStr[j].indexOf(input[i]);
        if (target > -1) {
            target = j;
            break;
        }
    }
    let targetTime = dialTime[target];
    sum += Number(targetTime) + 2;
}

console.log(sum);

 

 

 

 

 

9. 크로아티아 알파벳

(통과 못 함 - 다시 풀 예정)

let input = require("fs").readFileSync("/dev/stdin").toString();
let croatic = ["c=", "c-", "dz=", "d-", "lj", "nj", "s=", "z="];
let croaticArr = [];
let flag, target;

for (let y = 0; y < input.length; y++) {
  if (flag === 1 || target === undefined) {
    target = input[y];
  } else {
    if (target.length >= 2) {
      croaticArr.push(target[0]);
      y -= 3;
      target = "";
      continue;
    } else {
      target += input[y];
    }
  }

  flag = 0;
  if (croatic.indexOf(target) > -1) {
    croaticArr.push("*");
    flag = 1;
  }
}

console.log(croaticArr.length);

 

 

 

 

10. 그룹 단어 체커

(테케 통과가 되는데 문제가 통과 안 됨 - 다시 풀 예정)

let input = require('fs').readFileSync('/dev/stdin').toString().split('\n');
let len = input.shift();
let cnt = 0;

for (let y = 0; y < input.length; y++) {
    let target = input[y].split('');
    let arr = [];
    let flag = 0;
    
    for (let x= 0; x < input[y].length; x++) {
        if (arr.indexOf(target[x]) === -1 || target[x] === target[x - 1]) {
            if ( target[x] === target[x - 1]) continue;
            arr.push(target[x]);
        }
        else {
           flag = 1;
           break;
        }
    }
    if (flag === 0) cnt++;
}

console.log(cnt);

 

 

 

 

 

 

 

반응형