일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- useEffect return
- KDT 프로그래머스
- Frontend Roadmap
- 개발자 특강
- 모던 자바스크립트 Deep Dive TIL
- 프로그래머스 K_Digital Training 프론트엔드
- 백준 js
- useRef 지역 변수
- 투포인터알고리즘 js
- 모던 자바스크립트 TIL
- 모던 javascript Deep Dive
- 프로그래머스 데브코스 프론트엔드
- 프로그래머스 K_Digital Training
- 리팩토링 회고
- react customHook 예시
- 모던 자바스크립트 딥다이브
- 우테캠 회고록
- 백준 node.js
- Vue3
- 인프런 자바스크립트 알고리즘 문제풀이
- 머쓱이
- TypeScript 문법 소개
- 프로그래머스 데브코스 프론트엔드 TIL
- KDT 프로그래머스 데브코스 프론트엔드
- 프로그래머스 데브코스
- frontend roadmap study
- K_Digital Training
- 모던 자바스크립트 Deep Dive
- react 프로젝트 리팩토링
- Vue3 Router
- Today
- Total
목록알고리즘_JS/백준_Greedy (19)
프론트엔드 개발자의 기록 공간

백준 그리디 알고리즘 2437번_저울 난이도 : 골드III 문제 설명 입출력 문제 풀이 : 약간의 수학적 지식이 필요한 문제인거 같다. 맨처음에 모든 경우의 수를 다 구해서 풀어야하는줄 알았다.. 다른 블로그를 참고하니 그렇게 접근하는 것이 아니였다.ㅠㅠㅠ 우선 추를 오름차순으로 정렬해준다. 그 후 반복문을 현재 추의 무게와 누적합 +1 값을 비교해준다. 누적합 +1 이 현재 추보다 크거나 같다면 이는 누적합 +1 까지 표현이 가능하다는 의미이다. 누적합 +1이 현재 추보다 작다면 이는 표현이 불가능하다는 것을 의미한다. //골드3 저울 function solution(n, list) { //오름차순 list.sort(function(a,b){ return a - b; }) let sum = 0; for..

백준 그리디 알고리즘 4796번_캠핑 난이도 : 실버V 문제 설명 입출력 문제 풀이 : 문제를 쉽게 해석하면 P영업일 동안 L일만 사용할 수 있다. 즉 P가 8, L이 5라고하면 1~8일중 5일만 사용할 수 있고 그다음 9~16일중 5일 사용할 수 있다는 의미이다 즉 영업 쿨타임(?)이 8일이라는 소리이다. 그래서 알고리즘을 휴가일수가 영업일보다 클때까지 휴가일수 - 영업일을 빼면서 사용일수를 카운트 해주면된다. 휴가일수가 영업일 보다 작을때는 휴가일수와 사용일수를 비교하여 더 작은값을 넣어줘야한다. //실버 5 캠핑 function solution(list) { let L = 0; //L일 동안 let P = 0; //P일 중 let V = 0; //휴가 일수 let cnt = 0; //이용 일 수 f..

백준 그리디 알고리즘 1138번_한 줄로 서기 난이도 : 실버IV 문제 설명 입출력 문제 풀이 : 맨 처음에 문제를 읽었을때 이 문제가 골드나 된다고 의심을 품었다. 겉으로 보기에는 너무나 쉬웠다. 하지만 여러가지 고려해야할 사항들이 있다는 것을 나중에 알았다. 고려해야할 사항 : 음수들의 곱셈은 양수가 된다!, 1은 덧셈이 더 큰 결과값이 된다!, 0는 양수와 계산할때는 덧셈, 음수와 계산할때는 곱셈!을 해줘야 최대값이 나온다. 실패한 첫번째 풀이 방법 : 주어진 입력을 큰 수대로 내림차순 정렬후 반복문을 통해 첫번째 수는 tmp변수에 저장하고 두번째 변수가 나오면 tmp와 곱셈, 덧셈을 각각 한 후 큰 값을 result로 넣어주었다. (*리스트의 길이가 홀수인 경우도 처리해주었다.) 이렇게 해서 테스..

백준 그리디 알고리즘 1138번_한 줄로 서기 난이도 : 실버II 문제 설명 입출력 문제 해설 : 이 문제의 핵심은 입력으로 주어지는 순서가 "키의 순서"이다. 그리고 해당 값이 왼쪽에 몇명있는지를 나타내는 숫자이다. 즉 입력예제 2 1 1 0은 키1인 사람의 왼쪽에는 자신보다 큰 두명이 있고 키 2인 사람의 왼쪽에는 자신보다 큰 한명이있고 키3인 사람의 왼쪽에는 자신보다 큰 한명이 있고 키 4인 사람은 자신보다 큰 왼쪽의 사람은 0명이 있다는 의미이다. // 실버2 한 줄로 서기 function solution(n, list) { let result = new Array(n).fill(0); //i는 키 순서를 의미(1부터~) for(let i=1; i

백준 그리디 알고리즘 1080번_행렬 난이도 : 실버II 문제 설명 입출력 문제 풀이 : 행렬 A, B가 주어졌을때 A를 B로 바꾸는 최소 횟수를 구하면 된다. 행렬 변환시는 3*3만 가능하다는것이 중요한 포인트이다. A B C D E 0 0 0 0 F 0 0 1 0 G 0 0 0 0 A~G는 행열을 구분하기 편하게 임의로 지정한것이므로 무시해도 좋습니다. 입출력으로 주어진 예제는 3*4 행렬이다. 하지만 행렬 변환은 3*3이다. 3*3변환을 이용하여 3*4를 행할려면 2번을 수행해야한다. 한번 수행할때 A,E 지점부터 C,G지점까지 가능하다. 그러면 G지점이 아직 수행되지않았다. 그 다음엔 B,E지점부터 D,G지점까지(3*3)을 행하면 두번의 연산이 가능하다. 하지만 문제에서 최소 횟수를 구해야하므로 ..

백준 그리디 알고리즘 1946번_신입 사원 난이도 : 실버I 문제 설명 입출력 문제 풀이 : 입력으로 주어지는 지원자의 서류심사 성적 순위, 면접 성적 순위가 키 포인트이다. 점수가 아닌 순위이다. 또한 문제에서 "어떤 지원자 A의 성적이 다른 어떤 지원자 B의 성적에 비해 서류 심사 결과와 면접 성적이 모두 떨어진다면 A는 결코 선발되지 않는다." 이 말은 즉 A가 B보다 성적이든 면접이든 한 개의 등수만 높다면 뽑힌다는 얘기이다. 따라서 주어진 입력값을 성적 순위나 또는 면접 순위별로 정렬을 해준다(필자는 성적 순위 기준으로 정렬) 이후, 성적 순위별로 높은순서대로 정렬이 되어있으므로 면접 순위만 따져줘서 합격인지 불합격인지 가려내면된다. 성적 순위가 1등인 사원은 무조건 합격이므로 카운트를 세어준다..