티스토리 뷰

1234. [S/W 문제해결 기본] 10일차 - 비밀번호

swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV14_DEKAJcCFAYD

 

SW Expert Academy

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

swexpertacademy.com

1. 어렵게 생각했지만 스택을 사용하니 쉽게 풀렸다!! 지웠던 위치를 기준으로 또다시 좌우가 대칭인지를 비교하기 때문에. stack의 top과 현재 원소를 비교하는 방식으로 풀 수 있다.

2. 스택을 그대로 출력하면 들어갔던 순서와 반대로 출력된다. 뒤집기 위해 또다른 스택을 만들어서 출력.

// 210206

import java.io.*;
import java.util.*;

public class Solution_D3_1234_비밀번호 {
	
	static int N;
	
	static Stack<Character> encrypt(String str) {
		Stack<Character> stack = new Stack<Character>();
		
		for (int i=0; i<N; i++) {
			if (stack.isEmpty()) {
				stack.push(str.charAt(i));
			}
			
			else if (stack.peek() == str.charAt(i)) {
				stack.pop();
			} else {
				stack.push(str.charAt(i));
			}
		}
		
		return stack;
	}
	
	static String reverse(Stack<Character> stack, int tc) {
		Stack<Character> stack2 = new Stack<Character>();
		while (!stack.isEmpty()) {
			stack2.push(stack.pop());
		}
		
		StringBuilder sb = new StringBuilder();
		sb.append("#" + tc + " ");
		while (!stack2.isEmpty()) {
			sb.append(stack2.pop());
		}

		return sb.toString();
	}
	

	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		for (int tc=1; tc<=10; tc++) {
			StringTokenizer st = new StringTokenizer(br.readLine(), " ");
			N = Integer.parseInt(st.nextToken());
			
			Stack<Character> pwStack = encrypt(st.nextToken());
			System.out.println(reverse(pwStack, tc));
			
		} // tc

	}

}

 

 

3. 이건 검색하다 본 재밌는 코드 

zetawiki.com/wiki/SWEA_1234_(S/W_%EB%AC%B8%EC%A0%9C%ED%95%B4%EA%B2%B0_%EA%B8%B0%EB%B3%B8)_10%EC%9D%BC%EC%B0%A8_-_%EB%B9%84%EB%B0%80%EB%B2%88%ED%98%B8

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   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
글 보관함