본문 바로가기

레벨26

H-Index https://school.programmers.co.kr/learn/courses/30/lessons/42747# 발표논문 n개중, (h이상 인용된 논문이 h이상 + 나머지가 h이하)일때의 h => 즉 "h번 이상 인용된 논문이 h편 이상인 최대 h를 구하라" 가 문제의 요점인데 (아니 뭔 수수께끼나구요...) 설명과 예시 코드가 부족하고 표현이 애매해서 문제를 정확히 이해하지 못 했고 결국 다른 분의 해석을 보고 풀었다 핵심은 h의 최대값은 입력값 citations의 길이고, 인용된 횟수와 조건이 맞는 논문 갯수가 일치하는 최대값 구하기 문제이다 예를들어 citations = [ 9000,7000, 10000, 5000, 6000 ] 일때 1번 이상 인용된 논문 = 5편 >= 1편 이상 2번 이상 인.. 2023. 12. 8.
[프로그래머스 lv2] 숫자 카드 나누기 https://school.programmers.co.kr/learn/courses/30/lessons/135807 우선 두가지 경우가 있다 1. 철수는 모두 나눠지는데 영희는 모두 안 나눠지는 경우 2. 철수는 모두 안 나눠지는데 영희는 모두 나눠지는 경우 처음에는 철수, 영희 각각의 최대공약수를 구하고 그것이 상대방의 수를 모두 나눌 수 있는지를 확인하려고 했다 하지만 만약 상대방의 수가 하나라도 나눠진다면 다음 최대공약수를 찾아야하고 log(min(a, b))또 다시 상대방의 배열을 순회 log(n) 하며 확인해야한다. 하지만 이렇게 한다면 제한사항 케이스일때 시간초과가 날 것이다. 사실 문제가 원하는 조건을 잘 뜯어보면 a의 범위를 확 줄일 수 있다 위의 첫번째 경우에서 "철수배열의 수를 모두 나.. 2023. 12. 8.
[프로그래머스] 숫자 변환하기 https://school.programmers.co.kr/learn/courses/30/lessons/154538# 문제요점 세 연산의 모든 조합 숫자가 y초과하면 더이상 연산할 필요없다 첫번째 풀이 bfs (성공) 최소 연산 횟수 => bfs 를 생각했다. y가 x로 변환하는 방법 x미만의 결과가 나오는 연산은 고려할 필요없다 최소연산 횟수 만에 찾기위해 num /3, num/2, num-n 순으로 찾았다. function solution(x, y, n) { const queue = [{num: y, count: 0}]; while(queue.length) { const {num, count} = queue.shift(); // shift는 O(n); // x가 되는 연산을 찾음 if (num ===.. 2023. 12. 6.
[레벨2] n^2 배열 자르기 문제링크 첫번째 풀이 (성공) index의 값 = 항과 열의 최대값 + 1이다 0 1 2 0 1 2 3 1 2 2 3 2 3 3 3 0 1 2 3 0 1 2 3 4 1 2 2 3 4 2 3 3 3 4 3 4 4 4 4 function solution(n, left, right) { var answer = []; for (let index = left; index 2023. 11. 3.
[프로그래머스 LV2] 연속 부분 수열 합의 개수 JS 문제링크 문제 요점 원형수열 안 연속부분의 합으로 만들수 있는 수가 몇가지? 첫번째 풀이(성공) 원형수열이므로 사이클이 생긴다. elements길이 ≤ 1,000이니까 elements를 덧붙여서 cycle배열을 만들 수 있다. 첫번째 갯수별로 순회한다 (선택한 숫자가 1개일 때, 2개일때......n개 일때) 두번째 시작인덱스로 순회한다 (시작인덱스가 0, 시작인덱스가 1.... 시작 인덱스가 n) 이 둘을 합치면 "선택한 숫자가 1개일때 시작인덱스가 0", "선택한 숫자가 1개일때 시작인덱스가 1"... 이런식으로 선택이 되는데 선택된 수의 합sum을 set에 추가한다. set의 size반환 function solution(elements) { const set = new Set(); const cyc.. 2023. 11. 3.
[다익스트라] 배달 https://school.programmers.co.kr/learn/courses/30/lessons/12978 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제정리 1번 마을에서 출발 K시간 이하까지의 마을에 배달을 한다. 배달이 되는 마을 갯수는? 1에서 각 마을까지 최단거리 배열을 구하고 그 중 최단거리가 K보다 작은 마을 갯수를 리턴한다 첫번째 풀이(성공) 하나의 시작노드에서 다른 노드로 이동, 최단기간 => 다익스트라 1. 그래프 생성 2. weightArr, queue 시작점 초기화 3. while queue 순회 3-1. 이웃노드찾기 3-.. 2023. 11. 1.