거꾸로 출력하기

최준호·2021년 8월 3일
0

알고리즘 강의

목록 보기
1/79

설명

알고리즘 초급 문제를 보면 거꾸로 출력하기 문제가 상당히 기본 문제로 출제된다.

문자열의 경우 StringBuilder의 reverse()를 통해 쉽게 문제를 풀이할 수 있지만 항상 문자열만 거꾸로 출력하라는 경우가 없을 수도 있고 배열 자체를 거꾸로 뒤짚어야할 경우도 있다.

그래서 두가지 방법 모두 풀어보려고 한다.

코드

  1. StringBuilder를 이용한 방법
public class ReverseWord {
    //1. StringBuilder reverse를 이용하는 방법
    public static void main(String[] args){
        Scanner in=new Scanner(System.in);
        int input1 = in.nextInt();
        for(int i=0; i<input1; i++){
            String input2 = in.next();
            StringBuilder sb = new StringBuilder(input2);
            System.out.println(sb.reverse().toString());
        }
    }
}

StringBuilder의 Reverse로 입력 받은 문자열을 간단하게 뒤집었다.

  1. 직접 revese 알고리즘 구현
public class ReverseWord {
    //2. 직접 reverse를 구현
    public static void main(String[] args) {
        Scanner in=new Scanner(System.in);
        int input1 = in.nextInt();
        for(int i=0; i<input1; i++){
            String str = in.next();
            char[] chars = str.toCharArray();
            int start = 0;
            int end = chars.length-1;
            while(start<end){
                char temp = chars[start];
                chars[start] = chars[end];
                chars[end] = temp;

                start++;
                end--;
            }
            System.out.println("new String(chars) = " + new String(chars));
        }
    }
}

swap을 통해 배열의 위치를 바꾸는 방식을 이용하여 배열의 시작과 끝부터 각 앞뒤로 한칸씩 자리 바꾸기를 하며 중간 지점에서 종료되는 알고리즘 입니다.

간단한 알고리즘이지만 기억하자
Reverse는

int start = 0;
int end = chars.length-1;
while(start<end){
	char temp = chars[start];
	chars[start] = chars[end];
	chars[end] = temp;
	start++;
	end--;
}
profile
코딩을 깔끔하게 하고 싶어하는 초보 개발자 (편하게 글을 쓰기위해 반말체를 사용하고 있습니다! 양해 부탁드려요!) 현재 KakaoVX 근무중입니다!

0개의 댓글