SIU
article thumbnail
[프로그래머스 레벨2] H-Index [Javascript/ 정렬]
JavaScript/알고리즘(JS) 2023. 3. 6. 06:05

문제 유형 : 정렬 https://school.programmers.co.kr/learn/courses/30/lessons/42747 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 풀이 이 문제에서 핵심은 논문 개수 h 최대값을 구해야한다. (배열 요소의 값이 아니다!) 내림 차순으로 정리한 이유는 최댓값을 빨리 찾아 시간 복잡도를 줄이기 위해서다. 문제에서 요구하는 것은 h이상 논문 개수가 h이상 되는 최대값을 찾아야한다 논문 개수가 지금 해당 값 h 이상이기 때문에 h이하인 경우를 세어준다. (자신 의 값보다 논문의 총 개수가 많거나 같아야한다)..

article thumbnail
[프로그래머스 레벨3] 가장 먼 노드 [Javascript/ BFS]
JavaScript/알고리즘(JS) 2023. 3. 5. 09:33

문제 유형 : BFS https://school.programmers.co.kr/learn/courses/30/lessons/49189 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 풀이 그래프 문제 (노드, 간선, 최단경로 키워드) 최단 경로가 제일 큰 경우의 집합을 구하는 문제입니다. 그래프를 연결리스트로 구현했습니다. 최단 거리 문제이기 때문에 BFS 알고리즘을 사용했습니다. 전체 코드 function solution (n, edge){ const graph = Array.from(Array(n+1), () => []) // 문제 : 간선은 양..

article thumbnail
[프로그래머스 레벨3] 입국심사 [Javascript/이진탐색]
JavaScript/알고리즘(JS) 2023. 3. 5. 01:29

문제 유형 : 이진탐색 https://school.programmers.co.kr/learn/courses/30/lessons/43238?language=javascript 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 풀이 이진 탐색은 범위가 있어야하고 범위라는 건 시작점(최솟값)과 끝점(최대값)을 알아야 한다. times 배열에서 최댓값을 구할 때 sort 대신 Math.max(...배열)을 사용해서 구했다. sort는 n log n 이지만 Math.max는 n 의 시간복잡도를 가진다. 최솟값은 한 명을 심사하는데 걸리는 시간이 1분이상이므로 1..

article thumbnail
[프로그래머스 레벨2] 위장 [Javascript/해쉬, 객체]
JavaScript/알고리즘(JS) 2023. 3. 4. 16:23

https://school.programmers.co.kr/learn/courses/30/lessons/42578 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 전체 코드 1. 객체 function solution(clothes) { let answer = 1; let ch = {} clothes.forEach((it) => { ch[it[1]] = ch[it[1]] ? ch[it[1]] + 1 : 1; }) //console.log(ch) // { headgear: 2, eyewear: 1 } // values로 계산 const values = Obje..

article thumbnail
[프로그래머스 레벨1] 폰켓몬 [Javascript/해쉬]
JavaScript/알고리즘(JS) 2023. 3. 4. 14:13

문제 유형 : 해쉬 https://school.programmers.co.kr/learn/courses/30/lessons/1845 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 활용 만약에 중복되는 원소를 묻는 문제가 나왔다면 Set 객체의 size와 배열의 length의 차이를 빼주면 중복 원소를 알 수도 있겠다. 문제 도식화 전체 코드 function solution(nums) { // 뽑을 수 있는 포켓몬 : 길이/2 let max = nums.length/2; // 폰켓몬 종류 : 중복 숫자 제외 const hash = new Set(num..

article thumbnail
[프로그래머스 레벨1] 완주하지 못한 선수 [Javascript/해쉬, 정렬]
JavaScript/알고리즘(JS) 2023. 3. 4. 05:47

문제 유형 : 해쉬, 정렬 https://school.programmers.co.kr/learn/courses/30/lessons/42576?language=javascript 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 접근법 두 배열에서 서로 다른 원소를 찾으면 된다. [첫 번째 풀이]는 배열을 정렬해주고 다른 요소를 발견하면 return 시킨다 participant(참가자) 배열과 completion(완주자) 배열 모두 sort()를 이용해서 정렬시키자. 그리고 인덱스 0부터 두 배열을 비교하면 for문 한 번으로 문제를 해결할 수 있다. part..

article thumbnail
[프로그래머스 레벨3] 베스트 앨범 [Javascript/해쉬, 객체]
JavaScript/알고리즘(JS) 2023. 3. 4. 02:30

문제 유형 : 해쉬, 객체 https://school.programmers.co.kr/learn/courses/13213/lessons/91081 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 풀이 과정 1. 우선 장르별로 총 재생횟수의 합을 저장해놓은 후, 재생 횟수별로 내림차순 정렬을 해놓는 과정이 필요하다. ex) [{pop:3100},{classic:1450}]과 같은 형태 2. 고유번호, 장르, 재생횟수가 한데에 모아져있는 객체가 필요하다. [ { genre: 'classic', index: 0, playCnt: 500 }, { genre:..

article thumbnail
[ALGO#07] 프로그래머스 레벨2 귤 고르기 [Javascript]
JavaScript/알고리즘(JS) 2023. 3. 1. 20:50

https://school.programmers.co.kr/learn/courses/30/lessons/138476 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제유형 : 해쉬, 정렬 function solution(k, tangerine) { // 서로 크기가 다른 귤 객체 const sizes = {}; // key(해당 귤 크기)가 없으면 추가, 있으면 기존 개수 증가 tangerine.forEach((it) => sizes[it] ? sizes[it]++ : sizes[it] = 1); // 객체의 value 값(귤 개수만 가져옴) const ..