Algorithm_javascript/5. 문자열

백준 9086번 문자열 (javascript, node.js)

luminouswy 2023. 5. 20. 12:36
반응형

문제

  • 문자열을 입력으로 주면 문자열의 첫 글자와 마지막 글자를 출력하는 프로그램을 작성하시오.

입력

  • 입력의 첫 줄에는 테스트 케이스의 개수 T(1 ≤ T ≤ 10)가 주어진다. 각 테스트 케이스는 한 줄에 하나의 문자열이 주어진다. 문자열은 알파벳 A~Z 대문자로 이루어지며 알파벳 사이에 공백은 없으며 문자열의 길이는 1000보다 작다.

출력

  • 각 테스트 케이스에 대해서 주어진 문자열의 첫 글자와 마지막 글자를 연속하여 출력한다.

예제입력 1

3
ACDKJFOWIEGHE
O
AB

예제출력 1

AE
OO
AB


문제풀이

  • 제출할 때는 문제가 없지만 테스트할 때 문제가 발생
  • 백준에서 자바스크립트로 문제를 풀다보면 split('\n')을 사용하여 줄 바꿈을 해줄 경우 \r이 포함되어 있는데 이것 때문에 잘 안 되는 경우가 있음
  • 이 문제에서는 내 컴퓨터로 진행할경우 input[i].length가 하나 더 늘어나기 때문에 마지막 글자가 제대로 출력이 안되게 나옴
  • 그래서 str 변수에 input[i].trim()을 사용하여 제거하였음
  • 아래 링크는 \r 개행문자 처리 관련 포스트

https://luminouswy.tistory.com/entry/%EB%B0%B1%EC%A4%80-%EC%9E%85%EB%A0%A5%EA%B0%92r-%EA%B0%9C%ED%96%89%EB%AC%B8%EC%9E%90-%EC%B2%98%EB%A6%AC-%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8nodejs

 

백준 입력값(\r 개행문자) 처리 (자바스크립트.node.js)

HTML 삽입 미리보기할 수 없는 소스 문제 백준으로 자바스크립트 문제를 풀다보면 입력 값 때문에 제출 시 에는 문제가 없지만 내가 사용하고 있는 pc에서는 제대로 출력이 안 되는 문제가 있다.

luminouswy.tistory.com

//9086번
//문자열의 첫글자와 마지막 글자 출력
// 문자열의 첫 시작은 0, 마지막 부분은 글자의 길이출력해서 -1 해서 구함
//그 외 substring() 활용해도 됨, 사용법 string 객체의 시작 인덱스로 부터 종료 인덱스 전 까지 문자열의 부분 문자열을 반환합니다.

const fs = require("fs");
const file = process.platform === "linux" ? "dev/stdin" : "./text.txt";
const input = fs.readFileSync(file).toString().trim().split("\n");

const t = input[0];

for (i = 1; i <= t; i++) {
  // input[i].trim()을 사용해서  \r 제거
  // 개행문자 때문에 length가 하나 늘어나는 것 방지(문제 제출시에는 상관 없음)
  let str = input[i].trim();

  let End = str.length - 1;

  console.log(
    input[i].substring(0, 1) + input[i].substring(End, input[i].length)
  );
  // console.log(input[i].charAt(0) + input[i].charAt(End));
}