티스토리 뷰
중첩 반복문+문자열 처리에 관한 문제인듯
const fs = require('fs');
const filePath = process.platform === 'linux' ? '/dev/stdin' : './input.txt';
let inputChartext = fs.readFileSync(filePath).toString().split('\n');
let inputcharfiltered = inputChartext.filter(value => value.length > 0);
solution(inputcharfiltered)
function solution (inputArray) {
let count = +inputArray[0];
let result = [];
let reverse = [];
for(let i = 1; i < count+1; i++) { // i : 1,2
let words = inputArray[i].split(' ');
for(let j = 0; j < words.length; j++) { // words : [I,am,happy,today]
for(let k = words[j].length; k; k--) {
reverse.push(words[j].charAt(k-1));
}
reverse.push(' ');
}
reverse[reverse.length-1] = '';
result.push(reverse.join(''));
reverse = [];
}
console.log(result.join('\n'));
}
초반 입력처리는 앞서 푼 문제의 기반을 좀 사용했다.
주어진 문장 루프 내에서 단어를 뽑아 루프를 돌고 또 그안에서 역 입력을 위한 루프로 총 3중첩 반복문을 돈다.
한 뒤집힌 문장을 stringarray형태로 reverse에 join('')로 정상화하여 result 배열에 저장하고,
result 배열을 join('\n')으로 한 번 출력했다.
딱히 겪은 문제는 없었다.
그냥 내 코드가 최적화 되어있지 않으리란 강한 예감이 들 뿐이다. ㅋㅋㅋㅋ
다른 사람 코드를 좀 보니 다들 reverse함수를 썼더라구...
아니 나는 그냥 있는 거 간단하게 쓸거면 알고리즘 공부하는 느낌이 없다 생각했지ㅇ이이잉...
for(let i = 1; i < count+1; i++) { // i : 1,2
let words = inputArray[i].split(' ');
// words : [I,am,happy,today]
for(var letter in words) {
reverse = words[letter].split('').reverse();
console.log(reverse);
}
}
이걸 돌려보니까
이렇게 나온다.
join('')으로 조합하고, 띄어쓰기 더해주고 마지막에 \n 더해주면 되겠지?
function solution (inputArray) {
let count = +inputArray[0];
let reverse = '';
for(let i = 1; i < count+1; i++) { // i : 1,2
let words = inputArray[i].split(' ');
// words : [I,am,happy,today]
for(var letter in words) {
reverse += words[letter].split('').reverse().join('') + ' ';
}
reverse += '\n';
}
console.log(reverse);
}
이렇게 다시 내봤다.
reverse 쓰는것보다는 직접 구현하는게 더 좋긴 한가보당.
'■ 알고리즘 > ◻ 백준' 카테고리의 다른 글
[Nodejs]1874번: 스택 수열 (0) | 2022.07.23 |
---|---|
[Nodejs]9012번: 괄호 (0) | 2022.07.22 |
[Nodejs]10828번: 스택 (0) | 2022.07.20 |
알고리즘 기초 문제 풀이 순서 (0) | 2022.07.20 |
[C#]백준 2750번 : 수 정렬하기 (0) | 2018.08.14 |