728x90

 

 

단어 뒤집기

 

설명

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

 

 

입력

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

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

 

 

출력

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

 

 

예시 입력

3
good
Time
Big

 

 

예시 출력

doog
emiT
giB

 

 

풀이

 

1. StringBuilder 이용하기

  • StringBuilder로 문자열을 생성할 수 있다.
  • StringBuilder의 reverse() 로 문자열을 뒤집는다.

 

 

2. 직접 뒤집기

  • 입력받은 문자열 배열을 for-each문을 이용해 돈다. 
  • 하나의 문자열을 문자 배열로 만든다. String의 toCharArray() 메소드를 이용한다.
  • 왼쪽 끝의 위치를 가리키는 lt, 오른쪽 끝의 위치를 기리키는 rt 변수를 정의한다.
  • 왼쪽 위치가 오른쪽 위치보다 커질 때 까지 아래 로직을 반복한다.
    • tmp 변수에 왼쪽 끝의 문자를 저장한다.
    • 왼쪽 끝의 문자에 오른쪽 끝의 문자를 대입한다.
    • 오른쪽 끝의 문자에 tmp 변수를 대입한다.
    • 왼쪽 끝의 인덱스를 증가시킨다.
    • 오른쪽 끝의 인덱스를 감소시킨다.
  • 문자 배열을 문자열로 만든다. String 클래스의 valueOf() 메소드를 이용한다.
  • 해당 문자열을 리스트에 추가한다.

 

코드

 

1. StringBuilder 이용하기

package solve;
import java.util.ArrayList;
import java.util.Scanner;
public class Main_1_4 {
public ArrayList<String> solution(int n, String[] str) {
ArrayList<String> answer = new ArrayList<>();
for(String s : str) {
String tmp = new StringBuilder(s).reverse().toString();
answer.add(tmp);
}
return answer;
}
public static void main(String[] args){
Main_1_4 T = new Main_1_4();
Scanner in=new Scanner(System.in);
int n = in.nextInt();
String[] str = new String[n];
for(int i = 0; i <n; i++) {
str[i] = in.next();
}
for(String x : T.solution(n, str)) {
System.out.println(x);
}
}
}

 

 

2. 직접 뒤집기

package solve;
import java.util.ArrayList;
import java.util.Scanner;
public class Main_1_4 {
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;
// lt는 왼쪽 끝을, rt는 오른쪽 끝을 가르키고, 서로 교환, 하나씩 증가, 감소
// lt < rt while문
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_1_4 T = new Main_1_4();
Scanner in=new Scanner(System.in);
int n = in.nextInt();
String[] str = new String[n];
for(int i = 0; i <n; i++) {
str[i] = in.next();
}
for(String x : T.solution(n, str)) {
System.out.println(x);
}
}
}
728x90

'Coding Test Inflearn' 카테고리의 다른 글

[String] 중복 문자 제거  (0) 2024.01.27
[String] 특정 문자 뒤집기  (0) 2024.01.27
[String] 문장 속 단어  (2) 2024.01.26
[String] 대소문자 변환  (0) 2024.01.24
[String] 문자 찾기  (4) 2024.01.22