1) SW Expert Academy 정책상 문제 자체를 퍼가는 것은 금지되며 링크와 출처로 명시해 주시기 바랍니다.
2) 문제에 대한 본인의 풀이에 대해서는 개인 학습 등 상업적 용도가 아닌 경우에만 문제 출처와 함께 게시가 가능합니다.
※ 저작권 이슈가 있을 시 법적 제재를 받을 수 있으니 참고하여주시기 바랍니다.
문제 설명
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
풀이1
import java.util.Scanner;
class Solution {
public static void main(String args[]) throws Exception {
Scanner sc = new Scanner(System.in);
for(int test_case = 1; test_case <= 10; test_case++) {
int len = sc.nextInt();
String str = sc.next();
boolean changed = true; // 소거가 일어났는지를 표시하는 플래그
while(changed) {
changed = false; // 매 사이클마다 false로 초기화
for (int i = 0; i < str.length() - 1; i++) {
if (str.charAt(i) == str.charAt(i + 1)) {
// 인접한 두 문자가 같으면 소거
str = str.substring(0, i) + str.substring(i + 2);
changed = true; // 소거가 일어났으니 다시 탐색
break; // 문자열이 변했으니 다시 처음부터 탐색
}
}
}
System.out.println("#" + test_case + " " + str);
}
}
}
풀이2
import java.util.Scanner;
import java.util.Stack;
class Solution {
public static void main(String args[]) throws Exception {
Scanner sc = new Scanner(System.in);
for (int test_case = 1; test_case <= 10; test_case++) {
int len = sc.nextInt(); // 10
String str = sc.next(); // 1238099084
Stack<Character> stack = new Stack<>();
for (int i = 0; i < str.length(); i++) {
char c = str.charAt(i);
if (!stack.isEmpty() && stack.peek() == c) {
stack.pop(); // 짝이 맞으면 pop
} else {
stack.push(c); // 아니면 push
}
}
// for-each로 돌리면 Stack 내부 배열을 밑바닥부터 위로 하나씩 읽는 구조
StringBuilder result = new StringBuilder();
for (char c : stack) {
result.append(c);
}
System.out.println("#" + test_case + " " + result.toString());
}
}
}
풀이3
import java.util.Scanner;
class Solution
{
public static void main(String args[]) throws Exception {
Scanner sc = new Scanner(System.in);
for(int tc = 1; tc <= 10; tc++){
int n = sc.nextInt();
StringBuilder password = new StringBuilder(sc.next());
while(isUnvalid(password)){
}
System.out.println("#" + tc + " " + new String(password));
}
}
private static boolean isUnvalid(StringBuilder password){
for(int i = 1; i < password.length(); i++){
if(password.charAt(i) == password.charAt(i-1)){
password.delete(i-1,i+1);
return true;
}
}
return false;
}
}
'👨💻 Coding Test > SWEA' 카테고리의 다른 글
[SW Expert Academy/Java/D3] 1244.최대 상금 (0) | 2025.05.07 |
---|---|
[SW Expert Academy/Java/D3] 1240.단순 2진 암호코드 (0) | 2025.04.26 |
[SW Expert Academy/Java/D3] 1230.암호문3 (0) | 2025.04.24 |
[SW Expert Academy/Java/D3] 1229.암호문2 (0) | 2025.04.23 |
[SW Expert Academy/Java/D3] 1228.암호문1 (0) | 2025.04.22 |