https://school.programmers.co.kr/learn/courses/30/lessons/12973
첫번째
처음에 for 돌려서 str[i] , str[i+1] 같은게 나오면 splice한뒤 다시 첨부터 확인하는 방법을 생각했다
splice가 리턴하는건 잘라진 부분,
splice는 원래를 바꿈
splice(시작 인덱스, 삭제 개수)
답은 다 맞았는데 n^2 여서 시간초과
생각해보니 내가 꼬아서 생각하고 있었다....=_=
function solution(s)
{
const arrS = [...s];
while(arrS.length > 0) {
let hasPair = false;
for (let i = 0; i < arrS.length-1; i++) { // n
// 짝이 있다
if (arrS[i] === arrS[i+1]) {
arrS.splice(i, 2); // 여기서 ... 를 써서 splice하면 새로운 s를 만들어내서 안 잘려짐 // n
hasPair = true;
break;
}
}
// 짝이 없다
if (!hasPair) {
return 0;
}
}
return 1;
}
두번째
짝지어서 없애기? 스택이자나!!
function solution(s)
{
const stack = [];
for (const char of s) {
// 빈 스택엔 넣기
if (stack.length === 0) {
stack.push(char);
continue;
}
if (stack[stack.length-1] === char) {
stack.pop();
} else {
stack.push(char);
}
}
return stack.length === 0 ? 1 : 0
}
'알고리즘' 카테고리의 다른 글
[프로그래머스] 예상대진표 (0) | 2023.07.13 |
---|---|
[프로그래머스] 이진 변환 반복하기 (0) | 2023.07.13 |
[프로그래머스] 다음 큰 숫자 (0) | 2023.06.08 |
[프로그래머스] 기사단원의 무기 (0) | 2023.06.07 |
[프로그래머스/카블] 1차 다트게임 (0) | 2023.06.06 |