분류 전체보기
[JS] 짝지어 제거하기
스택을 활용해서 현재 들어오는 값이 제거할 수 있는지 없는지 확인한다. 만약 제거할 수 있다면 제거하고, 없다면 스택에 쌓아둔다. function solution(s) { const stk = [] for (const word of s) { if (stk[stk.length-1] === word) stk.pop() else stk.push(word) } return stk.length ? 0 : 1 }
[JS] 점프와 순간이동
시간 효율성을 생각하기 위해서 많이 고민했던 문제였다. 맨 처음에는 재귀를 활용해서 풀어보려고 했다. 재귀로 모든 경우의수를 찾아보려고 했는데 케이스가 10억까지기 때문에 생각한데로 5000만 넣어도 시간초과가 발생했다. 두번째로 생각했던 방법은 dp를 활용한 것이었다.. function solution(n) { const dp = new Array(n+1).fill(Infinity) dp[0] = 0 for (let i = 1 ; i < dp.length ; i++) { if (i%2) dp[i] = dp[(i-1)/2] + 1 else dp[i] = dp[i/2] for (let j = i-dp[i] ; j < i ; j++){ if (dp[j] + i-j < dp[i]) dp[i] = dp[j] +..
[JS] deepDive(3) 자바스크립트 탄생
자바스크립트는 1995년 90%의 시장 점유율로 시장을 지배하고 있던 넷스케이프 커뮤니케이션즈란 회사에서 웹페이지의 보조 기능을 수행하기 위해 만든 경량 프로그래밍 언어이다. 브래던 아이크가 개발하였다. 이름도 꽤나 많이 바뀌었는데 모카 -> 라이브 스크립트 -> 자바스크립트 순서로 이름도 바뀌었다. 자바스크립트는 이렇게 생성되었지만 1년후 마이크로소프트에서 JScript를 익스플로러에 탑재해서 나왔다. 가장 큰 문제는 JScript와 자바스크립트가 표준화되지 않고 각 회사의 점유율을 높이기 위해서 자사 브라우저에서만 동작하는 기능을 경쟁적으로 추가했다는 것이다. 즉, 모든 브라우저에서 정상적으로 동작하는 웹페이지를 만드는게 매우 어려웠다. (ㅠㅠ) 이를 크로스 브라우징 이슈 라고 한다. 따라서 그해말 ..
자바스크립트
오늘 복학신청을 한 후에 복학 전까지 내가 뭘 하면 이 시간을 가장 효율적으로 쓸 수있을지 고민을 해보았다. 프로젝트,학원일,코딩테스트,CS공부 등등 해야할 것과 하고싶은것들이 되게 많았던 것 같다. 요즘은 프로그래머스 단계들 정복하는 거에 재미를 느껴서 하루에 2문제 정도씩 꾸준하게 풀었던 것 같다. 프로그래머스 문제들도 풀고 학원에서 애들에게 web관련 수업을 진행하다 보니 많은 걸 느꼈다. 비록 중학생,고등학생을 상대로 가르치는 것이긴 하지만 과연 내가 애들에게 자바스크립트에 대해 알려줄 정도로 잘 알고 있는가?? 라는 생각이 많이 들었다. 예전부터 자바스크립트 딥 다이브 책을 완전정복 해보고 싶었던 생각이 있었는데 이를 한번 해보고자 한다. 물론 공부하면서 블로그에 글을 적어볼 생각이다. 이번 기..
[JS] 영어 끝말잇기
map 자료형을 활용해서 나온 단어를 체크하였다. 단어를 순회하면서 나온 단어가 나오거나, 마지막 단어로 시작하지 않으면 바로 탐색을 마쳐주었다. function solution(n, words) { const map = new Map() let order = 0 let round = 1 let lastWord = words[0][0] for (const word of words){ if (map.get(word) || lastWord[lastWord.length-1]!==word[0]){ return [order+1,round] } lastWord=word map.set(word,1) if (++order >= n) { order = order % n round ++ } } return [0,0] }
[JS] 예상대진표
2로 나눈 값에 올림 처리를 해버리면 다음 등수를 알 수 있다. function solution(n,a,b) { var ret = 0; while(a !== b){ a = Math.ceil(a/2); b = Math.ceil(b/2); ret ++ } return ret; }