하루에 한 문제
[프로그래머스 2017 팁스다타운] 짝지어 제거하기 -Java 본문
https://programmers.co.kr/learn/courses/30/lessons/12973
import java.util.ArrayList;
import java.util.List;
class Solution {
public int solution(String s) {
int answer = 0;
List<Character> list = new ArrayList<>();
int size=-1;
for(int i=0; i<s.length(); i++) {
if(size==-1) {
list.add(s.charAt(i));
size++;
continue;
}
if(s.charAt(i)==list.get(size)) {
list.remove(size);
size--;
continue;
}
else {
list.add(s.charAt(i));
size++;
}
}
answer = list.size() < 1 ? 1 : 0;
return answer;
}
}
소요시간 : 11분
로직을 살펴보면
입력으로 주어지는 s를 처음부터 끝까지 돌면서 한개씩 list에 add합니다
만약 add를 할려고 하는데 list의 마지막에 들어있는 문자와 같은 문자라면 list의 마지막문자를 삭제합니다. 그리고 skip
만약 add를 할려고 하는데 list의 마지막에 들어있는 문자와 다른 문자라면 list에 삽입합니다!
그리고 마지막에 list의 사이즈를 보고 삭제가 전부 되었는지 삭제가 불가능한지 확인합니다!
지금 생각해보니 스택으로 풀었으면 더 쉽게 했을 것 같습니다
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 최솟값 만들기 -Java (0) | 2020.12.17 |
---|---|
[프로그래머스 Summer/Winter Coding] 영어 끝말잇기 -Java (0) | 2020.12.17 |
[프로그래머스] 타켓 넘버 -Java (0) | 2020.12.17 |
[프로그래머스 Summer/Winter Coding] 소수 만들기 -Java (0) | 2020.12.17 |
[프로그래머스] N개의 최소공배수 -Java (0) | 2020.12.17 |
Comments