본문 바로가기
Problem Solving/SWEA

[SWEA] 1234. 비밀번호

by 테리는당근을좋아해 2020. 2. 9.

문제

0~9로 이루어진 번호 문자열에서 같은 번호로 붙어있는 쌍들을 소거하고 남은 번호를 비밀번호로 만든다

번호 쌍이 소거되고 소거된 번호 쌍의 좌우번호가 같은 번호이면 계속해서 소거 가능

 

풀이방법

데이터의 삭제에 대해 연산 수를 줄이기 위해 연결리스트를 사용해서 나열된 수를 입력받은 후, 인접한 데이터가 같은 값이 없을 때까지 

삭제를 반복

 

소스코드

package samsung;

import java.util.*;

public class s_1234 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		for(int t = 1; t <= 10; t++) {
			int n = sc.nextInt();
			LinkedList <Integer> l = new LinkedList<>();
			
			String s = sc.next();
			for(int i = 0; i < n; i++) {
				int tmp = s.charAt(i) - '0';
				l.add(tmp);
			}
			
			int i = 1;
			while(true) {
				if(l.get(i) == l.get(i-1)) {
					l.remove(i);
					l.remove(i-1);
					i = 1;
				}
				else {
					i++;
				}
				if(i >= l.size())
					break;
			}
			
			System.out.print("#" + t + " ");
			for(int j = 0; j < l.size(); j++) {
				System.out.print(l.get(j));
			}
			System.out.println();
		}
	}
}

'Problem Solving > SWEA' 카테고리의 다른 글

[SWEA] 1289. 원재의 메모리 복구하기  (0) 2020.02.09
[SWEA] 1285. 아름이의 돌 던지기  (0) 2020.02.09
[SWEA] 1230. 암호문3  (0) 2020.02.09
[SWEA] 1229. 암호문2  (0) 2020.02.09
[SWEA] 1940. 가랏! RC카!  (0) 2020.02.05

댓글