9093/단어 뒤집기
문제
문장이 주어졌을 때, 단어를 모두 뒤집어서 출력하는 프로그램을 작성하시오. 단, 단어의 순서는 바꿀 수 없다. 단어는 영어 알파벳으로만 이루어져 있다.
입력
첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 문장이 하나 주어진다. 단어의 길이는 최대 20, 문장의 길이는 최대 1000이다. 단어와 단어 사이에는 공백이 하나 있다.
출력
각 테스트 케이스에 대해서, 입력으로 주어진 문장의 단어를 모두 뒤집어 출력한다.
풀이
java.util에서 제공하는 함수들을 쓰면 쉽게 해결될 것 같았다. Collections.reverse()나 str.split()을 써서 쉽게 해결하였다. java.util로 짜는게 시간이나 메모리를 덜 잡아먹을 거라고 생각했다. 하지만 다른사람들이 문제를 푼 것과 배교해서 시간은 3~4배, 메모리는 10배 정도 더 잡아먹었다. 그냥 간단하게 내가 로직을 작성해서 문제를 해결할 수 있는 경우라면 직접 로직을 짜는게 시간이나 메모리를 고려했을 때 더 빠를 것 같다. 너무 java.util만 맹신하면 안되겠다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int t;
String str;
StringBuilder sb = new StringBuilder();
t = Integer.parseInt(br.readLine());
for(int i = 0; i<t;i++){
str = br.readLine();
String[] words = str.split(" ");
for(int j = 0; j<words.length;j++){
List<String> wordList = Arrays.asList(words[j].split(""));
Collections.reverse(wordList);
String[] word = wordList.toArray(new String[wordList.size()]);
for(int k = 0; k< word.length;k++){
sb.append(word[k]);
}
sb.append(" ");
}
sb.append("\n");
}
System.out.println(sb.toString());
}
}
Author And Source
이 문제에 관하여(9093/단어 뒤집기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@maxxyoung/9093단어-뒤집기저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)