프로그래머스 17

프로그래머스_카카오 프렌즈 컬러링북_자바

https://programmers.co.kr/learn/courses/30/lessons/1829 출처 코딩테스트 연습 - 카카오프렌즈 컬러링북 6 4 [[1, 1, 1, 0], [1, 2, 2, 0], [1, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 3], [0, 0, 0, 3]] [4, 5] programmers.co.kr 탐색을 통해서 영역의 수를 구하고 각영역의 넓이의 최대값을 구하면되는 문제이다. 재귀로 풀면 스택이 초과하여 통과하지 못한다. 그래서 나는 BFS 로 풀었다. 주의해야하는점 탐색을 진행할때 boolean 형 배열을 두어 이미 방문한곳은 재방문 하지 않게 처리해야한다. 같은 영역을 탐색시 배열값이 같아야한다 (ex picture[1][2] = 5 이고 pictu..

프로그래머스 2020.05.21

프로그래머스_스킬트리_자바

출처 https://programmers.co.kr/learn/courses/30/lessons/49993 코딩테스트 연습 - 스킬트리 programmers.co.kr 한가지 주의할 점만 처리해주면 쉽게 풀수있는 문제이다. 스킬 순서가 A -> D -> C 일때 A -> C 는 불가능하다. D 를 배우지 않고 C 를 배웠기 때문이다. 나는 스킬의 순서를 표시하는 sequence 변수를 두어서 해결했다. 만약 스킬트리가 A -> B -> C 이고 BCAD 를 검사해야한다고 하자 현재 sequence 는 0인데 BCAD 에서 B 는 1번째( [A,B,C] 배열인덱스 기준으로) 원소이다 즉 아직 A 를 배우지 않아서 틀린 스킬트리가 된다. 다음은 전체코드이다. public static int solution(..

프로그래머스 2020.05.17

프로그래머스_입국심사_JAVASCRIPT

총 심사 시간은 1(left) ~ (최대로 오래걸리는 심사 * 대기인원)(right) 사이에있다. 이사이에서 문제 조건을 만족하는 최솟값을 구해야한다. 이분탐색으로 중간값인(mid) 시간((left + right) / 2) 을 먼저 정한다. 이때 중간값(mid)을 각심사대의 시간(times[n])으로 나눠주고 그 몫들을 더해준다. 예시를 들면 대기인원이 6명 최소시간이 1분 최대시간이 60분 중간값이 30 분 이라하자, 이때 물어보는것이다 너희 각심사대 30분 동안 몇명씩 처리가능해 ? 이때 각심사대의 심사시간 배열이 [7, 10] 이라면 첫번째 심사대는 4(30/7) 명처리 두번째는 3(30/10) 명이가능하다 그러면 총 7 명 처리할수 있다 . 이는 원래 대기인원보다 같거나 크므로 시간을 더줄일수있다..

프로그래머스 2020.05.07

프로그래머스_섬연결하기

다차원 배열 정렬과 크루스칼 알고리즘을 사용하는 문제이다. 다차원 배열 정렬하는법 var costs = [[1, 2, 3], [1, 2, 3], [2, 3, 4]] // a[n] - b[n] => 배열의 n 을 기준으로 정렬한다. costs.sort((a, b) => { return a[2] - b[2]; }) 다음은 전체 코드이다. function solution(n, costs) { var answer = 0; var parent = []; for(let i = 0; i { return a[2] - b[2]; }) var cnt = 0; for(let i = 0; i < costs.length; i++){ var..

프로그래머스 2020.05.07

프로그래머스_H-index

자바스크립트 정렬만 할 줄 알면 쉽게 풀수 있는 문제이다. //오름 차순정렬 numbers.sort((a, b)=> { return a-b; }); // 내림 차순 정렬 numbers.sort((a, b)=> { return b-a; }); h-index 값을 0으로 두고 정렬된 배열 뒷부분부터 순회하면서 배열의 값이 h-index 값보다 크면 h-index 값을 1증가시키고 그이외에 경우에는 값을 그대로 두면 된다. 예를 들어 1 1 2 4 5 같은 경우(h-index = 0) step1 : 1 1 2 4 5 5 > 0(h-index) 1(h-index++) step2 : 1 1 2 4 5 4 > 1(h-index) 2(h-index++) step3 : 1 1 2 4 5 2 > 2(h-index) 2(..

프로그래머스 2020.05.07

프로그래머스_탑

https://programmers.co.kr/learn/courses/30/lessons/42588 map 함수를 이용하면 쉽게 풀수있다. map(a, b) 첫번째 인자로는 배열의값, 두번째인자는 배열의 인덱스이다. 왼쪽편에 자기보다 높은 탑을 발견하면 높은탑에 해당하는 인덱스 + 1 을해주고 높은 탑을 발견하지 못하면 0을 리턴하면된다. function solution(number){ return number.map((v, i) => { while(i){ i--; if(number[i] > v){ return i + 1; } } return 0; }) }

프로그래머스 2020.05.07