728x90
반응형
2021.11.14
70번째 포스팅
입사 252일차.
코테 문제풀이 6주차 2번 문제
0. 문제
① 2017 팁스타운 : 짝지어 제거하기
② 설명
문제설명 짝지어 제거하기는, 알파벳 소문자로 이루어진 문자열을 가지고 시작합니다. 먼저 문자열에서 같은 알파벳이 2개 붙어 있는 짝을 찾습니다. 그다음, 그 둘을 제거한 뒤, 앞뒤로 문자열을 이어 붙입니다. 이 과정을 반복해서 문자열을 모두 제거한다면 짝지어 제거하기가 종료됩니다. 문자열 S가 주어졌을 때, 짝지어 제거하기를 성공적으로 수행할 수 있는지 반환하는 함수를 완성해 주세요. 성공적으로 수행할 수 있으면 1을, 아닐 경우 0을 리턴해주면 됩니다. 예를 들어, 문자열 S = baabaa 라면 b aa baa → bb aa → aa → 의 순서로 문자열을 모두 제거할 수 있으므로 1을 반환합니다. 제한사항
|
③ 링크
https://programmers.co.kr/learn/courses/30/lessons/12973
1. 접근방법
생각해낸 방법은 2가지
① 정규식과 반복문을 이용해서 반복되는 문자들을 제거
② 스택을 이용해서 반복되는 문자들을 제거
2. 풀이
① 접근방법 : ②
② 풀이
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
31
32
33
34
35
36
37
|
import java.util.*;
class Solution {
/*
* 시작시간 : 18:10
* 종료시간 : 18:31
*/
public int solution(String s) {
int answer = normalization(s);
return answer;
}
public int normalization(String s) {
Stack<Character> stack = new Stack<>();
for (int i = 0; i < s.length(); i++) {
// 1. 스택이 비어있다면 push
if (stack.isEmpty()) {
stack.push(s.charAt(i));
}
else {
// 2. 스택에 들어있는 문자와 다음의 문자를 비교
if (stack.peek() == s.charAt(i)) {
stack.pop();
} else {
stack.push(s.charAt(i));
}
}
}
// 3. 스택에 1글자라도 남아있다면 0을 리턴. 그 반대의 경우 1을 리턴.
return stack.size() != 0 ? 0 : 1;
}
}
|
cs |
3. 결과
4. 주의사항
없음
728x90
반응형
'코딩테스트' 카테고리의 다른 글
[코테/JAVA] 힙(Heap) : 더 맵게 (0) | 2021.11.28 |
---|---|
[코테/JAVA] 연습문제 : 가운데 글자 가져오기 (0) | 2021.11.24 |
[코테/JAVA] 연습문제 : 같은 숫자는 싫어 (0) | 2021.11.14 |
[코테/JAVA] 스택/큐 : 기능개발 (0) | 2021.11.08 |
[코테/JAVA] 연습문제 : 124 나라의 숫자 (0) | 2021.11.06 |
댓글