전체 코드
import java.util.Scanner;
public class SWEA_1234_비밀번호 {
static int N;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int[] arr;
String num;
for(int test=1; test<=10; test++) {
N = sc.nextInt();
arr = new int[N];
num = sc.next();
for(int i=0; i<N; i++) {
arr[i] = (int) num.charAt(i) - '0'; // char형을 정수형으로 변환
}
boolean chk; //모두 지울시 체크로 while문 탈출
while(true) {
chk = false;
for(int i=0; i<N-1; i++) { // 모든 문자열 탐색
if(arr[i] == arr[i+1]) { // 만약 자기자신과 뒤의 수가 같다면
for(int j=i; j<N-2; j++) { //자기과 뒤의 수를 지우고, 뒤의 수들을 앞으로 땡겨온다.
arr[j] = arr[j+2];
}
N-=2;// 그리고 N의 길이를 줄이고
chk = true; //체크값을 true 로 변경
}
}
if(!chk) break;
}
System.out.print("#"+test + " ");
for(int i=0; i<N; i++) {
System.out.print(arr[i]);
}
System.out.println();
}
}
}
문제 핵심 코드
boolean chk; //모두 지울시 체크로 while문 탈출
while(true) {
chk = false;
for(int i=0; i<N-1; i++) { // 모든 문자열 탐색
if(arr[i] == arr[i+1]) { // 만약 자기자신과 뒤의 수가 같다면
for(int j=i; j<N-2; j++) { //자기과 뒤의 수를 지우고, 뒤의 수들을 앞으로 땡겨온다.
arr[j] = arr[j+2];
}
N-=2;// 그리고 N의 길이를 줄이고
chk = true; //체크값을 true 로 변경
}
}
if(!chk) break;
}
값을 따로 지우는것이 아닌 문자열 땡김을 반복해 같은 수들을 지워 간다.
'알고리즘문제풀이' 카테고리의 다른 글
[JAVA] SWEA 1226 미로1 [BFS, DFS] (0) | 2020.08.17 |
---|---|
[JAVA] SWEA 7699 수지의 수지 맞는 여행 [BFS] (0) | 2020.08.17 |
[JAVA] SWEA 1205 View (0) | 2020.08.17 |
[JAVA] SWEA 1228 암호문1 (0) | 2020.08.15 |
[JAVA] SWEA 1225 암호 생성기 (0) | 2020.08.15 |