반응형
🔺 문제
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
🔺 코드
- 틀림 (시간 초과)
class Solution {
public int solution(String s) {
int answer = 0;
StringBuilder sb = new StringBuilder(s);
for(int i = 0 ; i < sb.length() - 1 ; i++) {
if(sb.charAt(i) == sb.charAt(i+1)) {
sb.delete(i, i+2);
i = -1; // i를 -1로 설정해 처음부터 검사하게
}
}
if(sb.length() == 0) {
answer = 1;
}
return answer;
}
}
효율성 검사에서 통과를 못 했다...
수정된 문자열을 참고하지 않고, 이전 문자열을 참조해 반복문을 돌도록 (=처음부터 검사하도록) i = -1;
을 했다.
- 문자열 처리 : StringBuilder 이용
- 문자열 삭제 : delete() 메소드
- 정답
import java.util.*;
class Solution {
public int solution(String s) {
Stack<Character> stack = new Stack<>();
for(char c : s.toCharArray()) {
if(!stack.isEmpty() && stack.peek() == c) {
stack.pop();
}
else {
stack.push(c);
}
}
return stack.isEmpty() ? 1 : 0;
}
}
✅ 해결 아이디어
- 스택!
✔ String.toCharArray()
: String을 Character형 배열로 변환시켜 반환
✔ stack.peek()
: 스택 맨 위쪽의 값. 반환만!
✔ stack.pop()
: 스택 맨 위쪽의 값. 제거 & 반환
짝지어 제거하기... 괄호 ... 이런 문제는 스택으로 써야한다고!
구현하려다 틀린 사람...이지만 하나 또 배워갑니다🧐
(참고)
프로그래머스 짝지어 제거하기 Java
문제 설명 짝지어 제거하기는, 알파벳 소문자로 이루어진 문자열을 가지고 시작합니다. 먼저 문자열에서 같은 알파벳이 2개 붙어 있는 짝을 찾습니다. 그다음, 그 둘을 제거한 뒤, 앞뒤로 문자열
devgeek.tistory.com
반응형
'코테 > 프로그래머스' 카테고리의 다른 글
[프로그래머스/Lv. 2] 카펫 (0) | 2023.04.02 |
---|---|
[프로그래머스/Lv. 2] 영어 끝말잇기 (0) | 2023.04.02 |
[프로그래머스/Lv. 2] 이진 변환 반복하기 (0) | 2023.04.02 |
[프로그래머스/Lv. 2] 다음 큰 숫자 (0) | 2023.04.02 |
[프로그래머스/Lv. 2] JadenCase 문자열 만들기 (0) | 2023.04.01 |