본문 바로가기

백준/JavaScript

[JS] 백준 문자열 - 첫 번째 이야기

728x90

 

 

드디어 문자열 단계를 풀 차례이다.

 

 

오늘은 와이파이가 없는 곳에 와서 핫스팟을 틀었는데...  얼른 풀고 핫스팟을 꺼야겠다.

 

 

문제 27866번

https://www.acmicpc.net/problem/27866

 

27866번: 문자와 문자열

첫째 줄에 영어 소문자와 대문자로만 이루어진 단어 $S$가 주어진다. 단어의 길이는 최대 $1\,000$이다. 둘째 줄에 정수 $i$가 주어진다. ($1 \le i \le \left|S\right|$)

www.acmicpc.net

 

음.. 이 문제는 글자를 나눠서 배열에 넣어준 후에 인덱스를 이용하여 출력해주면 될 것 같다.

 

const fs = require('fs');
//백준에 제출할 때 써야하는 코드
const readFileSyncAdress = '/dev/stdin';
//테스트
//const readFileSyncAdress = 'input.txt';

const input = fs.readFileSync(readFileSyncAdress).toString().split('\n');
const i=input[1];
let a = [];
a = input[0].split('');

console.log(a[i-1]);

 

 

 

다른 분의 풀이도 찾아보았다.

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


const words = input[0]
const index = Number(input[1])


console.log(words[index-1])

출처: https://velog.io/@goddls123/%EB%B0%B1%EC%A4%80-JavaScript27866-%EB%AC%B8%EC%9E%90%EC%99%80-%EB%AC%B8%EC%9E%90%EC%97%B4

 

나는 input[0] 을 그대로 넣으면 그 문자 그대로 하나가 될 줄 알았는데, 그냥 넣어도 인덱스로 몇 번째 글자를 출력할 수 있나 보다.

 

백준에 제출할 때마다 주석처리를 계속해줘야 해서 그냥 나도 이 분처럼 플랫폼이 linux이면 file 변수에 '/dev/stdin'이 들어가도록 코드를 작성해야겠다.

 

 

 

 

 

그럼 다음 문제~

 

문제 2743번

https://www.acmicpc.net/problem/2743

 

2743번: 단어 길이 재기

알파벳으로만 이루어진 단어를 입력받아, 그 길이를 출력하는 프로그램을 작성하시오.

www.acmicpc.net

 

단어를 입력받아서 length를 사용하면 주어진 단어의 길이를 알 수 있을 것 같다.

 

const readFileSyncAdress = process.platform === 'linux' ? '/dev/stdin':'./input.txt'
const input = require('fs').readFileSync(readFileSyncAdress).toString().trim();

console.log(input.length);

 

 

 

오예~~

 

내 데이터가 없어지기 전에 오늘은 여기서 마무리해야겠다...

(내일도... 와이파이가 없을 예정이기 때문에...)

 

 

 

그럼 안녕...

728x90