반응형
문제
설명
N개의 단어가 주어지면 각 단어를 뒤집어 출력하는 프로그램을 작성하세요.
입력
첫 줄에 자연수 N(3 <=N <=20)이 주어집니다.
두 번째 줄부터 N개의 단어가 각 줄에 하나씩 주어집니다. 단어는 영어 알파벳으로만 구성되어 있습니다.
출력
N개의 단어를 입력된 순서대로 한 줄에 하나씩 뒤집어서 출력합니다.
예시 입력 1
3
good
Time
Big
예시 출력 1
doog
emiT
giB
풀이
import java.util.ArrayList;
import java.util.Scanner;
public class JAVA1 {
public static ArrayList<String> solution(String[] s){
ArrayList<String> answer = new ArrayList<>();
for(String i:s){
String temp = new StringBuilder(i).reverse().toString();
answer.add(temp);
}
return answer;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
sc.nextLine();
String[] s = new String[n];
for(int i=0;i<n;i++){
s[i] = sc.nextLine();
}
for(String i:solution(s)){
System.out.println(i);
}
}
}
StringBuilder를 활용한 풀이이다.
풀다 보니 StringBuilder에 대해서 많이 까먹은 거 같아서 이것도 따로 포스팅해야겠다
두 번째 풀이
import java.util.ArrayList;
import java.util.Scanner;
public class JAVA1 {
public static ArrayList<String> solution(String[] s){
ArrayList<String> answer = new ArrayList<>();
for(String i:s){
char[] c = i.toCharArray();
int lt = 0;
int rt = c.length-1;
while(lt<rt){
char temp = c[lt];
c[lt] = c[rt];
c[rt] = temp;
lt++;
rt--;
}
answer.add(new String(c));
}
return answer;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
sc.nextLine();
String[] s = new String[n];
for(int i=0;i<n;i++){
s[i] = sc.nextLine();
}
for(String i:solution(s)){
System.out.println(i);
}
}
}
StringBuilder를 사용하지 않고 toCharArray로 String을 char 배열로 받아 각각의 index를 활용한 풀이이다.
첫 번째 문자에 lt, 마지막 문자에 rt를 넣고 각각 +1, -1을 하며 교환하는 방식이다.
lt가 rt보다 커진다면 배열의 중간을 넘어갔으므로 while문을 종료한다.
reverse() 함수를 직접 구현했다고 보면 되겠다!
반응형
'알고리즘 문제풀이' 카테고리의 다른 글
| [SWEA]1926. 간단한 369게임 (0) | 2025.04.28 |
|---|---|
| [SWEA]21425. += (0) | 2025.04.28 |
| 03. 문장 속 단어 (0) | 2025.04.24 |
| 02. 대소문자 변환 (0) | 2025.04.24 |
| 01. 문자 찾기 (0) | 2025.04.24 |