ABOUT ME

Today
Yesterday
Total
  • 백준 - 9093(단어 뒤집기)
    프로그래밍/algorithm 2021. 6. 4. 16:24

     

    문제

    문장이 주어졌을 때, 단어를 모두 뒤집어서 출력하는 프로그램을 작성하시오. 단, 단어의 순서는 바꿀 수 없다. 단어는 영어 알파벳으로만 이루어져 있다.

    입력

    첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 문장이 하나 주어진다. 단어의 길이는 최대 20, 문장의 길이는 최대 1000이다. 단어와 단어 사이에는 공백이 하나 있다.

    출력

    각 테스트 케이스에 대해서, 입력으로 주어진 문장의 단어를 모두 뒤집어 출력한다.

     

     

    풀이 1(Node.js ) 

    const fs = require("fs");
    const input = fs.readFileSync("dev/stdin").toString().split('\n');
    
    function reverse(str) {
        let reverseStr = '';
        for (let i = str.length - 1; i >= 0; i--) {
            reverseStr += str.charAt(i);
        }
        return reverseStr;
    }
    
    
    let result = ''
    for (let i = 1; i <= input[0]; i++) {
        let comp = input[i].trim().split(' ');
        for (let j = 0; j < comp.length; j++) {
            result += reverse(comp[j]) + " ";
        }
        result += "\n";
    }
    
    console.log(result);
    

     

    풀이 2(Node.js)

    const fs = require("fs");
    const input = fs.readFileSync("dev/stdin").toString().split('\n');
    let n = +input.shift();
    
    let result = '';
    const rev = (word) => Array.from(word).reverse().join('');
    
    for (let i = 0; i < n; i++) {
        const words = input[i].trim().split(' ');
        
        //진짜 생각지도 못한 구문. 간다한 로직이지만 배열함수 map을 이용해서 
        //간단하게 단어를 뒤집는 것을 보고. 완전깜짝 놀람. 
        //위 풀이 1코드에 비해 훨씬 깔끔함.
        result += words.map(rev).join(' ') + '\n'; 
    }
    console.log(result);
    

     

    풀이 3 (Python)

    input = ['I am happy today', 'We want to win the first prize']
    
    
    def rev(word):
        array = list(word)
        array.reverse()
        return ''.join(array)
    
    
    result = ''
    for i in range(2):
        result += f'{" ".join(map(rev, input[i].split()))}\n'
    
    print(result)
    

    파이썬 문법이 너무 생소하다. javascript로만 풀어보다가 파이썬 연습 겸 풀어보았는데, 비슷하면서도 다르네..

     

     

    '프로그래밍 > algorithm' 카테고리의 다른 글

    백준 - 2805(나무자르기) 이분탐색  (0) 2021.06.15
    백준 - 1011 (Fly me to the Alpha Centauri)  (0) 2021.06.14
    백준-1874(스택수열)  (0) 2021.06.07
    백준-9012번(괄호)  (0) 2021.06.04
    백준 - 10828번(스택)  (0) 2021.05.31
Designed by Tistory.