js

    [JS] 블록 게임 [2019 카카오]

    까다로운 2차원 빡구현문제였다. 개인적으로 이런 2차원 문제를 좋아하기에 나름 재밌게 풀었다. https://school.programmers.co.kr/learn/courses/30/lessons/42894 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 코드는 꽤나 복잡하지만 내가 푼 방법을 정리하면 아래와 같다. 1. 12개의 퍼즐이 있다고 생각하고 각 퍼즐의 정보를 배열로 저장했다. (dR,dC 활용) 이때 통일성을 주기 위해서 시작점은 최상단 중에서 가장 왼쪽에 있는 것으로 했다. 그래야 탐색할때 첫지점을 찾기 편하다. 2. 모든 타일의 dR,dC..

    [JS] 소가 길을 건너간 이유6

    그래프와 DFS를 활용한 풀이 https://www.acmicpc.net/problem/14466 14466번: 소가 길을 건너간 이유 6 첫 줄에 N, K, R이 주어진다. 다음 R줄에는 한 줄에 하나씩 길이 주어진다. 길은 상하좌우로 인접한 두 목초지를 잇고, r c r′ c′의 형태 (행, 열, 행, 열)로 주어진다. 각 수는 1 이상 N 이하이다. www.acmicpc.net 소와 소를 만나는 과정을 DFS를 활용해서 구하되 가는 길에 다리가 있다면 건너지 않으면 된다. 1. 그래프 설정하기 2. 소를 1:1 대응으로 찾을 수 있는지 분리 3. 각 대응마다 DFS를 활용하여 소에서 소로 갈 수 있는지 확인 includes는 배열의 1차까지만 비교하기 때문에 find를 활용해서 찾아야 한다! con..

    [JS] [1차] 추석 트래픽

    누적합과 Map 자료형을 활용해서 해결하였다. https://school.programmers.co.kr/learn/courses/30/lessons/17676 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제는 단순하지만 ms까지 시간이 주어지는 바람에 조금 까다로웠고 생각할 거리가 조금 있는 문제였다. 해당 문제를 해결하기 위해서 누적합 개념을 적용해볼 수 있다. 시간은 0부터 1씩 증가하는 형태의 데이터로 생각할 수 있다. 0ms부터 10ms까지의 상태를 배열로 나타낸다면 0,0,0,0,0,0,0,0,0,0,0 과 같은 형태로 나타낼 수 있다. 여..

    [JS] 사라지는 발판

    https://school.programmers.co.kr/learn/courses/30/lessons/92345 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제의 조건 케이스가 5*5 케이스이고 생각해야 할 부분이 많아서 완전탐색을 이용해야 한다고 생각을 했다. 따라서 처음에 완전탐색으로 모든 게임의 경우의 수를 구하는것까지는 성공했고 테스트 케이스들의 시간초과 또한 나지 않는 것을 확인하였다. 그런데 문제가 있었다. 어떻게 정답을 이끌어내지?! ㅋㅋㅋㅋㅋ 최대값을 정답으로 하자니 최선의 수가 아니게 되고 최소값을 정답으로 해도 최선의 수가 아니게 ..

    [JS] 코딩테스트 공부

    처음에 문제를 보자마자 dp..? 라는 생각이 드는 문제였다. dp[i][j]로 2차원 배열을 둔 후, i를 코딩력 , j를 알고력을 나타내게 하였다. 이어서 배열을 채워나갔는데 내가 문제를 해결한 과정은 아래와 같다. 1. 필요한 최대 알고력,코딩력 확인 (이하 알고력 => alp 코딩력 cop) 2. dp 크기를 maxCop , maxAlp 만큼 잡아서 만듬 3. 배열을 처음 초기화 할때 만들 수 있는 가장 최대의 값들로 초기화한다. 4. 배열을 순회할 때 alp,cop부터 순회한다 maxAlp) maxAlp = alp_req if (cop_req > maxCop) maxCop = cop_req } const dp = [...Array(maxCop+1)].map((_,c) => [...Array(ma..

    [JS] DeepDive(41) 타이머

    호출 스케줄링 함수를 명시적으로 호출하면 함수가 즉시 실행된다. 함수를 명시적으로 호출하지 않고 일정시간 이후에 실행되도록 하려면 타이머 함수를 활용한다. 이를 호출 스케줄링이라 한다. JS는 setTimeout,setInterval,clearTimeout,clearInterval을 제공한다. 이 함수들은 ECMAScript 사양에 정의된 빌트인 함수는 아니지만 브라우저 환경과 Node.js 환경에서 모두 전역 객체의 메서드로 타이머 함수를 제공한다. JS 엔진은 단하나의 실행 컨텍스트 스택을 갖는다. 즉 JS엔진은 싱글스레드인데 이러한 이유때문에 setTimeout과 setInterval은 비동기로 작동하게 된다. 타이머 함수 setTimeout / clearTimeout setTimeout 함수는 두..