[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 9. 컬렉션 프레임워크 - Map, Stack, Queue의 문제와 풀이2 - Map2의 7-장바구니의 "만약 수량이 0보다 작다면 상품이 장바구니에서 제거된다" 가 실행 결과를 참고하면, "만약 수량이 0 이하가 되면 상품이 장바구니에서 제거된다" 이렇게 하는게 맞지 않나 싶습니다.
안녕하십니까 '더미 헤드를 갖는 리스트로 개선 및 검증' 학습하던 도중에, 마지막 노드인 'jang'을 삭제할 시에 읽기 엑세스 위반 오류가 뜨면서 정상적인 종료가 되지 않았습니다. 디버깅으로 살펴보니 pPrev->pNext도 마지막 노드이다 보니 NULL인 상태에서 pPrev->pNext 도 동일하게 NULL 인상태에서 발생한 문제인듯 합니다. 제생각에는 마지막 노드를 삭제할때는 pPrev->pNext NULL 경우에 대한 IF 절을 넣는게 맞아보이는데 맞는 조치일까요?
1. 현재 학습 진도 41강 4-8 DP 부분 수강 중입니다 2. 어려움을 겪는 부분 첨부해주신 Java 코드로 구현시 fib(100) 의 결과 값이 long 범위에 초과 되어 오버플로우가 발생하는 것 같습니다. 3. 시도해보신 내용 BigInteger 를 도입하여 해결하긴 했지만, 더 나은 방법이 있다면 알려주시면 감사드리겠습니다. import java.math.BigInteger; import java.util.HashMap; import java.util.Map; public class FiboDynamicProgramming { private static Map<Integer, BigInteger> memo = new HashMap<>(); static { memo.put(1, BigInteger.ONE); memo.put(2, BigInteger.ONE); } // 1. 메모에 값이 있으면 반환 // 2. 없으면 피보나치 공식 적용 및 메모이제이징 private static BigInteger fiboDynamic(int n, Map<Integer, BigInteger> fiboMemo) { if (fiboMemo.containsKey(n)) { return fiboMemo.get(n); } BigInteger nthFibo = fiboDynamic(n - 1, fiboMemo).add(fiboDynamic(n - 2, fiboMemo)) ; fiboMemo.put(n, nthFibo); return nthFibo; } public static void main(String[] args) { System.out.println(fiboDynamic(100, memo)); } }
안녕하세요. [Min Cost Climbing stairs]에서 base code 설정시에 if n==0 or n==1: return 0 이 아닌 if n==0: return cost[0] if n==1: return cost[1] 로 설정해야 되는 것이 아닌지 문의드립니다. 인덱스 1에 있다고 하더라도 1을 밟아야 꼭대기에 도달할 수 있는 것이니 해당 인덱스의 cost 값을 return 해야하지 않는지에 대해 의문이 듭니다.
제가 이해한 강의 내용은 아래와 같습니다. "데이터 추가는 첫번째 위치에 데이터를 삽입을 한다. 결국 처음에 추가한 데이터는 리스트의 마지막 에 위치한다" "데이터를 내보낼때는 리스트의 마지막 데이터를 내보낸다" "연결리스트만으로는 구현이 어렵기 때문에 이중연결리스트로 구현한다" 하지만 제가 생각했을 때는 "첫번째로 추가한 데이터는 head로 고정, 데이터를 추가하면 노드로 연결 > 데이터를 내보낼때는 리스트의 첫번째 데이터인 head 를 내보낸다" 이런식으로 구현하게 되면 이중연결리스트를 이용하지 않고 간단하게 구현이 가능할 것 같다는 생각이 들었습니다. 제가 생각한 구현방식이 올바른지, 강사님께서 말씀하신 방식의 장점이 궁금합니다.
안녕하세요, 강사님. 현재 자바 중급 2편을 이번 주 내로 수강 완료할 예정인 수강생입니다. 인프런에 올라와 있는 ‘김영한의 자바 공부법 로드맵’에서는 자바 고급 1, 고급 2를 뒤로 미루고 스프링 강의로 먼저 넘어가는 흐름을 추천해 주셨는데, 영상으로 올려주신 ‘김영한의 실전 자바 로드맵’에서는 자바 고급 1은 6강까지, 자바 고급 2는 전부 수강한 뒤 스프링으로 넘어가는 것이 최적이라고 말씀해 주셔서 두 로드맵 중 어떤 흐름을 따르는 것이 좋을지 고민되어 질문드립니다. 저의 목표는 다음과 같습니다. 올해 안에 「스프링 핵심 원리 - 기본편」까지 들어가는 것 스프링을 활용해서 직접 무언가를 개발해 보는 것 다만, 스프링을 빨리 배우고 싶으면서도 자바 기본기와 객체 지향에 대한 공부를 소홀히 하고 싶지는 않아서 인프런 로드맵처럼 자바 고급 1, 2를 건너뛰고 스프링으로 넘어가도 괜찮은 선택인지 확신이 서지 않습니다. 제 상황에서는 어느 로드맵 흐름을 따르는 것이 더 좋을지,자바 고급 1, 2를 어느 정도까지 수강한 뒤 스프링으로 넘어가는 것이 좋을지 추천해 주실 수 있을까요?
안녕하세요, 현재 DFS 관련하여 내용을 수강하고 있습니다. (39강. DFS & BFS) 깊이 탐색인 알고리즘인 DFS를 처음엔 재귀로 접근하셨다가 RecursionError 의 이유로 스택을 사용하셨는데요, 스택을 생각하게 된 생각의 흐름(?) 을 잡아보고싶어 질문을 드리게되었습니다. (나중에 코테 연습 때 대비가 될까하여 더 고민을 해보는 것인데, 시간대비 효율이 나지않는다면 말씀해주세요 ㅎㅎ) 일단 제가 이해한 흐름은 여기까지입니다. DFS는 깊이 우선 탐색 깊이 파고들었다가 다시 나오고 반복 그래프의 끝까지 깊이 파고들었다가 , 방문하지 않는 노드를 방문하기 위해 나중에 다시 돌아갈 "기준점" 이 필요하게 될 것임 그렇다면 이전에 어디까지 방문했는지 기록 을 해놓아야함 어떻게 해야 기록을 더 효율적으로 할 수 있을까? 하지만 여기서 스택을 사용해야겠다고 생각이 들게 되는 이유를 찾고 싶습니다 ㅎㅎ 알고리즘을 잘하시는 분들 보시면 이런 부분은 큐를 써야겠고, 스택을 써야겠다 라고 바로 생각을 하시는데, 저로서는 왜 이게 바로 스택을 써야한다고 생각이 드는지 이해가 되질 않아서요 혹여 이전에 강의때 설명하신 부분이라면 죄송합니다..ㅎㅎ
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요 선생님, 먼저 좋은 강의 항상 감사드린다는 말씀부터 올립니다. 현재 우선순위 큐와 힙 구현부분을 수강 중인데 반복문 구현이나 반복문 탈출 조건에 대해 선생님께서는 어떻게 생각하고 결정하시는지 질문드리고자 합니다. 저의 경우 구현 부분을 수강하면서 크게 두가지 생각을 가졌습니다(우선순위 큐와 힙 구현 부분 이외 다른 트리구조도 마찬가지이지만 대표적으로). 상황 1) 우선순위 큐와 힙 insert(데이터 삽입) 구현 시 루트노드가 아니며, 마지막 삽입 위치가 부모노드의 오른쪽에 있는 경우에, 오른쪽 형제노드를 구하기 위해 while 반복문 실행한다. 이때, while(currentTree.getParentTree().getParentTree() != null){ .. 으로 while 반복문의 기저조건을 설정해주었는데, 반복하면서 부모노드로 올라갈때 루트노드는 형제노드가 없으므로 그 이전까지 진행하는 기저조건으로 설정한다. 상황 1 구현하면서 생긴 문제점(의문점)) 기저조건을 currentTree.getParentTree()으로 최초 설정하였을 것 같다는 생각이 들었습니다. 수강내용을 천천히 살펴보았을때도, 루트노드의 경우와 그 이상의 범위탐색시 불필요한 반복문이 또 다시 실행된다는 점을 이해하기까지 시간이 오래 소요되었습니다. 질문요지) 선생님께서는 이러한 기저조건 설정(while문의 경우) 혹은 경계조건 설정(for문의 경우)을 어떤 과정으로 생각하고 구현하시는지 질문드리게 되었습니다. 참고로 저의 경우, 현재 수강하면서 코드로 직접 구현할때 최대한 머릿속에서 구현과정을 그려가면서 이해하기 위해 노력중입니다(실제 코딩테스트 환경에서는 종이를 사용하지 못하기에 머릿속으로 구현과정을 이해하는 습관을 장착하고 있습니다). 이때 기저조건(while 반복문) 말고도 for 반복문을 사용할때 이에 대한 경계조건(<, <= 등의 사용을 고려하는 것까지)을 설정하기 위해 3~4번의 반복문을 머릿속에 생각하고 지워가면서 힘들게 구현하고 있는데, 선생님께서는 이를 어떻게 구현하고 계시는지 문득 궁금하게되어 질문드리게 되었습니다. 아직 이런 알고리즘이 익숙치 않아 생긴 의문일까요? 알고리즘을 많이 살펴본다고 하더라도, 이러한 기본적인 부분부터 탄탄하게 잡고 나가는 것이 필요하다는 생각인데, 지금 이 부분이 오래 걸리다보니 소요시간을 줄이기 위한 노하우를 여쭙고 싶습니다..! 항상 감사드립니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요 선생님, 강의 잘 듣고 있습니다. 지금 Red Black 트리까지 수강을 하였는데, 제가 이 강의 수강 이후 본격적인 코딩테스트 준비를 할 예정이어서 이와 관련한 질문을 드리고자 합니다. 이진탐색알고리즘, 이진탐색트리, AVL트리, RB트리까지 공부한 후에 사실 가장 먼저 느꼈던 점은 코딩테스트에 이러한 자료구조를 어떻게 활용할 수 있을지에 대한 의문이었습니다. 단순히, 이러한 복잡한 구현과정을 경험하고 기본적인 알고리즘 구현 역량을 향상할 수 있다는 것에 의의를 두는 것이 좋을지, 이러한 자료구조를 코딩테스트 상황에 맞게 적절하게 사용하는 것에 대해 좀 더 공부해보는 것이 좋을지..어떠한 관점으로 바라보는 것이 좋을지 선생님께 문의드리고자 합니다(AI답변보다는 선생님의 생각이 더 궁금합니다..!). 자료구조를 이해하기 쉽게, 하지만 가볍지 않게 다룰 수 있도록 좋은 강의해주셔서 감사드립니다. 감사합니다.
안녕하세요. 백준 2042 세그먼트 문제 답 코드 중에 이해안되는 부분이 있어서 질문 드립니다. ----------------------------------------------------- int treeHeight = 0; int length = n; while (length != 0) { length /= 2; treeHeight++; } int treeSize = int(pow(2, treeHeight + 1)); int leftNodeStartIdx = treeSize / 2; ----------------------------------------------------- 위의 코드가 잘 이해가 안됩니다 treeSize가 16이 나오기 위해서는 5, 6, 7, 8이 해당됩니다 근데 위의 코드로 결과를 구하게 된다면 5, 6, 7만 해당하고 8이 포함이 되지 않고 더 많은 배열이 선언되는 것 같습니다. 혹시 모자란 것보단 과한 건 결과값에 미치는 영향이 없기 때문에 위와 같은 코드로 구성했는지 궁금합니다.
비전공자 신입 취준생입니다. 부트캠프 통해서 백엔드 과정을 수료 후 너무 부족해서 현재 인프런에서 자바하고 스프링공부를 다시하면서 알고리즘 공부도 준비를 해야할 것 같아서 강의를 듣고있습니다. 자바도 아직 많이 부족한데 파이썬으로 하다보니 더 헷갈리네요 제공해주신 파이썬 기초강의를 듣고 알고리즘 강의를 듣고있는데 기초강의와 다르게 파이참으로 할 땐 들여쓰기를 하더라고요 자바와 다른 방식으로 들여쓰기를 하다보니 아직은 어려운데 들여쓰기는 어떤식으로 익혀야할지 모르겠네요