오늘보다 더 나은 내일의 나에게_

자바 알고리즘 문제 풀이 String Q04_단어 뒤집기 본문

ALGORITHM/inflearn_javaAlgorithm

자바 알고리즘 문제 풀이 String Q04_단어 뒤집기

chan_96 2022. 1. 23. 15:05
728x90
설명

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


입력

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

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


출력

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



예시 입력1


예시 출력

3
good
Time
Big
doog
emiT
giB

 

코드

내가 입력한 코드

package String;

import java.util.Scanner;

public class Q04 {
	public void solution(int N) {
		StringBuilder[] answer = new StringBuilder[N];
		StringBuilder[] str = new StringBuilder[N];
		Scanner kb = new Scanner(System.in);

		for (int i = 0; i < N; i++) {
			str[i] = new StringBuilder();
			String tmp = kb.next();
			str[i].append(tmp);
		}

		for (int i = 0; i < N; i++) {
			answer[i] = new StringBuilder();
			answer[i] = str[i].reverse();
			System.out.println(answer[i]);
		}

	}

	public static void main(String[] args) {
		Q04 T = new Q04();
		Scanner kb = new Scanner(System.in);
		int N = kb.nextInt();

		T.solution(N);
	}
}

 




해설 코드

import java.util.*;
class Main {	
	public ArrayList<String> solution(int n, String[] str){
		ArrayList<String> answer=new ArrayList<>(); 
		for(String x : str){
			String tmp=new StringBuilder(x).reverse().toString();
			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);
		}
	}
}

 

import java.util.*;
class Main {	
	public ArrayList<String> solution(int n, String[] str){
		ArrayList<String> answer=new ArrayList<>(); 
		for(String x : str){
			char[] s=x.toCharArray();
			int lt=0, rt=x.length()-1;
			while(lt<rt){
				char tmp=s[lt];
				s[lt]=s[rt];
				s[rt]=tmp;
				lt++;
				rt--;
			}
			String tmp=String.valueOf(s);
			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);
		}
	}
}

 

 

풀이 및 정리 

정답은 맞춘 듯 하지만 컴파일 오류로 채점 불가.. 효율적이지 못한 방법인듯하다.

- 첫 번째 풀이 방법은 거의 비슷하게 작성했었지만, 출력이 안돼서 현재 작성한 코드로 바꿨었다.
- reverse( ) 메소드는 문자열을 거꾸로 반환시켜준다.

=> toCharArray( )는 문자열을 문자 배열로 반환시켜준다. 


toString( )과 String.valueOf( )의 차이점
=> null 값의 출력 유 무, toString은 null을 출력할 수 없다.

 

728x90
Comments