단어 뒤집기 (StringBuilder)

Seungmin Lim·2022년 2월 4일
0

코딩문제연습

목록 보기
4/63

문제

나의풀이

import java.util.*;

class Main {
	public ArrayList<String> solution(int n, String[] str) {
		ArrayList<String> answer = new ArrayList<>();
		//StringBuilder 이용
		for (String x : str) {
			String a = new StringBuilder(x).reverse().toString();
			answer.add(a);
		}
		//직접 뒤집기 left와 right를 증가,감소
		for(String x : str) {
			char[] b = x.toCharArray();
			int lt = 0,rt = x.length()-1;
			while(lt < rt) {
				char tmp = b[lt]; //lt값 저장
				b[lt] = b[rt];
				b[rt] = tmp;
				lt++;
				rt--;
			}
			String tmp = String.valueOf(b);
			answer.add(tmp);
		}
		return answer;
    }
	
	public static void main(String[] args) {
		Main T = new Main();
		Scanner kb = new Scanner(System.in);
		int n = kb.nextInt();
		String[] str = new String[n];
		for(int i = 0; i<n; i++) {
			str[i] = kb.next();
		}
		for(String x : T.solution(n, str)) {
			System.out.println(x);
		}
	}
	
}

풀이방법

  1. StringBuilder 객체를 이용하여 뒤집기.
    new StringBuilder(x)의 reverse메소드를 통해 뒤집은 후,
    toString을 이용해 String으로 a 라는 값에 저장해준다.
    String a = new StringBuilder(x).reverse().toString();
  1. 직접뒤집기
    S T U D Y 라는 단어가 있을때, 시작점 S를 lt, 끝 Y를 rt로 두고,
    S와Y를 서로 뒤집고 한칸씩 땡겨서,
    T와D를 뒤집고를 반복해, lt가 rt를 앞지르는 순간 while문이 종료된다.

핵심키워드

new StringBuilder(x).reverse().toString();
StringBuilder라는 객체가 있다는 것을 알아두자!

String k = String.valueOf(a); //valueOf는 static이므로 객체생성이 필요없다.
char[] a = ['a','b','c','d']; 이라면 k = "abcd";
valueOf 메소드를 통해 charArray를 String으로 변환가능하다!

0개의 댓글