티스토리 뷰
[BJ] 17413. 단어 뒤집기2
1. StringBuilder
의 메소드 이용
- charAt(idx)
, substring(start, end)
, reverse()
, replace(start, end, newStr)
import java.io.*;
import java.util.*;
// 210226
// https://www.acmicpc.net/problem/17413
public class Main_BJ_17413_단어뒤집기2_2 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
StringBuilder sb = new StringBuilder();
sb.append(sc.nextLine());
for(int i=0; i<sb.length(); i++) {
if(sb.charAt(i)==' ') continue;
if(sb.charAt(i)=='<') {
for(int j=i+1; j<sb.length(); j++) {
if(sb.charAt(j)=='>') {
i=j; break;
}
}
} else { // 문자는 뒤집는다.
for(int j=i+1; j<sb.length(); j++) {
if(sb.charAt(j)=='<' || sb.charAt(j)==' ' || j==sb.length()-1) {
if(j==sb.length()-1) ++j;
StringBuilder origin = new StringBuilder();
origin.append(sb.substring(i, j));
origin.reverse();
sb.replace(i, j, origin.toString());
i=(j-1); break;
// substring(i, j)과 replace(i, j, str) 모두 i<= x <j인 범위에서 메소드를 수행하지만
// for을 돌 때 마다 i++되기 때문에, i가 두번 커지지 않도록 i를 j-1로 만들어야 한다.
// 즉, i의 위치를 검사할 다음 위치 이전으로 만든다.
}
}
}
} // for
System.out.println(sb.toString());
sc.close();
} //
}
2. swap()
함수 구현 후 이용
import java.io.*;
import java.util.*;
// 210214
public class Main_BJ_17413_단어뒤집기2 {
static char[] arr;
static void swap(int i, int j) {
char tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
}
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
arr = br.readLine().toCharArray();
for(int i=0; i<arr.length; i++) {
if (arr[i] == ' ') continue;
if (arr[i] =='<') {
int j = i+1;
for(; j<arr.length;j++) {
if (arr[j]=='>') break;
}
i = j;
} else {
int j = i+1;
for(; j<arr.length;j++) {
if (arr[j]==' ' || arr[j]=='<') break;
}
j-=1;
for(int k=0; k<=(j-i)/2; k++) {
swap(i+k, j-k);
}
i = j;
}
}
StringBuilder sb = new StringBuilder();
for(int i=0; i<arr.length;i++) sb.append(arr[i]);
System.out.println(sb.toString());
br.close();
}
}
'코딩테스트 > 백준' 카테고리의 다른 글
[BJ] 9663. N-Queen (0) | 2021.03.02 |
---|---|
[BJ] 8320. 직사각형을 만드는 방법 (0) | 2021.02.26 |
[BJ] 1244. 스위치 켜고 끄기 (0) | 2021.02.26 |
[BJ] 10158. 개미 (0) | 2021.02.25 |
[BJ] 13300번: 방 배정 (0) | 2021.02.22 |
댓글