본문 바로가기

반응형

ProgramSoliving

(197)
프로그래머스 : 트리 트리오 중간값 javascript 문제풀이 기본적으로 javascript는 코딩 테스트 문제를 푸는것에 적절한 언어가 아닙니다. 해당문제는 BFS탐색을 필요로하는 문제입니다. 1. 임의이 node에서 가장먼 node를 구합니다. 그것을 x라고 하겠습니다. 2. x에서 가장 먼 노드를 구합니다. 그것을 y라고 하겠습니다. 이때 발견된 y가 2이상이라면 x - y의 길이를 반환합니다. 3. 발견된게 1개라면 1. 2. 를 진행하고 그래도 1개라면 distance -1 을 진행합니다. // 트리의 지름을 구하는 방법은 그리디를 이용해서 풀수가 있다. // 1. 임의의 노드 a 에서 가장 깊은 노드 b를 DFS or BFS를 이용해서 구한다. // 2. b노드에서 가장깊은 노드 c를 찾으면 b-c가 트리의 지름이 된다. class Queue {..
프로그래머스 : 줄서는방법 JavaScript 문제 설명 n명의 사람이 일렬로 줄을 서고 있습니다. n명의 사람들에게는 각각 1번부터 n번까지 번호가 매겨져 있습니다. n명이 사람을 줄을 서는 방법은 여러가지 방법이 있습니다. 예를 들어서 3명의 사람이 있다면 다음과 같이 6개의 방법이 있습니다. [1, 2, 3] [1, 3, 2] [2, 1, 3] [2, 3, 1] [3, 1, 2] [3, 2, 1] 사람의 수 n과, 자연수 k가 주어질 때, 사람을 나열 하는 방법을 사전 순으로 나열 했을 때, k번째 방법을 return하는 solution 함수를 완성해주세요. 제한사항 n은 20이하의 자연수 입니다. k는 n! 이하의 자연수 입니다. 입출력 예 nkresult 3 5 [3,1,2] 입출력 예시 설명 입출력 예 #1 문제의 예시와 같습니다. 풀이방..
프로그래머스 : 단어 변환 JavaScript var answer; function solution(begin, target, words) { answer = 987654321; var len = words.length; var Edge = Array(len); var map = new Map(); var targetNum; for(let i=0; i
프로그래머스 : N으로 표현 JavaScript var min = 9; function DFS(N, number, count, result) { if(min count ? count : min; return; } if(count===8) return; let rest = 8 - count; let nn = 0; for(let i=0;i 8) answer = -1; else answer = min; return answer; } N 1개로 만들 수 있는 표현 : N N 2개로 만들 수 있는 표현 : N+N , N/N, NN, N*N, N-N N 3개로 만들 수 있는 표현 : N+N+N, NN/N, NNN, NN*N, NN-N, N-NN 가장 중요한건 연속된 NN이다. DFS로 모든 사칙연산에 대해서 조사한다면 완전탐색가능하다. ( N3회 사용) (사칙연..
프로그래머스 : 메뉴 리뉴얼 package 연습; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; public class b { public static void main(String[] args) { String[] orders = { "ABCFG", "AC", "CDE", "ACDE", "BCFG", "ACDEH" }; int[] courcse = { 2, 3, 4 }; System.out.println(new b().solution(orders, courcse)[1]); } static HashMap map = new HashMap(); public String[] solution(String[] orders, int[] course)..
백준 : 8972 www.acmicpc.net/problem/8972 8972번: 미친 아두이노 요즘 종수는 아두이노를 이용해 "Robots"이라는 게임을 만들었다. 종수는 아두이노 한대를 조정하며, 미친 아두이노를 피해다녀야 한다. 미친 아두이노는 종수의 아두이노를 향해 점점 다가온다. www.acmicpc.net package boj; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; public class boj8972 { static int R, C; static int map[][]; static int dy[] = { 1, 1, 1, 0, 0, 0..
백준 : 2632 피자판매 www.acmicpc.net/problem/2632 2632번: 피자판매 첫 번째 줄에는 손님이 구매하고자 하는 피자크기를 나타내는 2,000,000 이하의 자연수가 주어진다. 두 번째 줄에는 A, B 피자의 피자조각의 개수를 나타내 는 정수 m, n 이 차례로 주어진다 (3 ≤ m, n www.acmicpc.net 부분합을 구하는 문제인데 순환된 구간의 부분합을 구하는 문제이다. 단순히 sum에 대한 카운팅하는 문제이지만 원형큐 자료구조로 구하기가 까다로워보인다 이럴때는 배열의 크기를 두배로 늘리자 [1,7,7,2,4]의 배열을 [1,7,7,2,4,1,7,7,2,4] 의 배열로 만든다음 i~j 합을 구하며된다 그때는 초반크기 5의 기준으로 구한다. 주의할점은 i~ i+전체크기 구간의 sum은 모드 같은..
백준 : 10653 www.acmicpc.net/problem/10653 10653번: 마라톤 2 젖소 박승원이 2번째 와 4번째 체크포인트를 건너뛸경우 경로는 (0,0) -> (1,1) -> (2,2) 로 4가 된다. 이보다 더 짧게 달릴수는 없다. www.acmicpc.net 문제 유형 다이나믹 프로그래밍 dp[n][k]는 n번째 위치까지오는데 k개의 개수만큼 가지 않았을때 최소거리 dp[n][k] = min(dp[n-1][k-1] + distance[n-1][n] , dp[n-2][k-2] + distance[n-2][n] ....) 점화식을 얻어짐... 모든 경우에 대해 다보는거 같지만 메모이제이션으로 이전에 구햇던 구간에대해서는 값을 구해낼수 있기때문에 O(N^2)시간내에 답을 구할 수 있다. NCK의 조합으로 구..

반응형