Algorithm

Algorithm

[자료구조] 그래프(feat. Javascript)

그래프 정점과 정점 사이를 연결하는 간선으로 이루어진 비선형 자료구조, 정점 집합과 간선 집합으로 표현할 수 있다. 실제 소프트웨어 사용 사례 1. 지하철 노선도 2. 페이지 랭크 https://ko.wikipedia.org/wiki/%ED%8E%98%EC%9D%B4%EC%A7%80%EB%9E%AD%ED%81%AC 페이지랭크 - 위키백과, 우리 모두의 백과사전 위키백과, 우리 모두의 백과사전. ko.wikipedia.org 그래프의 특징 정점은 여러 개의 간선을 가질 수 있다. 크게 방향 그래프와 무방향 그래프로 나눌 수 있다. 간선은 가중치를 가질 수 있다. 사이클이 발생할 수 있다. 간선 방향에 따른 그래프 분류 1. 무방향 그래프 - 간선으로 이어진 정점끼리는 양방향으로 이동이 가능하다. 표현하기에..

Algorithm

[Codility] PermMissingElem - Javascript

문제 설명 N개의 서로 다른 정수로 구성된 배열 A가 제공됩니다. 배열에는 [1..(N + 1)] 범위의 정수가 포함되어 있습니다. 이는 정확히 하나의 요소가 누락되었음을 의미합니다. 당신의 목표는 누락된 요소를 찾는 것입니다. 함수 작성: 기능 솔루션(A); 배열 A가 주어지면 누락된 요소의 값을 반환합니다. 예를 들어, 주어진 배열 A는 다음과 같습니다. A[0] = 2 A[1] = 3 A[2] = 1 A[3] = 5 함수는 누락된 요소이므로 4를 반환해야 합니다. 다음 가정에 대한 효율적인 알고리즘을 작성하십시오 . N은 [ 0 .. 100,000 ] 범위 내의 정수입니다 . A의 요소는 모두 별개입니다. 배열 A의 각 요소는 [1..(N + 1)] 범위 내의 정수입니다. 풀이 코드 function..

Algorithm

[프로그래머스] 프린터 - Javascript

코드 function solution(priorities, location) { let answer = 0; let compareArr = []; let finArr = []; let print; // 처음 지정한 출력물이 나중에 몇번째로 이동해있는지 찾기위해 인덱스와 함께 있는 형태로 2차 배열을 만들어줌 priorities.forEach( (elem, idx) => { let temp = [idx, elem]; compareArr.push(temp) }) // 비교할 배열의 첫번째 값을 가지고 그 뒷 값들중 큰게 있냐 없냐로 비교배열에서 뺴서 finArr에 담을지 아니면 가장 뒤로 옮길지 결정함 while(compareArr[0]){ print = compareArr.shift(); if(compar..

Algorithm

[프로그래머스] k번째 수 - Javascript

최초 풀이 function solution(array, commands) { var answer = []; for (var i = 0; i < commands.length; i++){ let selectedArray = array.slice(commands[i][0] - 1, commands[i][1]); selectedArray.sort(); answer.push(selectedArray[commands[i][2] - 1]) } return answer; } 제출하면 테스트 1개가 실패했다고 나온다. 풀이 방식은 맞는 거 같은데 어디서 틀렸는지 계속 찾다가 이유를 알게 되었는데 바로 sort() 메서드 부분이었다. sort 메서드는 compareFunction을 받는 메서드인데, compareFunct..

Algorithm

백준 No.11053 : 가장 긴 증가하는 부분 수열(LIS) [파이썬]

가장 긴 증가하는 부분수열(LIS) DP 문제이다. 풀이 방법을 그림으로 자세히 보려면 아래 블로그를 참고하면 된다. https://bitwise.tistory.com/215 포스팅 목적은 풀이 방식을 코드로 표현한 부분이 잘 이해가 되지 않아서 시작하게 되었다. # 그림 설명 1. 입력값 배열에 맞는 DP 배열을 처음에 1 값으로 모두 세팅을 해둔다. 2. 입력값 배열과 DP 배열을 이용해서 조건에 맞는 부분만 카운트를 증가시켜 준다. (여기서 말하는 조건 : 이전 값들과 비교해서 자신이 크면 작은 값들의 DP값 중 가장 큰 값에 +1 한 값을 갖는다.) 3. 좌측 부터 우측으로 입력값 배열을 하나씩 보며 넘어감 (예를 들어 입력값 배열의 값이 동그라미 친 '20' 인 경우) 20의 좌측 값들 중 20..

Algorithm

백준 2630 문제(파이썬)

색종이 만들기 풀이 과정 1. 전체 범위부터 값이 한 가지 값으로만 이루어져 있는지 확인(check) 2. 4등분하여 각 등분한 부분마다 한 가지 값으로 이루어져 있는지 확인(재귀) 3. 확인이 된 부분은 어떤값으로(0 or 1) 이루어져 있는지 확인하고 값에 따라 white, blue 값 카운트 업 4. 확인이 안된부분은 또 한 번 4등분 from sys import stdin N = int(stdin.readline()) paper = [list(map(int, stdin.readline().split())) for _ in range(N)] white = 0 # 값이 0이면 흰색 카운트 업 blue = 0 # 값이 1이면 파란색 카운트 업 def check(x, y, N): compare_color..

Algorithm

백준 1011번 풀이(파이썬)

www.acmicpc.net/problem/1011 1011번: Fly me to the Alpha Centauri 우현이는 어린 시절, 지구 외의 다른 행성에서도 인류들이 살아갈 수 있는 미래가 오리라 믿었다. 그리고 그가 지구라는 세상에 발을 내려 놓은 지 23년이 지난 지금, 세계 최연소 ASNA 우주 비행 www.acmicpc.net 문제 이해하는데 한참걸렸다. 결국 구글링해서 무슨뜻인지 알아냈고 많은 분들의 포스팅을 보고 규칙을 확인하였다. 문제에서 조건상 가장 마지막 이동거리는 1로 고정적으로 들어가야 한다고 했다. 문제에서 이동거리를 한번에 늘릴수도 줄일수도 없게 설정이 되어있다. 무조건 한칸씩 늘리거나 줄이란다. (+1 or -1) 그래서 거리좀 벌린다 싶으면 다시 줄여야 하는 포물선같은 ..

Algorithm

백준 11729번 : 통곡의 하노이 탑 (feat. python)

BOJ No11729 : 하노이의 탑 이동 순서(파이썬) 과장 없이 이 문제만 하루 종일 10시간 정도 본 것 같다... 아직도 혼자서 처음부터 풀면 막히지만 계속하다 보면 언젠간 이런 종류의 재귀 함수 문제를 술술 풀 수 있는 경지에 오를 날이 오리라 믿으며 포스팅을 한다. 하노이탑 규칙에 대한 이해는 아래 "파이썬클래스" 님의 영상으로 도움받았다. www.youtube.com/watch?v=FYCGV6F1NuY 정답으로서 활용된 코드 def hanoi(n, a, b): if n > 1: hanoi(n-1, a, 6-a-b) # 기둥이 1개 이상이면 그룹으로 묶인 n-1개 원판을 # 중간으로 먼저 다 옮긴다 print(a, b) if n > 1: hanoi(n-1, 6-a-b, b) n = int(in..

개발늦둥이
'Algorithm' 카테고리의 글 목록