코딩테스트

[인프런 자바 알고리즘 문제풀이] 4. 단어 뒤집기

셩리둥절 2022. 9. 21. 00:47
반응형

설명

N개의 단어가 주어지면 각 단어를 뒤집어 출력하는 프로그램을 작성하시오.

입력

첫 줄에 자연수 N(3 <= N <= 20 )이 주어집니다.

두 번째 줄부터 N개의 단어가 각 줄에 하나씩 주어집니다. 단어는 영어 알파벳으로만 구성되어 있습니다.

출력

N개의 단어를 입력된 순서대로 한 줄에 하나씩 뒤집어서 출력합니다.

 

예시 입력

3
apple
banana
cherry

예시 출력

elppa
ananab
yrrehe

내 정답

import java.util.ArrayList;
import java.util.Scanner;

public class Main {
    public void solution(ArrayList<String> wordList) {
        String answer = "";
        for(String x : wordList) {
            StringBuilder sb = new StringBuilder();
            String reverseWord = sb.append(x).reverse().toString();
            System.out.println(reverseWord);
        }
    }

    public static void main(String[] args) {
        Main C = new Main();
        Scanner sc = new Scanner(System.in);
        ArrayList<String> wordList = new ArrayList<>();
        int num = sc.nextInt();
        for(int i = 0; i < num; i++) {
            String word = sc.next();
            wordList.add(word);
        }
        C.solution(wordList);
    }
}

정답 1 - StringBuilder reverse 사용

import java.util.ArrayList;
import java.util.Scanner;

public class Main {
    public ArrayList<String> solution(String[] strArray) {
        ArrayList<String> answer = new ArrayList<>();
        for(String x : strArray) {
            String tmp = new StringBuilder(x).reverse().toString();
            answer.add(tmp);
        }
        return answer;
    }

    public static void main(String[] args) {
        Main C = new Main();
        Scanner sc = new Scanner(System.in);
        int num = sc.nextInt();
        String[] strArray = new String[num];
        for(int i = 0; i < num; i++) {
            strArray[i] = sc.next();
        }
        for(String x : C.solution(strArray)) {
            System.out.println(x);
        }
    }
}

정답 2

import java.util.ArrayList;
import java.util.Scanner;

public class Main {
    public ArrayList<String> solution(String[] strArray) {
        ArrayList<String> answer = new ArrayList<>();
        for(String x : strArray) {
            char[] chArray = x.toCharArray();       //문자 배열화
            int leftIndex = 0;
            int rightIndex = x.length() - 1;
            while(leftIndex < rightIndex) {
                char tmp = chArray[leftIndex];
                chArray[leftIndex] = chArray[rightIndex];
                chArray[rightIndex] = tmp;
                leftIndex++;
                rightIndex--;
            }
            String tmp = String.valueOf(chArray);
            answer.add(tmp);
        }
        return answer;
    }

    public static void main(String[] args) {
        Main C = new Main();
        Scanner sc = new Scanner(System.in);
        int num = sc.nextInt();
        String[] strArray = new String[num];
        for(int i = 0; i < num; i++) {
            strArray[i] = sc.next();
        }
        for(String x : C.solution(strArray)) {
            System.out.println(x);
        }
    }
}
반응형