본문으로 바로가기
728x90
반응형

▷ 문제

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

* 입력

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

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

* 출력

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

▷ 입력 예시

3

good

Time

Big

▷ 출력 예시

doog

emiT

giB

▷ 풀이

1. reverse 직접 구현 - 이중 for문 사용

import java.util.Scanner;

public class Main {
    public String[] solution(String[] arr){
        String[] answer = new String[arr.length];

        for (int i = 0; i < arr.length; i++) {
            char[] cArr = arr[i].toCharArray();
            String tmp = "";
            for (int j = cArr.length-1 ; j >= 0; j--) {
                tmp += cArr[j];
            }
            answer[i] = tmp;
        }

        return answer;
    }

    public static void main(String[] args) {
        Main main = new Main();
        Scanner kb = new Scanner(System.in);
        int n = kb.nextInt();
        String[] arr = new String[n];

        for (int i = 0; i < n; i++) {
            arr[i] = kb.next();
        }

        for (String x : main.solution(arr)) {
            System.out.println(x);
        }
    }
}

 

2. reverse 직접 구현 - temp 변수를 이용한 순서 바꾸기

import java.util.*;

public class Main {
    public List<String> solution(int n, String[] arr){
        List<String> answer = new ArrayList<String>();

        for(String x : arr){
            char[] cArr = x.toCharArray();
            int lt = 0, rt = x.length() - 1;
            while (lt < rt) {
                char tmp = cArr[lt];
                cArr[lt] = cArr[rt];
                cArr[rt] = tmp;
                lt++;
                rt--;
            }
            String tmp = String.valueOf(cArr);
            answer.add(tmp);
        }

        return answer;
    }

    public static void main(String[] args) {
        Main main = new Main();
        Scanner kb = new Scanner(System.in);
        int n = kb.nextInt();
        String[] arr = new String[n];

        for (int i = 0; i < n; i++) {
            arr[i] = kb.next();
        }

        for (String x : main.solution(n, arr)) {
            System.out.println(x);
        }
    }
}

 

3. StringBuilder의 reverse메소드 사용

import java.util.*;

public class Main {
    public List<String> solution(int n, String[] arr){
        List<String> answer = new ArrayList<String>();
        for (String x : arr) {
            String tmp = new StringBuilder(x).reverse().toString();
            answer.add(tmp);
        }

        return answer;
    }

    public static void main(String[] args) {
        Main main = new Main();
        Scanner kb = new Scanner(System.in);
        int n = kb.nextInt();
        String[] arr = new String[n];

        for (int i = 0; i < n; i++) {
            arr[i] = kb.next();
        }

        for (String x : main.solution(n, arr)) {
            System.out.println(x);
        }
    }
}

▷ 핵심 키워드

1. StringBuilder의 reverse 메소드를 사용하여 문자열을 뒤집을 수 있습니다.

2. temp 변수를 이용하여 reverse를 구현할 수 있습니다.

반응형