728x90
https://www.acmicpc.net/problem/17413
1. 문제 설명
문자열 S가 주어졌을 때, 이 문자열에서 단어만 뒤집어서 출력한다.
2. 풀이
문자열 S를 구분하자면 다음과 같다.
- 단어
- 태그
- 공백
공백과 태그 안의 경우 그대로 문자열을 출력해주어야 하고, 단어의 경우에는 뒤집어서 출력해야 한다.
따라서 태그 안인지 확인하는 변수를 두어서
태그 안이거나 공백이면 그대로 출력하고
단어이면 단어 끝까지 길이를 확인하고, 거꾸로 sb에 저장해주었다.
3. 코드
// JAVA 11, 시간 : 224ms , 메모리 : 18784KB
import java.io.*;
import java.nio.Buffer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
String input = br.readLine();
int inputLength = input.length();
boolean tag=false;
for (int x = 0; x < inputLength; x++) {
if(input.charAt(x)=='<'){
// tag 시작
tag=true;
sb.append('<');
}else if(input.charAt(x)=='>'){
// tag 끝
tag=false;
sb.append('>');
}else if(tag || input.charAt(x)==' '){
// tag 안이거나 공백일 경우
sb.append(input.charAt(x));
}else{
// 단어 일 경우 -> 뒤집어야 한다.
int idx=x;
// 단어 끝까지 길이 확인
while(idx<inputLength && (input.charAt(idx)!=' ' && input.charAt(idx)!='<')){
idx++;
}
// 거꾸로 저장
for(int y=idx-1;y>=x;y--){
sb.append(input.charAt(y));
}
x=idx-1;
}
}
System.out.println(sb);
}
}
728x90
'알고리즘' 카테고리의 다른 글
[JAVA]백준 12919번: A와 B 2 (0) | 2021.08.24 |
---|---|
[JAVA]백준 16928번: 뱀과 사다리 게임 (0) | 2021.08.23 |
[JAVA]백준 13699번: 점화식 (0) | 2021.08.23 |
[JAVA]백준 20207번: 달력 (0) | 2021.08.19 |
[JAVA]백준 15654번: N과 M(5) (0) | 2021.08.18 |