[백준] 6단계

JH Cho·2022년 8월 3일
0

알고리즘

목록 보기
10/12

6-1(11654) 아스키 코드

const fs = require("fs");
const filePath = process.platform === "linux" ? "/dev/stdin" : "./input.txt";

let input = fs.readFileSync(filePath).toString();

console.log(input.charCodeAt(0)); //  65

// console.log(String.fromCharCode(65)); // A  ( 아스키 코드를 문자열로 변환하는 법)
charCodeAt() 메서드는 주어진 인덱스에 대한 UTF-16 코드를 나타내는 0부터 65535 사이의 정수를 반환합니다.
UTF-16 코드 = ASCII 코드

6-2(11720)

const fs = require("fs");
const filePath = process.platform === "linux" ? "/dev/stdin" : "./input.txt";

let input = fs.readFileSync(filePath).toString().split("\n");

arrNum = input[0]; //5
arr = input[1].split("").map((x) => +x); //[ 5, 4, 3, 2, 1 ]

let sum = 0;
for (let i = 0; i < arrNum; i++) {
  sum += arr[i];
}
console.log(sum);

6-3(10809)

const fs = require("fs");
const filePath = process.platform === "linux" ? "/dev/stdin" : "./input.txt";

let input = fs.readFileSync(filePath).toString();
//input baekjoon

//97 ~122 아스키 코드의 소문자 알파벳 코드
let alphabet = [];
for (let i = 97; i <= 122; i++) {
  alphabet.push(String.fromCharCode(i));
}
/* 배열을 노가다로 넣을 수 있지만 이렇게 쉽게 가능함.
[
  'a', 'b', 'c', 'd', 'e', 'f',
  'g', 'h', 'i', 'j', 'k', 'l',
  'm', 'n', 'o', 'p', 'q', 'r',
  's', 't', 'u', 'v', 'w', 'x',
  'y', 'z'
]
*/
// console.log(input.indexOf(alphabet[i]));
//console.log(alphabet.length); //26
let result = [];
for (let i = 0; i < alphabet.length; i++) {
  result.push(input.indexOf(alphabet[i]));
}
console.log(result.join(" "));
---------------마지막 스트링 뒤에 공백때문에 안될까
싶었는데 맞음-----------------------
let result = "";
for (let i = 0; i < alphabet.length; i++) {
  result += input.indexOf(alphabet[i]) + " ";
}
console.log(result);

6-4(2675)

const fs = require("fs");
const filePath = process.platform === "linux" ? "/dev/stdin" : "./input.txt";

let input = fs.readFileSync(filePath).toString().split("\n");
let num = input.shift(); // shift는 배열 맨 앞 요소를 빼내줌.
// console.log(input); // [ '3 ABC', '5 /HTP' ]
// input = input[0].split(" ");
// console.log(input); ["3", "ABC"];

for (let i = 0; i < num; i++) {
  let arr = "";
  let [times, str] = input[i].split(" ");
  for (let j = 0; j < str.length; j++) {
    arr += str[j].repeat(times);
  }
  console.log(arr);
}

// console.log(arr); [ [ '3', 'ABC' ], [ '5', '/HTP' ] ]
// str.repeat(2) str를 2번 반복해서 출력한다.

6-6(1152)

const fs = require("fs");
const filePath = process.platform === "linux" ? "/dev/stdin" : "./input.txt";

let input = fs.readFileSync(filePath).toString();
//console.log(input); The last character is a blank 문자열 맨 뒤에 공백이 있음.
// console.log(input.trim()); //문자 앞 뒤 공백을 없앰.

input = input.trim().split(" "); //// console.log(input.trim()); //문자 앞 뒤 공백을 없앰.
//  공백 기준으로 문자열을 배열의 요소로 만듦.
let result = input.length; //배열 수 = 단어 개수..
console.log(result);
-------------틀렸다 -------------? 
  공백만 입력값으로 주었을 때 1이 출력된다.
----------------------------------
const fs = require("fs");
const filePath = process.platform === "linux" ? "/dev/stdin" : "./input.txt";

let input = fs.readFileSync(filePath).toString();
//console.log(input); The last character is a blank 문자열 맨 뒤에 공백이 있음.
// console.log(input.trim()); //문자 앞 뒤 공백을 없앰.

let wordArr = input.trim().split(" ");
// console.log(wordArr);

let countWords = 0;

for (let i = 0; i < wordArr.length; i++) {
  if (wordArr[i] != "") {
    countWords++;
  }
}
console.log(countWords);
------------요소가 ""이 아닌 경우에만 카운트워즈가 1 씩 증가하도록 코드를 짬.------

6-7(2908)

---------다시 풀어보기.-----
const fs = require("fs");
const filePath = process.platform === "linux" ? "/dev/stdin" : "./input.txt";
let input = fs.readFileSync(filePath).toString().split("\n");
let splitedInput = input[0].split(" ");
const reversePrint = (str) => {
  let output = "";
  for (let i = 2; i >= 0; --i) {
    output += str[i];
  }
  console.log(output);
};
solution(splitedInput[0], splitedInput[1]);
function solution(A, B) {
  for (let i = 2; i >= 0; --i) {
    let nowA = A[i];
    let nowB = B[i];
    if (nowA > nowB) {
      reversePrint(A);
      return;
    } else if (nowA < nowB) {
      reversePrint(B);
      return;
    }
  }
}
---------------- 
const fs = require("fs");
const filePath = process.platform === "linux" ? "/dev/stdin" : "./input.txt";
let input = fs.readFileSync(filePath).toString().split("\n");

input = input[0].split(" ");
//console.log(input);["734", "893"];

let a = input[0].split("").reverse().join("");
// console.log(a); //        437
/*
  인풋의 인덱스 0번 요소 734를 ""으로 쪼개고  [ '7', '3', '4' ]
  배열을 reverse ['4', '3', '7']
  join("") 공백없이 배열을 합해서 문자열로 바꿔줌.
  */

let b = input[1].split("").reverse().join("");
// console.log(b);398;

if (a > b) {
  console.log(a);
} else {
  console.log(b);
}
// console.log( )
//console.log(a > b ? a : b); <- 이런 식으로 줄여쓰기 가능.

정리하기 : join, reverse 메서드

profile
주먹구구식은 버리고 Why & How를 고민하며 프로그래밍 하는 개발자가 되자!

0개의 댓글