
https://school.programmers.co.kr/learn/courses/30/lessons/42628#qna 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr문제 분석위 문제는, 대량의 연산 종료 후 최소와 최대를 찾아내는 문제이다. 연산의 개수가 1,000,000이기 때문에 최대 배열 길이를 1,000,000이라고 간주하면 1초안에 해결하기 위해서는 배열 배치 등이 100번 이내여야한다. 즉 O(NlogN)수준을 넘으면 안된다. 연산의 종류는 다음과 같다 1. 삽입 2. 최소 제외 3. 최대 제외 삽입, 및 최소 or 최대 삭제를 적은 시간에 해낼 수 있는 자료구조는 Heap이 있다. Hea..

https://school.programmers.co.kr/learn/courses/30/lessons/84021 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제 분석 쉽게 요약하면, game_board의 빈 칸에 알맞는 블록을 table에서 찾아 끼우는 것이다.참고로 table의 블록은 회전이 가능하다. 이런 블록은 배열을 이중for문 돌면서 bfs로 아직 탐색안한 블록을 찾아내면 된다. 방문한 곳은 다시 방문하지 않도록 표시를 잘 해주면 최적화할 수 있다. 그럴 경우 빨->주->노->초->파->보 순서로 블록공간을 찾아낸다. 블록을 어떻게 저장할 것인가?game_board나 table이나 구멍,..
https://school.programmers.co.kr/learn/courses/30/lessons/340213 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제 분석이번 문제는 어려운 문제는 아니다. Lv 1이기도하고..사실 간단한 구현 문제에 가깝다. 각 기능은 다음과 같은 주의사항이 있다.기능 설명prev- 10초 전으로 이동한다- 현 위치가 10초 미만이었다면 0초로 이동한다next- 10초 후로 이동한다- 현 위치가 영상 끝까지 10초가 안남았을 때는 영상 끝으로 이동한다skip- 오프닝은 무조건 건너뛴다- 현 위치가 오프닝 사이라면 오프닝 끝으로 간다- prev, next 명령어 시에도..

https://school.programmers.co.kr/learn/courses/30/lessons/92343 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 입력 분석데이터의 크기는 최대 17밖에 되지 않는다.따라서 어떤 방법을 써도 문제는 해결되긴 한다. 여기서는 모든 경우의수를 탐색해서 양이 늑대에게 잡아먹히지 않는 경우의 최대를 찾아야 한다. 이진트리구조 자체는 이진트리이다.하지만 탐색이 단순 DFS나 BFS의 방식으로 이루어지면 안된다. 왜냐하면 DFS와 BFS는 탐색 순서가 하나로 정해지기 때문에 모든 탐색 경우의 수를 고려할 수 없다. 따라서 DFS 를 사용하되, 추가적인 개념으로 방문 ..

https://school.programmers.co.kr/learn/courses/30/lessons/17685 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제 분석어디까지 입력해야 자동완성이 내가 찾으려는 단어만 딱 표시하는지를 찾으면 되는 문제다. 자료구조 (Trie)단어는 맨 첫글자부터 순차적으로 입력된다는 것을 생각했을 때, 일종의 트리 구조처럼 각 글자를 따라 내려가면 되겠다는 생각을 했다. 이럴 때 사용하는 자료구조가 바로 Trie다.문자열 트리구조인데, 예시를 보면 간단하다. 예시gogoneguild 아래는 위 단어들을 가지고 트리를 만든 구조이다.각 노드는 아래같은 구조로 만들면 공..

문제 링크 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 풀이 1차 시도처음에는 단순하게 재귀를 통한 완전 탐색으로 풀려고 했다.max_height = 0max_result = 0def solution(triangle): global max_height max_height = len(triangle) visit(0,0,0,triangle) return max_result def visit(i,j, cur_sum, triangle): global max_height if i == max_height: global max_result max_..

https://school.programmers.co.kr/learn/courses/30/lessons/42892이진 트리이진트리는 하나의 부모 노드에 자식 노드가 (최대)두개인 트리를 의미한다.이진트리도 트리의 최종 구조에 따라 완전 이진트리, 포화 이진트리, 전 이진트리, 이진 트리 등으로 나눌 수 있다.문제 해결하기이 문제에서는 단순한 기본 이진 트리의 구조를 하고 있다.단지 특징이 있다면,level을 좌표의 y값으로 표시임의의 노드 V 기준으로 왼쪽 서브트리의 모든 노드 x값은 V의 x보다 작고, 오른쪽 서브트리의 모든 노드 x값은 V의 x값보다 큼위 두가지 특징을 가지고 있다.입력입력되는 배열은 노드를 [x,y]로 표현한 이중 배열이다.[[5,3],[11,5],[13,3],[3,5],[6,1],..
const fs = require("fs"); const rawInput = fs.readFileSync('dev/stdin').toString().split(/\n/g); const N = +rawInput.shift(); const A = rawInput.shift().split(/ /g).map(Number); const op = rawInput.shift().split(/ /g).map(Number); let min = Infinity; let max = -Infinity; const recurse = (n, now, ops) => { // 종료부 if (N === n) { // 최소보다 작으면 최소를 변경 if (min > now) { min = now; } // 최대보다 크면 최대를 변경 if..