Notice
Recent Posts
Recent Comments
Link
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Archives
Today
Total
관리 메뉴

Life Engineering

[SW Expert 1234] 비밀번호 (Java) 본문

Problem Solving

[SW Expert 1234] 비밀번호 (Java)

흑개 2022. 2. 9. 14:46

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV14_DEKAJcCFAYD&categoryId=AV14_DEKAJcCFAYD&categoryType=CODE&problemTitle=1234&orderBy=FIRST_REG_DATETIME&selectCodeLang=ALL&select-1=&pageSize=10&pageIndex=1 

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

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 함수를 이용해 겹치는 쌍은 문자열에서 공백으로 바꿔주고, 

탐색 시작 값을 다시 문자의 쌍을 발견한 인덱스로부터 시작해줘서 탐색하는 방법이 있었다.