본문 바로가기
Algorithm

백준 문자열 (11654/11720/10809/2675/1157/1152/2908/5622/2941/1316) node.js

by 해-온 2023. 2. 1.

✏️ 문제(11654 / 아스키 코드 / node.js)

 

11654번: 아스키 코드

알파벳 소문자, 대문자, 숫자 0-9중 하나가 주어졌을 때, 주어진 글자의 아스키 코드값을 출력하는 프로그램을 작성하시오.

www.acmicpc.net

📝 해답

const fs = require('fs');
const input = fs.readFileSync('/dev/stdin');

const str = input.toString();
const answer = str.charCodeAt();
console.log(answer);

 


 

✏️ 문제(11720 / 숫자의 합 / node.js)

 

11720번: 숫자의 합

첫째 줄에 숫자의 개수 N (1 ≤ N ≤ 100)이 주어진다. 둘째 줄에 숫자 N개가 공백없이 주어진다.

www.acmicpc.net

📝 해답

const fs = require('fs');
const input = fs.readFileSync('/dev/stdin').toString().split('\n');

const N = Number(input[0]);
const numbers = input[1].split('');
let sum = 0;

for (let i = 0; i < N; i++) {
  sum += Number(numbers[i]);
}

console.log(sum);

 


 

✏️ 문제(10809 / 알파벳 찾기 / node.js)

 

10809번: 알파벳 찾기

각각의 알파벳에 대해서, a가 처음 등장하는 위치, b가 처음 등장하는 위치, ... z가 처음 등장하는 위치를 공백으로 구분해서 출력한다. 만약, 어떤 알파벳이 단어에 포함되어 있지 않다면 -1을 출

www.acmicpc.net

📝 해답

const fs = require('fs');
const input = fs.readFileSync('/dev/stdin');

const answer = [];

for (let i = 97; i < 123; i++) {
  answer.push(input.indexOf(String.fromCharCode(i)));
}

console.log(answer.join(' '));

 


 

✏️ 문제(2675 / 문자열 반복 / node.js)

 

2675번: 문자열 반복

문자열 S를 입력받은 후에, 각 문자를 R번 반복해 새 문자열 P를 만든 후 출력하는 프로그램을 작성하시오. 즉, 첫 번째 문자를 R번 반복하고, 두 번째 문자를 R번 반복하는 식으로 P를 만들면 된다

www.acmicpc.net

📝 해답

const fs = require('fs');
const input = fs.readFileSync('/dev/stdin').toString().split('\n');

const T = Number(input.shift());
let answer = '';

for (let i = 0; i < T; i++) {
  const N = Number(input[i][0]);
  const str = input[i].split(' ')[1];
  for (let j = 0; j < str.length; j++) {
    answer += str.split('')[j].repeat(N);
  }
  answer += '\n';
}

console.log(answer);

 


 

✏️ 문제(1157 / 단어 공부 / node.js)

 

1157번: 단어 공부

알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다.

www.acmicpc.net

📝 해답

const fs = require('fs');
const input = fs.readFileSync('/dev/stdin');

const alp = new Array(26).fill(0);
const str = input.toLowerCase();

for (let i = 0; i < input.length; i++) {
  alp[str.charCodeAt(i) - 97]++;
}

const max = Math.max(...alp);
const index = alp.indexOf(max);
let isSame = false;

for (let j = 0; j < 26; j++) {
  if (alp[j] == max && index != j) {
    isSame = true;
    break;
  }
}

console.log(isSame ? '?' : String.fromCharCode(index + 65));

 


 

✏️ 문제(1152 / 단어의 개수 / node.js)

 

1152번: 단어의 개수

첫 줄에 영어 대소문자와 공백으로 이루어진 문자열이 주어진다. 이 문자열의 길이는 1,000,000을 넘지 않는다. 단어는 공백 한 개로 구분되며, 공백이 연속해서 나오는 경우는 없다. 또한 문자열

www.acmicpc.net

📝 해답

const fs = require('fs');
const input = fs.readFileSync('/dev/stdin').toString().trim();

const answer = input.split(' ');
let cnt = 0;

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

console.log(cnt);

 


 

✏️ 문제(2908 / 상수 / node.js)

 

2908번: 상수

상근이의 동생 상수는 수학을 정말 못한다. 상수는 숫자를 읽는데 문제가 있다. 이렇게 수학을 못하는 상수를 위해서 상근이는 수의 크기를 비교하는 문제를 내주었다. 상근이는 세 자리 수 두

www.acmicpc.net

📝 해답

const fs = require('fs');
const input = fs.readFileSync('/dev/stdin').toString().split(' ');

const A = input[0].split('').reverse().join('');
const B = input[1].split('').reverse().join('');

console.log(Math.max(A, B));

 


 

✏️ 문제(5622 / 다이얼 / node.js)

 

5622번: 다이얼

첫째 줄에 알파벳 대문자로 이루어진 단어가 주어진다. 단어의 길이는 2보다 크거나 같고, 15보다 작거나 같다.

www.acmicpc.net

📝 해답

const fs = require('fs');
const input = fs.readFileSync('/dev/stdin').toString().split('');

input.pop();

let time = 0;

for (let i = 0; i < input.length; i++) {
  let ascii = input[i].charCodeAt();

  if (ascii <= 67) {
    time += 3;
  } else if (ascii <= 70) {
    time += 4;
  } else if (ascii <= 73) {
    time += 5;
  } else if (ascii <= 76) {
    time += 6;
  } else if (ascii <= 79) {
    time += 7;
  } else if (ascii <= 83) {
    time += 8;
  } else if (ascii <= 86) {
    time += 9;
  } else if (ascii <= 90) {
    time += 10;
  }
}

console.log(time);

 


 

✏️ 문제(2941 / 크로아티아 알파벳 / node.js)

 

2941번: 크로아티아 알파벳

예전에는 운영체제에서 크로아티아 알파벳을 입력할 수가 없었다. 따라서, 다음과 같이 크로아티아 알파벳을 변경해서 입력했다. 크로아티아 알파벳 변경 č c= ć c- dž dz= đ d- lj lj nj nj š s= ž z=

www.acmicpc.net

📝 해답

const fs = require("fs");
const input = fs.readFileSync("/dev/stdin").toString().trim();

let croatia = ["c=", "c-", "dz=", "d-", "lj", "nj", "s=", "z="];

function solution(input) {
  for (let alphabet of croatia) {
    input = input.split(alphabet).join("*");
  }
  return input.length;
}

console.log(solution(input));

 


 

✏️ 문제(1316 / 그룹 단어 체커 / node.js)

 

1316번: 그룹 단어 체커

그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때

www.acmicpc.net

📝 해답

const fs = require('fs');
const input = fs.readFileSync('/dev/stdin').toString().split('\n');

const N = Number(input.shift());
let cnt = 0;

for (let i = 0; i < N; i++) {
  let word = input[i];
  let arr = [];
  let groupWord = true;

  for (let j = 0; j < input[i].length; j++) {
    if (arr.indexOf(word[j]) === -1) arr.push(word[j]);
    else {
      if (arr.indexOf(word[j]) !== arr.length - 1) {
        groupWord = false;
        break;
      }
    }
  }
  if (groupWord) {
    cnt += 1;
  }
}

console.log(cnt);

댓글