위코드
자바스크립트 코드카타 4.
문제
숫자로 이루어진 배열인 nums를 인자로 전달합니다.
숫자중에서 과반수(majority, more than a half)가 넘은 숫자를 반환해주세요.
예를 들어,
nums = [3,2,3]
return 3
nums = [2,2,1,1,1,2,2]
return 2
!가정
nums 배열의 길이는 무조건 2개 이상
괄호들은 서로의 짝이 있기 때문에 object를 만들어서 key-value의 짝으로 접근하면 용이하겠다.
라고 생각하는 것부터 였다. 그리고 처음의 세쌍만 만들어주고 if문을 돌리니 반대의 경우에는 서로의 짝을 찾지 못하는 경우가 생겨나서 반대의 경우도 더해주었다.function isValid(s) { const obj = { "[" : "]", "(" : ")", "{" : "}", "]" : "[", ")" : "(", "}" : "{" } const str = s.split('') if ( str.length > 1) { for (i=0; i < str.length; i ++) { if(str[i] === obj[str[str.length-1]]) { if(str[i+1] === obj[str[i]]) { return true } return false } } } return false } isValid('([)]') //false
function isValid(s) { let matching = { '(': ')', '[': ']', '{': '}' }; let closeArr = []; let openArr = []; let sArr = s.split(''); let result = true; for (let i = 0; i < sArr.length; i++) { let thisStr = sArr[i]; let closeForOpen = matching[thisStr]; if (closeForOpen) { openArr.push(thisStr); closeArr.unshift(closeForOpen); } else { if (thisStr === closeArr[0]) { closeArr.shift(); openArr.pop(); } else { result = false; break; } } } return result && closeArr.length === 0; }