알고리즘119 [구현] 거리두기 확인하기 (2021 카카오 채용연계형 인턴십) https://school.programmers.co.kr/learn/courses/30/lessons/81302#fn1 첫번째 풀이 (성공) P를 기준으로 맨해튼거리 2는 상하좌우 2칸씩, 대각선 1칸씩이다. 이 범위안에 P가 있다면 P와 P사이에 X가 있는지. (PXP) P와 P가 대각선에 있을때 양옆에 X가 있는지를 확인해야한다 맨해튼 거리 2이하의 범위를 3파트 로직으로 나누고 P를 찾았을떄 해당 위치 기준 위의 로직에 걸리는 경우가 있으면 0리턴 전부 통과하면 1을 리턴했다. 범위1. P기준 1칸 상하좌우 P가 있으면 0을 리턴 범위2. P기준 1칸 대각선 P가 있는데 양옆 X가 없음 0을 리턴 범위3. P기준 2칸 상하좌우 P가 있는데 사이에 X가 없음 0 리턴 범위2 대각선 P의 양 옆 좌표.. 2023. 10. 14. [union find, dfs] 전력망을 둘로 나누기 https://school.programmers.co.kr/learn/courses/30/lessons/86971# n은 2 이상 100 이하인 자연수입니다. wires는 길이가 n-1 => 완전탐색. 각 전선을 하나씩 끊어 보며 모두 탐색가능 첫번째 풀이 (성공) - 유니온 파인드 wires를 순회하며 앞에서부터 전선을 하나씩 끊는다 끊은 상황마다 union find를 통해 연결된 송신탑들의 부모를 통합한다 통합 뒤에 각 부모마다 송신탑개수를 구한다 그 중 최소, 최대 차이의 절대값을 구하고 이전의 answer과 비교한다 splice주의 splice는 원래 배열을 변경하고, 자르고 남은 부분을 리턴한다 const newArr = [...arr].splice() //가 아니라 const newArr = .. 2023. 10. 13. [해쉬, 이진탐색, 문자열, regex, 정렬] 순위 검색 (카카오블라인드 2021) https://school.programmers.co.kr/learn/courses/30/lessons/72412 [본 문제는 정확성과 효율성 테스트 각각 점수가 있는 문제입니다.] 카카오는 하반기 경력 개발자 공개채용을 진행 중에 있으며 현재 지원서 접수와 코딩테스트가 종료되었습니다. 이번 채용에서 지원자는 지원서 작성 시 아래와 같이 4가지 항목을 반드시 선택하도록 하였습니다. 코딩테스트 참여 개발언어 항목에 cpp, java, python 중 하나를 선택해야 합니다. 지원 직군 항목에 backend와 frontend 중 하나를 선택해야 합니다. 지원 경력구분 항목에 junior와 senior 중 하나를 선택해야 합니다. 선호하는 소울푸드로 chicken과 pizza 중 하나를 선택해야 합니다. 인재.. 2023. 10. 13. [우선순위큐] 프로세스 (앞에서 빼고 뒤에 넣고) https://school.programmers.co.kr/learn/courses/30/lessons/42587 우선순위 높은순 실행 숫자가 큰 1-9 숫자가 클수록 우선순위가 높다 location = index queue앞에서 빼고 뒤에 넣고 순회한다 Math.max(...arr) shift remove some 첫번째 풀이(성공) function solution(priorities, location) { var answer = 0; priorities = priorities.map((p, i) => ({priority: p, location: i})); while(priorities.length) { const curr = priorities.shift(); // 현재보다 큰 순위가 없을 때 삭제 .. 2023. 10. 12. [프로그래머스] 다리를 지나는 트럭 JS (큐) https://school.programmers.co.kr/learn/courses/30/lessons/42583 처음에 문제가 이해가 안 됐다. 몇번의 그림을 그리며 테스트케이스를 이해하려고 노력한 끝에 다리를 건너는데 bridge_length만큼 시간이 걸린다는 것을 깨달았다.. (즉 다리를 bridge_length길이 배열이라고 본다면 1초에 1 인덱스씩 이동한다) 좋다 문제는 이해했는데 어떻게 풀지? 먼저 다리 양쪽으로 들어가고 나오니까 큐를 떠올렸다 큐를 순회하면서 모든 차량을 이동시키는데 필요한 시간을 ++한다. 이 때 탈출조건은 대기하고 있는 트럭이 없고 다리에 건너고 있는 트럭이 없을때까지이다 (= 모든 차량이 통과할때까지) 따라서 while( truck_weights.length || p.. 2023. 10. 12. [스택] 기능개발 https://school.programmers.co.kr/learn/courses/30/lessons/42586# 첫번째 풀이 (실패) progresses, speeds를 순회하여 각 기능마다 더 필요한 시간을 계산한다 Math.ceil( ( 100-progress ) / speeds ); 필요한 시간 배열을 앞에서부터 순회하며 뒤에 더 많은 시간이 필요할때까지 앞의 시간안에 처리할 수 있는 기능의 합을 구한다 function solution(progresses, speeds) { var answer = []; const days = []; for (let i = 0; i < progresses.length; i++) { days.push(Math.ceil((100-progresses[i])/speed.. 2023. 10. 11. 이전 1 ··· 7 8 9 10 11 12 13 ··· 20 다음