알고리즘
문자열.단어뒤집기
ultra_dev
2023. 1. 12. 01:31
4. 단어 뒤집기
설명
N개의 단어가 주어지면 각 단어를 뒤집어 출력하는 프로그램을 작성하세요.
입력
첫 줄에 자연수 N(3<=N<=20)이 주어집니다.
두 번째 줄부터 N개의 단어가 각 줄에 하나씩 주어집니다. 단어는 영어 알파벳으로만 구성되어 있습니다.
출력
N개의 단어를 입력된 순서대로 한 줄에 하나씩 뒤집어서 출력합니다.
예시 입력 1
3
good
Time
Big
예시 출력 1
doog
emiT
giB
📌 StringBuilder().reverse().toString(); 활용
import java.util.ArrayList;
import java.util.Scanner;
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();
//StringBuilder의 기능들 알아보기 ! 그 후 String으로 다시 변환
//String은 수정 추가 이런거 불가. 아예 새로운 객체를 만들어버림
//하지만 StringBuilder는 동일 객체로 이것저것 다 가능!
//따라서 메모리나 무게 면에서 이득! 나중에 toString으로 String화 시키면 됨
answer.add(tmp);
}
return answer;
}
public static void main(String[] args){
Main T = new Main();
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
String[] str = new String[n];
for(int i = 0; i<n; i++){
str[i] = sc.next();
}
for(String y : T.solution(n, str)){
System.out.println(y);
}
}
}
📌 .toCharArray();
- lt,rt 개념 활용 → while(lt<rt)
import java.util.ArrayList;
import java.util.Scanner;
class Main{
public ArrayList<String> solution(int n, String[] str) {
ArrayList<String> answer = new ArrayList<>();
for(String x : str){
char[] s = x.toCharArray(); //x에 있는 걸 글자별로 끊어서 배열 만들어주는!!
//study라고 치면 01234 순서고. lt(왼쪽끝)이 0번 s, rt(오른쪽끝)은 4번 y
//이렇게 양끝을 계속 바꿔가는 것. 0과4 이후 1,3이 (lt,rt)고 또 바꾸고 하나 남은건 중앙이니 안바꾸는 것
int lt = 0, rt = x.length()-1;
⭐ while(lt<rt){ //<- 마지막에 가운데쯤 바꾸면 lt>rt상태일테니 거짓이되는 것
char tmp = s[lt];
s[lt]=s[rt];
s[rt]=tmp;
lt ++;
rt --; ⭐
} ///11~17번째까지 알고리즘정도는 숙지해놔야 함!!!
String tmp = String.valueOf(s);
//valueOf는 static으로 선언된 메소드라 String 클래스.valueOf()로 실행 가능
//String화 시켜 주는!
answer.add(tmp);
}
return answer;
}
public static void main(String[] args){
Main T = new Main();
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
String[] str = new String[n];
for(int i = 0; i<n; i++){
str[i] = sc.next();
}
for(String y : T.solution(n, str)){
System.out.println(y);
}
}
}