-
[프로그래머스] Level.2 - 짝지어 제거하기개발공부/코딩테스트 연습문제 2022. 1. 19. 13:54
문제 설명과 제한사항


풀이_1차
class Solution { public int solution(String s) { int tmp = s.length(); while(s.length() > 0){ for(int i = 0; i < s.length()-1; i++){ if(s.charAt(i) == s.charAt(i+1)){ if(i > 0) { s = s.substring(0,i) + s.substring(i+2); } else s = s.substring(i+2); break; } } if(tmp == s.length()) return 0; else tmp = s.length(); } return 1; } }++
굉..장한 하드코딩..!
그래서 결과는 짜잔?~

효율성이 개똥이다. 그리하여 효율성 있게 고쳐보고자 한다.
class Solution { public int solution(String s) { int tmp = s.length(); int i = 0; while(s.length() > 0){ if(i == s.length() - 1) return 0; if(s.charAt(i) == s.charAt(i+1)){ s = s.replace(s.substring(i,i+2), ""); i = 0; } else i++; } return 1; } }++
짜잔~ 깔끔한 쓰레기가 됐습니다

하나는 통과했어..? 왜..?
+++
마지막 풀이
import java.util.Stack; class Solution { public int solution(String s) { Stack<String> tack = new Stack<String>(); String tmp; for(int i = 0; i < s.length(); i++){ tmp = s.substring(i,i+1); if(tack.isEmpty()) tack.push(tmp); else{ if(tack.peek().equals(tmp)){ tack.pop(); } else tack.push(tmp); } } if(tack.isEmpty()) return 1; else return 0; } }사실 이문제는 스택을 몇번 활용해 본 사람이면 너무나도 달콤하게 느껴져서 스택을 사용하게 만드는 문제였던 것 같다.
위에 더러운 코드들을 작성할때 한 8라인쯤..? 에서 아.. 쒸.. 그냥 스택 쓸까 했는데 귀찮았다. 그래서 저 상태에서 깔끔하게 만들고 싶었는데 실패해서.. 결국 스택으로 풀었다..

스택으로 풀었을때 성능이다.
'개발공부 > 코딩테스트 연습문제' 카테고리의 다른 글
[프로그래머스] Level.2 - 전화번호 목록 (JAVA) (0) 2022.01.21 [프로그래머스] Level.2 - (1차)뉴스 클러스터링 (JAVA) (0) 2022.01.19 [프로그래머스] Level.2 - 더 맵게 (0) 2022.01.18 [프로그래머스] Level.2 - 멀쩡한 사각형 (0) 2022.01.18 [프로그래머스] Level.2-124나라의 숫자 (0) 2022.01.18