묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨그림으로 쉽게 배우는 자료구조와 알고리즘 (기본편)
javascript stack 다른 자료구조랑 사용해서 구현해야하는 자료구조일까요?
안녕하세요! 영상 잘봤습니다. 제가 알기론 javascript는 다른언어와 다르게 Stack이나 연결리스트를 따로 지원하지 않아 npm 라이브러리 이용하거나 구현해야하는걸로 알고있습니다. 다른 언에서의 자료구조를 안써봐서 잘 모르겠지만 구현해주신거에서는 연결리스트를 이용해서 stack을 구현하셨습니다 하지만 실질적으로 연결리스트 형식으로의 자료구조이고 그 위에 stack을 올려놓은게 맞는걸까요? stack 이라는 거는 결국에 연결리스트와 배열을 이용한 자료구조인거같아서요. 배열이나 연결리스트는 독자적으로 구현이 가능하다면 stack은 배열이나 연결리스트 등 있어야 구현이 가능한? 자료구조로 이해가되네요. 다른 언어에서도 마찬가지일까요?
-
미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
다른 방법의 DFS
다음과 같이 DFS 함수를 작성하는 것도 괜찮은 방법일까요? def DFS(L): global cnt if L == n_size: for x in result_list: print(x, end='') print() cnt += 1 return else: for i in range(L, n_size): if n[L] != '0' and 65 <= int(n[L: i+1]) + 64 <= 90: result_list.append(chr(int(n[L: i+1])+ 64)) DFS(i+1) result_list.pop()
-
미해결파이썬으로 배우는 알고리즘 기초
쉽지 않네요 ㅠ
알고리즘을 공부하려고, 강의를 찾다가 주니온 님의 강의를 듣고 있습니다. 저는 지금 Flutter 앱 개발을 위해서, Dart 언어를 공부하고 있는데, 주니온 님의 강의를 들으면서, Dart 언어에 적용해보는 것이 알고리즘을 이해하는데 도움이 될까요? 아니면, 이런 알고리즘을 적용하기에 좋은 언어가 따로 있을까요? 아직 초반인데, 분할 정복법부터 이해하는 게 많이 어렵네요 ㅠㅠ
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
flag return 에 대한 질문입니다.
안녕하세요 선생님 이번 강의에서 flag 변수를 사용해서 return 하여 값을 구하셨는데 if(L===n && f===sum) 의 구문안에서 return 하는 경우에는 결과값이 다르게 나오는데 이러한 이유가 잘 이해가 되지 않습니다.. 재귀함수로 인해 스택에서 함수가 쌓여있어서 그런 것 같은데 이해가 어렵네요 ㅠㅠ
-
미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
알고리즘 공부 관련 질문
안녕하세요 알고리즘 공부를 오늘 시작하였습니다. 파이썬이랑 C++사이를 갈등하고 있습니다. 대학교 강의는 C++인데 파이썬으로 과제나 시험응시가 가능하다고 들었습니다. 파이썬으로 공부하고 싶은데 C++이랑 파이썬이랑 개념이 많이 다른가요?
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
선생님 코드리뷰를 부탁드립니다 :)
const solution = (data) => { let answer = Number.MIN_SAFE_INTEGER; let raw = column = diagonal = reDiagonal = 0; for(let i=0; i<data.length; i++) { raw = column = 0; diagonal += data[i][i]; reDiagonal += data[i][data.length-1-i]; for(let j=0; j<data.length; j++) { raw += data[i][j]; column += data[j][i]; } answer = Math.max(answer, raw, column); } answer = Math.max(answer, diagonal, reDiagonal); return answer; }
-
미해결
다이나믹 프로그래밍에서 도무지 이해가 안가는 부분이 있어서 질문드립니다ㅠㅠ
dp 문제 중 효율적인 화폐 구성이라는 문제가 있는데요. k개의 화폐로 n원을 만들 때 가작 작은 화폐 개수를 구하는 문제입니다. 예를 들어, k = 2, 3, 5로 구성되어 있고, n = 7, 정답이 a(n)이라면, 7 = 2 + 5이므로, a(7) = 2 개가 되는 문제입니다. 여기서 점화식은 a(n) = min( a(n), a(n-k) + 1 ), a(n-k) + 1: 화폐 k원을 반드시 사용하는 경우를 의미 위의 예시에 점화식을 적용해본다면, 시작 전 a(n)을 모두 INF 값으로 초기화, a(7) = min( a(7), a(7-2)+1, a(7-3)+1, a(7-5)+1 ) = min( a(7), a(5)+1, a(4)+1, a(2)+1 ) 여기까지는 이해가 됐는데요, 설명이나 코드를 찾아보면 반복문의 위치가 제가 생각한거랑 반대로 돼있더라구요ㅠㅠ 저는 n에 대한 루프 안에 k의 루프가 와야 위의 점화식과 같은 방식이 된다고 생각했지만, 설명에서는 k = 2일 때 n=0~7까지 a(n)을 쫘르륵 구하고, 그다음 k = 3일 떄 쫘르륵, 마지막 k=7일 때 쭉 구해서 최종답을 구합니다. 왜 반복문의 위치가 이렇게 바뀌는 건가요?? 아시는 분 답변 주시면 정말 감사하겠습니다ㅠㅠ
-
미해결
다익스트라 알고리즘 질문
import heapq def solution(N, road, K): n_road = [500001] * (N+1) n_road[1] = 0 sorted_road = [[] for i in range(N+1)] for road_num in road: sorted_road[road_num[0]].append([road_num[2], road_num[1]]) sorted_road[road_num[1]].append([road_num[2], road_num[0]]) # print(sorted_road) q = [] heapq.heappush(q, [0, 1]) while q: cur_node = q.pop() for dist, b in sorted_road[cur_node[1]]: if dist + n_road[cur_node[1]] < n_road[b]: # 1에서 cur로, cur에서 b로, 1에서 b로 n_road[b] = dist + n_road[cur_node[1]] q.append([n_road[b], b]) return len(list(filter(lambda x: x <=K, n_road))) 다익스트라 알고리즘을 구현하는데 의문점이 생겨서 여기 질문을 남깁니다. 1. 다익스트라 알고리즘에서 인접한 거리의 노드를 선택하기 위해서 heap 자료구조를 사용하는데 꼭 인접한 거리의 노드를 선택해야할 이유가 있을까요? 제가 원래 heap을 사용했던 python 코드를 단순히 배열로 바꿔서 가장 인접한 거리의 노드부터 선택하지 않음에도 불구하고 작동이 잘 되어서 질문을 남깁니다. - 제가 구현한 코드에서는 인접한 거리를 방문하든 안하든 결국 모든 노드들을 방문하여서 차이가 없다고 생각되었습니다. 2. 위와 같은 방법의 시간 복잡도는 어떻게 되는것인가요? 아직 시간복잡도 계산이 미숙해서 그런지 잘 모르겠습니다.
-
해결됨자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
오름차순 정렬 시
안녕하세요 강사님 알고리즘 강의 덕분에 수월하게 공부하고 있습니다. 두 배열 합치기 강의에서 간단한 Two Pointers Algorithm 알려주셨는데 그렇다면 앞으로 다른 유형의 문제들에서도 오름차순으로 정렬을 해야할 경우에 Two Pointers Algorithm을 사용할 수 있다면 sort를 사용하는 것 보다 Two Pointers Algorithm을 사용하는 것이 효율성 측면에서 조금 더 좋은 방법인가요???
-
미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
파이썬 알고리즘 문제풀이 선수지식 강의자료 요청
안녕하세요. 선생님의 좋은 강의 잘 듣고 있습니다. 파이썬 선수지식에서 강의하시는 강의자료는 혹시 없으실까요? 저는 문과생이라 파이썬 코딩이 낯설지만 잘 따라가고 있는 중입니다. 그런데 강의자료가 없으니 정리하는데 좀 오래걸려서요 부디 강의자료를 공유해주시면 감사하겠습니다. 제~ 이메일 주소는 1104py@naver.com 입니다. 답변 주시면 감사하겠습니다.
-
미해결[하루 10분|C++] 누구나 쉽게 배우는 C++ 프로그래밍 입문
질문 visual studio 2019버전 max함수 헤더파일없이
안녕하세요 원래 max함수를 쓰기위해 include<algorithm>을 헤더파일에 입력해야 STL함수 max()함수를 쓸수있다고 알고있는데 2019년도 버전은 왜 #include <iostream> using namespace std; int main() { cout << "더 큰건 " << max(1, 2) << "입니다." << endl; } 이렇게만 해도 컴파일되는건지 궁금합니다. 알려주세요 ㅜ
-
미해결C 와 C++ 을 동시에 배워보자 - 두들낙서의 C/C++
visual studio 2019버전 max함수 헤더파일없이
안녕하세요 원래 max함수를 쓰기위해 include<algorithm>을 헤어파일에 입력해야 STL함수 max()함수를 쓸수있다고 알고있는데 2019년도 버전은 왜 #include <iostream> using namespace std; int main() { cout << "더 큰건 " << max(1, 2) << "입니다." << endl; } 이렇게만해도 컴파일이 되는지 궁금합니다