목록전체 글 (126)
차차로그
function solution(s){ var count = 0; for(var i = 0; i < s.length; i++){ if(s[i] === '('){ count++; }else{ count--; } if(count < 0){ return false; } } return count === 0; } 문제 자체는 크게 어렵진 않았지만 효율성에서 계속 시간초과가 떠서 애먹은 문제.. 동치연산자를 ==로만 썼는데 계속 효율성에서 시간초과가 나서 ===로 바꾸니 해결됨.. 타입까지 확인을 하는 것이라 효율성 측면에서는 더 좋은 듯 하다
function solution(a,b){ a = a.sort((a,b)=>a-b); return b.sort((a,b)=>b-a).reduce((acc,v,i)=>acc + a[i] * b[i],0) } a의 특정 값과 b의 특정 값을 곱해 그걸 계속 누적했을 때 최솟값을 만드는 문제라서 a에서 가장 작은 값, b에서 가장 큰 값.. 이렇게 계속 곱해서 누적을 하면 최솟값이 만들어진다. a를 오름차순으로 정렬하고, b를 내림차순으로 정렬한 후에 reduce를 사용해서 두 값을 곱해준 값을 계속 누적해서 리턴해줬다.
function solution(s) { var zero = 0; var count = 0; while(s.length > 1){ for(var i = 0; i 1 로 설정했다. 문자열 중에 0이 있으면 zero를 1씩 올려주었고, 문자열 전체에서 0을 찾아본 후에,..
function solution(s) { return s.toLowerCase().split(" ").map(v=>{ if(typeof v[0] == 'string'){ var a = v[0].toUpperCase(); } return a + v.slice(1, v.length); }).map(v => {if(v == 'undefined') v = ""; return v}).join(" ") } 이 문제를 풀면서 주의할 점은 공백이 여러 번 나올 수도 있다는 것! 그 점을 주의해서 풀면 쉽게 풀린다. 먼저 제일 앞의 문자를 제외하면 모두 소문자이기 때문에 toLowerCase로 소문자로 만들어주고 split을 이용해 공백을 기준으로 문자열을 나눠준다. 만약 s가 "one two three"라면 split..
function solution(s) { var arr = s.split(" ").map(v => parseInt(v)).sort((a,b)=>a-b); var min = arr[0]; var max = arr[arr.length-1]; return min + " " + max; } 문자열에 저장되어 있는 숫자들을 split으로 배열에 담은 다음, 숫자로 변환해주고 다시 정렬을 해줬다. 그러면 제일 앞에 있는 인덱스 값이 가장 작은 값이고 제일 뒤에 있는 값이 가장 큰 값이니 그걸 두 개 더 해서 리턴해줬다. function solution(s) { var arr = s.split(" "); return Math.min(...arr) + " " + Math.max(...arr); } 다른 방법으로는 문자..
해당 문제는 도저히 풀지 못해서 답안을 참고했다. 아래의 문제처럼 풀었는데 몇 문제에서 signal: aborted (core dumped)가 발생했다. 메모리때문에 발생하는 문제인데, 이중 for문을 3번이나 타고 마지막에 이차원배열을 일차원배열로 만드려고 arr2에 push를 할 때 크기가 너무 커서 발생한 거 같다.. function solution(n, left, right) { var answer = []; for(var i = 1; i