반응형

2024/08 33

백준 11000 : 강의실 배정 - javascript()

문제 출처 https://www.acmicpc.net/problem/11000 문제 풀이 생각의 전환이 필요한 문제였다.  - 일단 시간들을 오름차순으로 정렬하자 - 정렬한 시간들을 탐색한다.   - 그때 start의 시간이라면 방이 하나 필요하다 "+1" 는 뜻   - 그때 end의 시간이라면 방을 하나 반납한다 "-1" 는 뜻  - 매순간 방을 최대로 쓴 값이 답이 된다.     - 왜냐하면 이미 우리는 강의실을 최적으로 정렬을 해놨기 때문에       그때 필수적으로 써야 했던 방의 개수가 최소의 강의실을 사용하는 것이 된다. 정답 코드 let fs = require('fs');let [N, ...input] = fs.readFileSync('/dev/stdin').toString().trim()...

프로그래머스: 순위 검색 - 실수 축제 (map 객체에 값 추가하기, replace)

문제 코드 for(let candi of candi_key){ if(!map.has(candi)) map.set(candi, []) let arr = map.get(candi).push(score) //틀린 부분 map.set(candi, arr) } 틀린 이유 map.get(candi).push(score)가 배열의 'push' 메서드인데, 이 메서드는 호출한 배열의 길이를 반환한다. 즉, arr에는 배열이 아니라 score가 추가된 후 배열의 길이가 할당된다. 따라서, map.set(candi, arr) 를 할 필요가 없다. 그냥 push 메서드로 배열에 값을 추가하면 된다. 왜냐하면 배열은 이미 참조로 연결되어 있으므로 map에..

백준 12015 : 가장 긴 (LIS 알고리즘, 이진탐색) - javascript

문제 출처 https://www.acmicpc.net/problem/12015 정답 풀이  참 좋은 문제이고, 기가막힌 방법이다. 문제에서 가장 긴 수열 알고리즘의 길이를 구하라고 했으니,  - LIS 알고리즘을 활용하기 - LIS 알고리즘을 돕는 헬퍼 이진탐색 활용하기  LIS 알고리즘의 푸는 아이디어만 간단하게 공유하면 될 것 같다.  ### LIS 알고리즘 수열 = {10,20,10,30,20,50} 인 경우로 보자.  - 먼저 배열에 10을 넣는다.   - 새로 넣어야 하는 수는 20이다 - 배열의 마지막 값인 10과 비교했을 때 20이 더크니 배열에 추가한다.   - 새로 넣어야 하는 수는 10이다- 배열의 마지막 값인 20과 비교했을 때 10이 더 작다. - 배열에서 10보다 크지만 가장 작은..

프로그래머스: 길 찾기 게임 - javascript(트리)

문제 출처 https://school.programmers.co.kr/learn/courses/30/lessons/42892 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 정답 풀이 트리를 생성하고, 트리를 탐색하면 되는 문제다.  ### 0. 기존 세팅  문제에서 주어지는 `nodeinfo`를 새로운 배열로 정리 및 정렬을 해야 한다. 기준은, -  노드의 번호는 idx+1 이 된다. -  노드의 x값은 node[0]이 된다. -  노드의 y값은 node[1]이 된다.  정렬은, - y값을 기준으로 내림차순을 한다. (이유: 부모 자식 부터 차례대로 tre..

The above error occurred in the <input> component

에러 메시지 The above error occurred in the  component:React will try to recreate this component tree from scratch using the error boundary you provided, ErrorBoundary. 에러 발생 코드 에러 이유 - input 태그는 닫는 태그 없이 사용해댜 한다. - 즉, input 태그는 self-closing 태그이다.  코드 수정 - input의 value 속성으로 값을 넣는다. => input 필드가 data.nickname 값으로 초기화되고, => 값이 update 될 때마다 input 필드의 값도 자동으로 업데이트 된다.

백준 1744: 수 묶기 - javascript(그리디)

문제 출처 https://www.acmicpc.net/problem/1744 문제 풀이머리 뽀갈 날뻔 했다.그래도 1시간 30분 걸려서 풀어냈다..    역시 test case를 추가하면서 어떤 부분을 놓쳤는지 알아내는 것이 참 중요하다 처음에 작성한 코드는 웬만하면 틀린 부분이 있기 때문에,  console.log() 를 잘 이용해서 자신의 실수를 잘 발견하는 것이 코테의 핵심이라는 생각이 든다.  거두절미하고, 이 문제의 핵심은 뭐다?"어떻게 묶어야 최대의 값이 될까?" 내가 세운 기준은 이렇다.  - 1. 절대값이 큰 숫자대로 곱한다. - 2. 양수끼리 계산하고, 음수끼리 계산한다. - 3.양수끼리 계산할 때 1은 묶지 말고 더해준다. - 4. 음수끼리 계산할 때 0이 있다면 묶어준다.  이제 이 ..

백준 1339: 단어 수학 - javascript(그리디)

문제 출처 https://www.acmicpc.net/problem/1339 문제 풀이 이건 정말 아이디어가 필요했다. 난 정~ 말 복잡하게 풀었었는데, 해법을 보고 머리를 탁 ~ 쳤다 ! 앞으로 비슷한 문제가 있다면 이런 접근을 활용해야 겠다   이 문제는 사실 두개를 고려해야 하는데 우선순위가 높을 수록 높은 숫자를 받는 것이라고 할 때, - 높은 자리에 있을 수록 (십의 자리 > 일의 자리) 우선순위가 올라간다. - 빈번하게 나타날 수록 (만약 십의 자리에 있는 문자가 'A', 'B'가 있을 때, 만약 A가 일의 자리에 B보다 더 많이 나타났다면)우선순위가 올라간다. 이 복잡한 셈처럼 보이는 것이 아주 ~ 간단한 아이디어로 쉽게 풀린다.  "각 문자를 돌면서 해당 문자가 있는 자리수를 계속 더해주는..

백준 2110: 공유기 설치 - javascript(이진탐색, 그리디)

문제 출처 https://www.acmicpc.net/problem/2110 정답 풀이 흠 이 문제의 입력값을 봐보자. 집의 개수는 무려 (2공유기의 개수는 (2집의 좌표는 (0 엄청난 범위,,, 어떤 알고리즘이 생각나는가?이진탐색 !!!  이진탐색은 어떤 값을 기준으로 탐색해나갈 것인가가 중요하다. 여기서는 `공유기 사이의 최대거리`를 기준으로 탐색하면 되겠다.  공유기 사이가 될 수 있는 범위는 (1이상 ~ 가장 마지막 집 - 가장 첫번째 집) 이 될 것이다. 아래 그림을 보면 이해가 쉽다.   정리하자면,  - 공유기 거리의 최솟값은 : 1 - 공유기 거리의 최댓값은 :  마지막 집 위치 - 첫번째 집 위치    이제 문제를 두 부분으로 나눠서 생각하면 된다. - 공유기 최대 거리를 이진탐색으로 찾..

백준 1715 : 카드 정렬하기 - python (우선순위 큐, 최소힙)

문제 출처 https://www.acmicpc.net/problem/1715 정답 풀이 되게 흥미로운 문제였다. 이 문제에서 우선순위 큐를 사용한다? 생각하지 못했고, 우선순위 큐를 이용하라고 해서 고민해보니, 나온 코드다 ~  ## 1. 초기 설정 [10,20,30,40,50]이 주어졌다고 생각하자. - 아래 그림과 같이 우선순위 큐에다가 주어진 배열의 모든 값을 넣자. - answer 변수도 0값으로 할당  ## 2.  우선순위 큐에서 작은 값 두개 빼기  - 아래 그림과 같이 우선순위 큐에서 heappop()을 통해 작은 값 두개가 나오도록 한다. - heapq의 기본 설정은 최소힙이라 가장 작은 값이 나온다. - 그 후, answer에다가 10 + 20을 더한 값을 더해준다 answer = 30 ..

프로그래머스: 자물쇠와 열쇠 - javascript(단순 구현)

문제 출처 https://school.programmers.co.kr/learn/courses/30/lessons/60059 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 문제 풀이 이런 문제는 시간을 두고 본인이 해결할 때까지 다른 사람이 푼 코드를 보지 않는다면 좋겠다. 어떤 특별한 알고리즘이 필요한 것이 아니라서,, 자기가 끈질기게 구현해보는 연습을 할 수 있는 좋은 문제인 것 같다.  하지만 이 정도의 아이디어는 얻고 혼자 풀면 좋을 것 같은데 아래 그림과 같이 주어진 lock을 가로, 세로 3배씩 확장시킨 그래프로 생각하는 것이다. 그래서 거기서 k..

반응형