-
9093. 단어 뒤집기Baekjoon 2023. 4. 9. 18:18
문제
문장이 주어졌을 때, 단어를 모두 뒤집어서 출력하는 프로그램을 작성하시오. 단, 단어의 순서는 바꿀 수 없다. 단어는 영어 알파벳으로만 이루어져 있다.
입력
첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 문장이 하나 주어진다. 단어의 길이는 최대 20, 문장의 길이는 최대 1000이다. 단어와 단어 사이에는 공백이 하나 있다.
2 I am happy today We want to win the first prize
출력
각 테스트 케이스에 대해서, 입력으로 주어진 문장의 단어를 모두 뒤집어 출력한다.
I ma yppah yadot eW tnaw ot niw eht tsrif ezirp
에러
더보기let fs = require("fs"); const readFileSyncAdd = "9093.txt"; const input = fs.readFileSync(readFileSyncAdd).toString().split('\n'); const len = input.shift(); for (let i = 0; i < len; i++) { let res = ""; const words = input[i].split('\n'); for(let j = 0; j < words.length; j++ ) { const word = words[j].split(' '); for(let k = 0; k < word.length; k++){ const w = word[k].split(''); w.reverse(); res += ' ' + w.join(''); } console.log(res) } }
출력 형식이 잘못되었습니다 가 떴다.
출력 형식이 잘못되었습니다 는 출력된 것이 정답과 유사하나, 공백이나 줄바꿈 등으로 약간 다를 때 발생한다.
res 에 뒤집은 단어를 넣을 때, 띄어쓰기를 추가했는데 이것 때문에 첫 단어 앞에도 공백이 들어간 것이 문제였다.
즉, 'I ma yppah'여야 하는데, ' I ma yppah'가 되어버렸다는 것.
그래서 if문을 사용, 맨 앞 단어에는 공백을 넣지 않는 것으로 변경.
결과는 맞았습니다!! 야호
제출 코드
let fs = require("fs"); const readFileSyncAdd = "9093.txt"; const input = fs.readFileSync(readFileSyncAdd).toString().split('\n'); const len = input.shift(); for (let i = 0; i < len; i++) { let res = ""; const words = input[i].split('\n'); for(let j = 0; j < words.length; j++ ) { const word = words[j].split(' '); for(let k = 0; k < word.length; k++){ const w = word[k].split(''); w.reverse(); if(k!==0) { res += ' ' + w.join(''); } else { res += w.join('') } } console.log(res) } }
#실제 코드 제출 시에는 "9093.txt" 를 "./dev/stdin" 으로 바꾸는 것을 잊지말자.
'Baekjoon' 카테고리의 다른 글
11655. ROT13 (0) 2023.05.02 10845. 큐 (0) 2023.05.02 10820. 문자열 분석 (0) 2023.05.02 1157. 단어 공부 (0) 2023.04.09 10828. 스택 (0) 2023.04.09