본문 바로가기
👩‍💻 Programming/Coding Test 문제 풀이

[Baekjoon] 9093 단어 뒤집기(파이썬/자바스크립트/NodeJS)

by codingBear 2022. 12. 21.
728x90
반응형

이번 문제는 아래 링크에서 풀어볼 수 있습니다.

 

9093번: 단어 뒤집기

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

www.acmicpc.net


문제

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

입력

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

출력

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

예제 입력 1

2
I am happy today
We want to win the first prize

예제 출력 1 

I ma yppah yadot
eW tnaw ot niw eht tsrif ezirp

정답 코드

나의 풀이
import sys

n = int(sys.stdin.readline().rstrip())

for _ in range(n):
    result = ""
    for s in sys.stdin.readline().split():
        # 방법 1
        reversed = ""
        for c in s:
            reversed = c + reversed
        result += reversed + " "

        # 방법 2
        # result += "".join(reversed(s)) + " "

        # 방법 3
        # for c in reversed(s):
        # result += c

        # 방법 4
        # for i in range(len(s) - 1, -1, -1):
        # result += s[i]
    # result += " "
    print(result)
모범 답안
import sys

n = int(sys.stdin.readline().rstrip())

for _ in range(n):
    words = sys.stdin.readline().rstrip().split()

    for word in words:
        # print(word[::-1], end=' ') # 단어 뒤집고 끝 값을 end로써 개행문자 -> 공백으로 처리
        print("".join(reversed(word)), end=" ")
    print()  # 한 문장 끝나면 행갈이
자바스크립트/NodeJS 풀이 모음
const fs = require('fs');
const filePath = process.platform === 'linux' ? '/dev/stdin' : './input.txt';
let input = fs.readFileSync(filePath).toString().trim().split('\n');

const n = parseInt(input[0]);
const data = input.splice(1).map((val) => val.trim());

const solution1 = (n, data) => {
    for (let i of data) {
        let result = '';
        for (let j of i.split(' ')) {
            let reversed = '';
            for (let k of j) {
                reversed = k + reversed;
            }
            result += reversed + ' ';
        }
        console.log(result);
    }
};

console.log('solution1');
solution1(n, data);

const solution2 = (n, data) => {
    for (let i of data) {
        let result = '';
        for (let j of i.split(' ')) {
            result += j.split('').reverse().join('') + ' ';
        }
        console.log(result);
    }
};

console.log('solution2');
solution2(n, data);

const solution3 = (n, data) => {
    for (let i of data) {
        let result = '';
        for (let j of i.split(' ')) {
            for (let k of j.split('').reverse()) {
                result += k;
            }
            result += ' ';
        }
        console.log(result);
    }
};

console.log('solution3');
solution3(n, data);

const solution4 = (n, data) => {
    for (let i of data) {
        let result = '';
        for (let j of i.split(' ')) {
            for (let k = j.length - 1; k >= 0; k -= 1) {
                result += j[k];
            }
            result += ' ';
        }
        console.log(result);
    }
};

console.log('solution4');
solution4(n, data);

문제 풀이

 파이썬으로 문자열을 뒤집는 다양한 방법에 대해 학습할 수 있는 문제이다. 방법이야 어찌됐든 반복문으로 입력값을 탐색하며 탐색하는 단어를 뒤집어서 반환하면 되는 문제이다.

 문자열을 뒤집는 데 활용한 다양한 방법 및 메서드에 대한 설명은 아래 함께 보기란의 링크를 참조하면 된다.


함께 보기

join()

 

파이썬 join() - 제타위키

다음 문자열 포함...

zetawiki.com

 

reversed(), slicing, reverse() 등

 

파이썬의 reversed() 함수로 거꾸로 루프 돌리기 (vs. slicing 연산자 & reverse() 함수)

Engineering Blog by Dale Seo

www.daleseo.com

 

728x90
반응형

댓글