1-4 단어 뒤집기 (Java)

정우·2022년 9월 24일

✏️ 문제


설명

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

입력

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

출력

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


✏️ 코드

import java.util.Scanner;

class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();
        
        String [] strArr = new String[N];
        
        for (int i=0; i<N; i++) {
            strArr[i] = sc.next();
        }
        
        for (int j=0; j<strArr.length; j++) {
            char[] charArr = strArr[j].toCharArray();
            for (int k=charArr.length-1; k>=0; k--) {
                System.out.print(charArr[k]);
            }
            System.out.println();
        }  
    }
}

strArr은 입력받은 숫자만큼의 크기인 배열로 생성하고 단어들을 하나씩 추가해준다.

strArr에 있는 단어 하나씩 charArr이라는 char배열에 담고 char배열의 마지막부터 처음까지 역순으로 문자를 출력하는 형식으로
코드를 작성했다.

✏️ 다른 코드

import java.util.Scanner;

class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();
        
        String [] strArr = new String[N];
        
        for (int i=0; i<N; i++) {
            strArr[i] = sc.next();
        }
        
        for (String s : strArr) {
            char[] charArr = s.toCharArray();
            int lt = 0;
            int rt = s.length() - 1;
            
            while (lt < rt) {
                //교환
                char tmp = charArr[lt];
                charArr[lt] = charArr[rt];
                charArr[rt] = tmp;
                lt++;
                rt--;
            }
            String string = String.valueOf(charArr);
            System.out.println(string);
        }
    }
}

첫번째 코드에서는 이중 for문을 사용해서 시간 복잡도가 증가했다.

이 코드에서는 이중 for문을 사용하지 않고 다르게 풀어봤다.

strArr에 들어있는 단어마다 char배열로 바꾸어주고

int형 변수 lt, rt를 생성했다. lt는 단어의 맨 앞부터, rt는 맨 뒤부터 시작하며

lt와 rt의 문자를 교환해준다.

그리고 lt++ 와 rt--를 통해서 서로 하나씩 줄어드는데

lt의 값이 rt보다 커지면 바꿀 이유가 없어지기 때문에 while (lt < rt)로 while문을 만들어준다.


✏️ 정리

String.valueOf(charArr) : Object을 String 형태로 반환

String.valueOf() vs toString() : 둘다 String 형태로 반환하지만, valueOf()는 null일시 'null' 문자열을 반환하지만 .toString()은 NullPointer Exception을 발생시킨다.

profile
That's it

0개의 댓글