오늘은 단어 뒤집기2 문제를 풀어보았습니다.
이번 문제도 구현 문제 !!..
그래도 이번엔 쉽게 풀리긴 했는데... java 8로 하면 시간초과 뜨고 java 11로 하면 성공이 되는 매직을 보여준 문제였습니다.... 홍홍홍 .....
알고리즘 분류엔 스택을 쓰라고 되어있지만 보지 않고 풀어서 스택을 쓰지 않고 풀었답니다... 졍말 구현....
이제 구현 내용을 보도록 하겠습니다.
구현 내용
구현 문제 치고는 문제 길이가 길진 않습니다.
구현 방법
저는 태그를 시작하는지 여부를 비교하고 태그를 시작하지 않았다면 단어를 word = 새로들어온값 + word 이런 식으로 반대로 저장하고 띄워쓰기가 나오면 뒤집힌 단어를 원래 문장에 붙히면서 구현을 진행하였습니다.
3 조건에서 단어를 붙혀줘야합니다.
1. 띄워쓰기
2. 태그시작
3. 문장 끝
자세한 설명은 주석을 통해 하도록 하겠습니다.
↓↓↓↓↓↓↓↓↓↓↓↓ ↓↓↓↓↓↓↓↓↓↓↓↓↓↓ ↓↓↓↓↓↓↓↓↓↓↓↓↓
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.*;
public class Main{
public static void main(String[] args) throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
// 입력
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
// 출력
String result = "";
String word = "";
boolean open = false;
String str = br.readLine();
for(int i=0;i<str.length();i++){
char data = str.charAt(i);
if(data == '<') { //태그시작
if(word!=""){ //태그가 시작 됐는데 단어 값이 남아있으면 결과값에 붙이기
result+=word;
word="";
}
open = true; //태그시작 불린값
result+=String.valueOf(data); //결과에 넣기
continue;
}
else if(data == '>'){//태그종료
open = false; //태그시작 불린값
result+=String.valueOf(data);//결과에 넣기
continue;
}
else if(Character.isSpaceChar(data)&&!open){
//태그 종료 && 띄워쓰기면 저장된 단어 붙히기, 띄워쓰기 붙히기
result+=word;
result+=String.valueOf(data);
word = "";//단어 초기화
}
else if(!open){//태그가 열리지 않았으면
word = String.valueOf(data)+word;//단어값을 반대로 저장
}
else if(open){//태그가 열렸으면
result+=String.valueOf(data);//단어값 바르게 저장
}
if(i==str.length()-1&&word!=""){//모든 값이 나왔음에도 단어값이 남아 있으면
// 결과값에 붙히기
result+=word;
}
}
bw.write(result);
bw.flush();
}
}
'Study > CodingTest' 카테고리의 다른 글
[BOJ 2621] 카드게임 - JAVA (2) | 2022.09.25 |
---|---|
[BOJ 1388] 바닥 장식 - JAVA (0) | 2022.09.17 |
[BOJ 1966] 프린터 큐 - JAVA (0) | 2022.09.05 |
[BOJ 3986] 좋은 단어 - JAVA (0) | 2022.08.28 |
[BOJ 11000] 강의실 배정 - JAVA (0) | 2022.08.21 |