Life Engineering
[SW Expert 1234] 비밀번호 (Java) 본문
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class SW1234 {
static int L;
static String s;
public static void main(String[] args) throws IOException {
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
for (int t=1; t<=10; t++) {
StringTokenizer st=new StringTokenizer(br.readLine(), " ");
L=Integer.parseInt(st.nextToken());
s=st.nextToken();
boolean flag;
String temp;
while (true) {
flag=false;
for (int i=1; i<s.length(); i++) {
if (s.charAt(i-1)==s.charAt(i)) {
temp=s.substring(0,i-1);
if (i<s.length()-1) {
temp+=s.substring(i+1);
}
s=temp;
flag=true;
break;
}
}
if (!flag) {
break;
}
}
System.out.printf("#%d %s\n", t, s);
}
}
}
문자열을 쭉 돌아가면서 같은 문자의 쌍을 발견할 경우, 그 문자와 이웃 문자를 기준으로 substring 해줘서 새롭게 개정된 문자열을 만들어준다. 이러한 탐색을 계속 수행한다..
문자열을 쭉 돌아가면서 같은 문자의 쌍을 더이상 발견하지 않았을 경우 flag값을 이용해 탐색을 종료한다.
다른 분들이 푼 것을 보니 replace 함수를 이용해 겹치는 쌍은 문자열에서 공백으로 바꿔주고,
탐색 시작 값을 다시 문자의 쌍을 발견한 인덱스로부터 시작해줘서 탐색하는 방법이 있었다.
'Problem Solving' 카테고리의 다른 글
[BOJ 1715] 카드 정렬하기 (Java) (0) | 2022.02.10 |
---|---|
[BOJ 20056] 마법사 상어와 파이어볼 (Java) (0) | 2022.02.09 |
[BOJ 2493] 탑 (Java) (0) | 2022.02.07 |
[BOJ 17406] 배열 돌리기 4 (Java) (0) | 2022.02.05 |
[BOJ 19237] 어른 상어 (Java) (0) | 2022.02.05 |