> 4. 단어 뒤집기
N개의 단어가 주어지면 각 단어를 뒤집어 출력하는 프로그램을 작성하세요.
첫 줄에 자연수 N(3<=N<=20)이 주어집니다.
두 번째 줄부터 N개의 단어가 각 줄에 하나씩 주어집니다. 단어는 영어 알파벳으로만 구성되어 있습니다.
N개의 단어를 입력된 순서대로 한 줄에 하나씩 뒤집어서 출력합니다.
===================================================
단어를 뒤집는 알고리즘은 두 가지의 방법으로 해결할 수 있다.
(1) StringBuilder().reverse().toString()를 이용하는 방법
리스트를 이용하여 답을 저장하고 반환하고 for-each문을 통하여 배열에 있는 단어들을 뒤집고 add를 이용하여 리스트에 추가하고 반환한다.
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);
}
}
}
(2) 길이를 이용하여 직접 하나씩 바꾸기
for-each문을 이용하여 단어를 받고 char 배열로 저장하고 직접 뒤집어 add()를 이용하여 리스트에 추가하고 반환하여 준다.
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);
}
}
}
1) List
2) StringBuffer
3) char배열을 String으로 저장