[Algorithm] 단어 뒤집기

19·2022년 10월 13일
0

Algorithm

목록 보기
15/28

단어 뒤집기

설명

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

입력

첫 줄에 자연수 N(3<=N<=20)이 주어집니다.
두 번째 줄부터 N개의 단어가 각 줄에 하나씩 주어집니다. 단어는 영어 알파벳으로만 구성되어 있습니다.

출력

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

예시 입력 1

3
good
Time
Big

예시 출력 1

doog
emiT
giB



해결

package algorithm.string;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;

public class StringEx_4 {
    public ArrayList<String> solution(int N, String[] str) {
        ArrayList<String> answer = new ArrayList<>();
        // StringBuilder 활용하기
//        for (String s : str) {
//            // StringBuilder를 활용해 문자열을 뒤집는다
//            String tmp = new StringBuilder(s).reverse().toString();
//            answer.add(tmp);
//        }

        // 직접 바꾸기
        for (String s : str) {
            char[] ch = s.toCharArray();
            // 배열 인덱스
            int lt = 0, rt = s.length()-1;
            while (lt < rt) {
                char tmp = ch[lt];
                ch[lt] = ch[rt];
                ch[rt] = tmp;
                lt++;
                rt--;
            }
            String tmp = String.valueOf(ch);
            answer.add(tmp);

        }
        return answer;
    }

    public static void main(String[] args) throws IOException {
        StringEx_4 T = new StringEx_4();
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        // 입력, 수/단어
        int N = Integer.parseInt(br.readLine());
        String[] str = new String[N];
        for(int i=0; i<str.length; i++) {
            str[i] = br.readLine();
        }
        for (String s : T.solution(N, str)) {
            System.out.println(s);
        }
    }
}
  • StringBuilder의 reverse()로 풀거나, 직접 문자 하나씩 바꿔가며 풀 수 있었다.
  • String은 불변객체이기 때문에, 수정할 수 없는데, StringBuilder를 사용하면 바꿀 수 있다.
    • reverse()메소드를 사용해 문자열을 쉽게 뒤집을 수 있다.
  • String을 char배열로 바꾼다음, 하나씩 뒤집을 수도 있다.
    • 생소했던 방식

StringBuilder의 사용 예시를 통해 익숙해질 수 있었고, toCharArray()를 통해 char 배열로 만들고, 하나씩 뒤집어가는 방법도 익혔다.

profile
하나씩 차근차근

0개의 댓글