https://www.acmicpc.net/problem/4740
거울, 오! 거울
1 초 | 128 MB | 2224 | 1272 | 1151 | 61.354% |
문제
근하와 세용이는 주차장에서 자신들의 차 뒤에 주차된 구급차에 쓰여있는 ECNALUBMA라는 알 수없는 글자를 보고 갸우뚱하였다. 그리고 그들이 차에 탄 뒤 백미러를 통해 보고서야 그 글자가 AMBULANCE라는 것이였음을 알고는 웃음을 참을 수 없었다.
근하와 세용이는 뒤늦게서야 각각의 문자의 위치가 거꾸로 되어버린 이 글자들을 자신들도 모르는 사이에 머릿속에서 올바른 글자가 되도록 수정작업을 하며 애를 쓰고 있었음을 깨달았다.
이 경험을 통해 흥미를 가지게 된 근하와 세용이는, 문장을 입력하면 입력한 문장의 개별 단어들을 역순으로 배치하여 거꾸로 바뀐 문장을 출력하는 프로그램을 만들어 '거울 읽기' 연습을 하려고 마음먹었다.
입력
하나 또는 그 이상의 줄에 각각 ASCII 글자로 나타낼 수 있는 단어들(알파벳, 숫자, 공백, 구두점 등)로 구성된 문장을 입력한다.
각 문장은 최소 1글자에서 최대 80글자로 이루어져 있으며, ***을 입력하면 프로그램이 종료된다.
출력
한 문장의 입력이 끝난 뒤 바로 입력한 문장의 글자들이 역순으로 바뀌어 배치된 문장을 출력한다.
예제 입력 1
ECNALUBMA
naivE
mada m'i ,madam
예제 출력 1
AMBULANCE Evian madam, i'm adam ***
풀이 : 문자열을 뒤집는 문제.
메소드 없이 for문으로 문자열을 받아 거꾸로 출력하는 방법,
그리고 StringBuffer 클래스의 reverse() 메소드를 이용하여 출력하는 방법 두 가지를 사용했다.
다음과 같이 StringBuffer를 사용하여 푼 것이 속도가 30초 정도 빠르다!
>> StringBuffer 클래스의 reverse() 메소드를 사용한 풀이
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
// 백준 4740. 거울, 오! 거울
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
while (true) {
String s = br.readLine();
if ("***".equals(s)) break;
StringBuffer sb = new StringBuffer(s); // 문자열 그대로 받기
System.out.println(sb.reverse()); // reverse() 메소드 사용
}
}
}
>> for문 이용 풀이
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
// 백준 4740. 거울, 오! 거울
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
while (true){
String s = br.readLine();
if("***".equals(s)) break;
String reverse = "";
for(int i=s.length()-1; i>=0; i--){
reverse = reverse + s.charAt(i);
}
System.out.println(reverse);
}
}
}
'알고리즘 문제풀이 > Beakjoon' 카테고리의 다른 글
백준 10813. 공 바꾸기(Java) (0) | 2023.09.13 |
---|---|
백준 5356. Triangles (Java) (0) | 2023.07.22 |
백준 21312. 홀짝 칵테일 (JAVA) (0) | 2023.04.08 |
백준 5768. Divide and Conquer (JAVA) (0) | 2023.03.31 |
백준 5220. Error Detection (JAVA) (0) | 2023.03.30 |