programmers
[코딩테스트] - 짝지어 제거하기 LV2 ( 프로그래머스(programmers) / java )👍
나홀로전세집
2024. 4. 11. 22:56
728x90
반응형
안녕하세요 나홀로전세집입니다.
오늘은 레벨2 짝지어 제거하기 풀어보겠습니다.
https://school.programmers.co.kr/learn/courses/30/lessons/12973
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
다음은 문제 설명입니다.
문자열에서 겹치는 알파벳을 없애 다 없어지면 1을 리턴 다 없어지지 않으면 0을 리턴해야하는 문제입니다.
알고리즘을 설명드리겠습니다.
배열을 스택처럼 사용해 스택의 top과 현재 체크값을 비교하여 스택을 지우는 알고리즘을 사용할 것 입니다.
다음은 알고리즘을 그림으로 표현한 것 입니다.
다음은 문제풀이 코드입니다.
class Solution {
public int solution(String s) {
char[] stack = new char[s.length()]; // 스택을 사용한 알고리즘 풀이
int top = 0; // 스택의 최상단을 체크할 변수
stack[0] = s.charAt(0); // 반복문 전 스택을 하나 채우기
for (int i = 1; i < s.length(); i++) { // 문자열 반복문
if (top >= 0 && stack[top] == s.charAt(i)) { // 스택이 안비어있고 문자가 같을 때
top--; // 스택 제가
} else { // 아니면 스택에 채우기
stack[++top] = s.charAt(i);
}
}
if(top == -1){ // 스택이 비어있으면 1 리턴
return 1;
} else { // 스택이 차있으면 0 리턴
return 0;
}
}
}
오랜만에 자료구조를 사용해서 문제를 풀어보았습니다. 직접 스택을 사용하지는 않았지만 배열을 사용해 스택을 구현하여 재밌던 코드였습니다.
오늘도 즐코딩 하시고 좋은 하루 되세요~
728x90
반응형