매니저님께 물어보니 괄호의 순서는
{} () [] 걸로 의미하다고 하셨다...
( { [ 순서가 아니었다...
// 문제 5
// 주어진 문자열이 유효한 괄호 조합인지 확인하는 함수를 작성하세요.
// 유효한 조합은 모든 여는 괄호가 올바르게 닫혀야 하며, 괄호의 순서도 일치해야 합니다
/*
**제한사항:**
- 문자열의 길이는 1 이상 1000 이하입니다.
- 괄호는 `()`, `{}`, `[]`의 세 종류입니다.
*/
let Parentheses = string => {
string = string.split("").map(element => {
if (element === "(") return 1;
// '('은 1로
else if (element === "{") return 2;
// '{'은 2로
else if (element === "[") return 3;
// '['은 3으로
else if (element === ")") return -1;
// ')'은 -1로
else if (element === "}") return -2;
// '}'은 -2로
else return -3;
// ']'은 -3으로 설정
});
let temp = [];
// + 값만 담을 배열
for (let i of string) {
// 입력 받은 괄호들 순회
if (i > 0) temp.push(i);
//'(','{','[' 이면 배열에 담기
else if (temp.pop() + i !== 0) return false;
// ')', '}', ']'이면 temp의 값을 가져와 i와 더한다.
// (temp.pop()을 했을 때 temp에 값이 없어도 temp.pop() + i 작동)
// 더한 값이 0이 아니면 순서가 잘못된 괄호
}
return temp.length === 0;
// 배열 내부에 0 값이 없다면 true
};
console.log(Parentheses("(){}{}[]"));
console.log(Parentheses("[{}][{{}}][({({})})]"));
console.log(Parentheses("[{]"));
console.log(Parentheses("[{(]"));
console.log(Parentheses("(]"));
console.log(Parentheses("}]"));
console.log(Parentheses("([)]"));
( { [ 순서가 중요한줄 알고
고민하다가 시간이 너무 많이 흘러 버렸다...
(
({[ 순서가 중요하지 않다는 사실을 알게 된
이후에도 이전에 생각을 너무 많이해서
바로 풀지 않았다...
휴식 겸 밥 먹은 이후에 문제가 풀렸다...
)
'Challenge' 카테고리의 다른 글
CMD 게임 만들기 2Days (0) | 2024.08.22 |
---|---|
CMD 게임 만들기 1Days (0) | 2024.08.21 |
2-4 Challenge 두 수 선택 합 존재? (0) | 2024.08.20 |
2-3 Challenge 문자열 요약 (0) | 2024.08.20 |
2-2 Challenge 주어진 배열에서 [최솟값, 최댓값] (0) | 2024.08.20 |