섹션 3 퀴즈에서 헷갈리는 부분이 생겨서 질문드립니다. 문제의 일부는 아래와 같습니다. (정답은 B) 1. 배열과 링크드 리스트의 주요 성능 차이점 중 하나는 무엇일까요? A 배열은 요소 탐색 시 O(1)이 걸리지만, 링크드 리스트는 O(N)이 걸립니다. B 링크드 리스트는 중간에 요소를 삽입/삭제 시 O(1)이 걸리지만, 배열은 O(N)이 걸립니다. 제가 헷갈리는 부분 A도 정답이 될 수 있지 않을까요? (A를 선택한 경우 오답으로 처리됨) 수업과 수업 자료를 통해 이렇게 이해 했습니다. "특정 원소 조회시 배열은 O(1), 링크드 리스트는 O(N)의 시간 복잡도를 가진다" 요소 탐색과 요소 조회는 다른 개념일까요?
안녕하세요. 현재 cs 강의부터 c/c++/시스템.네트워크,tcp/ip 등 백엔드에 도움되는 강의를 듣고 현재 자바강의를 듣고 있습니다. 자료구조와 알고리즘을 공부할 때 저의 공부방법이 왜 사용하는지, 어떨 때 사용할지, 어떻게 작성하는지, 이럴 때엔 어떻게 대응 할 지를 중심으로 공부를 하고 있습니다. 배열, 스택, 큐, 연결리스트는 코드를 보지 않고 작성할 수 있도록 미리 훈련을 해놓았었지만 최근에 트리 / 해시로 넘어가면서부터 '이걸 안 보고 쓸 정도로 외우려면 시간 소요가 심할 것 같은데?' 생각이 들었습니다. 이러한 고민을 하게 된 건 전에 경쟁력 있는 백엔드 개발자가 되려면 홈페이지 하나는 코드를 보지 않고 써야한다 라는 얘기를 들었기 때문입니다. (다만 공부하고 있는 학생으로 홈페이지 만드는 코드가 무엇인지를 모르기에 이러한 고민을 하게 되는 것도 있습니다.) 13년 전에 C/C++ 개발 회사에서 일을 했을 때 코드를 외우는 게 아니라 어떠한 코드가 필요할 때 책을 펼쳐서 보고 직접 타이핑을 쳤었는데, 안 보고 쓸 정도로 외우기가 어려운 알고리즘들도 마찬가지 아닐까 하는 의구심이 들어 질문 드려봅니다. (현재는 바이브 코딩이겠지만요)
1. 현재 학습 진도 23. 2-9 재귀함수 - 2 2. 어려움을 겪는 부분 재귀함수-2 의 영상 6분 쯤에 "for i in range(n)" 부분이 이해가 안 가서요! 문자열 길이만큼, 끝까지 연산해야하는 로직인가요? 3. 시도해보신 내용 range(n)이 range(n/2) 이런식으로 절반까지만 연산해야하는게 아닌가 헷갈려서 질문드립니다 ㅠㅠ! 이렇게 구체적으로 알려주시면, 더 정확하고 도움이 되는 답변을 드릴 수 있습니다! 😊
몇 챕터/몇 강을 수강 중이신가요? 4.9 어떤 알고리즘을 학습하고 계신가요? bfs, 숙제 두번째 청소기 문제 여기까지 이해하신 내용은 무엇인가요? 문제 풀이 강의 보면서 같이 풀고, ai 사용해서 공부한상태, 일주일 뒤에 다시 풀 예정입니다 큐에 들어가는 값이 항상 하나밖에 존재하지 않는데 큐를 사용하시는 이유가 궁금합니다.
1. 현재 학습 진도 몇 챕터/몇 강을 수강 중이신가요? 3주차 어떤 알고리즘을 학습하고 계신가요? 링크드리스트 여기까지 이해하신 내용은 무엇인가요? 2. 어려움을 겪는 부분 어느 부분에서 막히셨나요? 코드의 어떤 로직이 이해가 안 되시나요? 어떤 개념이 헷갈리시나요? 노션에서 링크드 리스트 중간에 삽입 삭제가 O(1)이라고 되어있는데 삽입을 특정위치에 하기위해서 get_node()로 순회를 해야하기 때문에 O(N)이 아닌가 궁금합니다. 혹시 놓친 부분이 있는걸까요? 3. 시도해보신 내용 문제 해결을 위해 어떤 시도를 해보셨나요? 에러가 발생했다면 어떤 에러인가요? 현재 작성하신 코드를 공유해주세요 이렇게 구체적으로 알려주시면, 더 정확하고 도움이 되는 답변을 드릴 수 있습니다! 😊
1. 현재 학습 진도 몇 챕터/몇 강을 수강 중이신가요? 1-5 . 알고리즘과 친해지기 (2) 어떤 알고리즘을 학습하고 계신가요? 최빈값 찾기 여기까지 이해하신 내용은 무엇인가요? def find_max_occurred_alphabet(string): alphabet = {} result = [] maxvalue = 0 for char in string: if char.isalpha(): alphabet[char] = alphabet.get(char,0) + 1 for value in alphabet: maxvalue = max(maxvalue, alphabet[value]) for i in alphabet: if alphabet[i] == maxvalue: result.append(i) return result result = find_max_occurred_alphabet print("정답 = i 현재 풀이 값 =", result("hello my name is dingcodingco")) print("정답 = e 현재 풀이 값 =", result("we love algorithm")) print("정답 = b 현재 풀이 값 =", result("best of best youtube")) 영상 안보고 문제만 보고 한번 풀어봤는데 예시의 hello my name is dingcodingco, we love algorithm, best of best youtube 문자열 전부 최빈값이 여러개라서 원본 문제로 가보니 여러개라면 -1을 반환하도록 되어있어서 조금 바꿔서 저는 리스트로 반환하도록 풀어봤는데 이 방법은 어떨까요? 알파벳 아스키코드로 풀 방법은 생각이 안나서 자바에서는 map에 넣듯이 dictionary에 넣어서 풀어보려고 했습니다 max 메소드는 연습할땐 안쓰는게 좋은데 자바 삼항연산자가 파이썬에서 어떻게 쓰는지 몰라서 일단 max로 해봤습니다
21분 경에 Old Generation을 설명하시면서 Full GC를 언급하셨는데, 해당 시점에는 Major GC가 발생해서 개체를 회수하게 되고 Major GC로 부터 살아남은 개체가 Metaspace 영역으로 옮겨지는 것 아닌가요?? 물론 Full GC를 통해서도 Old Generation의 개체가 회수되기는 하겠지만 해당 부분 설명에선 Major GC로 언급하는 것이 그림과 일치하지 않나해서 질문드립니다
강의제목 : 얄코의 가장 쉬운 자료구조와 알고리즘 레슨이름 : 정적 배열과 동적 배열 질문 : 위 캡쳐화면처럼 동적 배열을 구현하는 자바 코드도 암기?나 직접 짜보는 연습이 필요할까요? 나중에 코테나 업무에 도움되는 부분일지 궁금합니다. (물론, ArrayList가 동일한 기능을 한다지만, 기능 자체보다 해당 로직을 짤 줄 아는 능력(?)이 중요할 지 궁금합니다.)
1. 현재 학습 진도 몇 챕터/몇 강을 수강 중이신가요? 1-10 어떤 알고리즘을 학습하고 계신가요? 1-10 2. 어려움을 겪는 부분 실제로 코테볼때 collections을 import 하지 말라는 제약조건이 있는 경우도 있는지 궁금합니다. (예전에 js로 코테볼때 fetch 말고 xhr 써야된다는 제약조건을 본적이 있어서...ㅋ) 아래 경우는 Counter에서 순회한번 해서 O(N) , for c in s 반복문 O(N) , 조건문은 딕셔너리가 해시테이블이라 O(1) O(N) + O(N) = O(N) 으로 계산했는데 맞나요? 3. 시도해보신 내용 from collections import Counter def solution(s): count = Counter(s) return next((c for c in s if count[c] == 1), "_")
1. 현재 학습 진도 몇 챕터/몇 강을 수강 중이신가요? 03_06_stack.py 어떤 알고리즘을 학습하고 계신가요? 스택 여기까지 이해하신 내용은 무엇인가요? 스택이 기존 링크드 리스트 자료구조에 기반한 알고리즘. 2. 어려움을 겪는 부분 어느 부분에서 막히셨나요? pop함수에서 self.head = self.head.next로 원래 head를 다음노드로 옮기는 부분. 코드의 어떤 로직이 이해가 안 되시나요? head가 옮겨 졌다 라는 걸로 pop 라는 개념을 표현하신 거 같은데 원래 self.head는 메모리에서 안사라진거 아닌가요? 메모리는 계속 점유하고 있을거고, 그저 head의 위치만 바꿔준 거니 표면적으로 보이기에만 pop인것 같은데 편의상 이렇게 하신건지 정말 pop이라는 개념 자체가 제거가 아닌 head를 옮기는 개념인건지 잘 모르겠습니다. 이렇게 구체적으로 알려주시면, 더 정확하고 도움이 되는 답변을 드릴 수 있습니다! 😊
강의에서 임시 객체가 생성되는 첫 번째 상황으로 클래스가 함수의 반환 자료형이 될 경우 (이름이 없는) 임시 객체를 생성 을 언급해주셨습니다. 이 경우가 아래와 같은 상황을 말하는걸까요? Class get() { return new Class(); } 그렇다면, 해당 함수(메서드)로 받은 인스턴스에 대한 참조자가 생긴다면, 그 때는 임시 객체가 아니게 되는건가요? Class value = get();
1. 현재 학습 진도 1-5 6강 최빈값찾기 최빈 문자를 찾는 것 2. 어려움을 겪는 부분 이런 코드는 어떨지 궁금합니다! def find_max_occurred_alphabet(string): mem = {} max_v = 0 max_k = '' for s in string: if s.isalpha(): if s not in mem: mem[s] = 1 else: mem[s] += 1 for k, v in mem.items(): if max_v < v: max_v = v max_k = k return max_k 3. 시도해보신 내용 문제 해결을 위해 어떤 시도를 해보았는데 답이 다르다면 이런식으로 여기에 올려 첨삭을 받는 형식일까요? 또 궁금한 것이 왜 string에 겹치는 최빈값이 문자열이 많은데 정답은 i, e, b인지 궁금합니다. o, l, t 일수도 있지 않나요? 밑의 질문 내용에서 답을 얻었습니다! 복수정답으로 이해했습니다! 감사합니다!
안녕하세요, 강사님 강의를 잘 듣고 있습니다! 선형 탐색에서 '클러스터링(덩어리 형성) 현상이 생길 수 있음'을 단점으로 언급해주셔서 궁금한 게 생겼습니다. 컴퓨터가 리스트를 읽어올 때 주변 값도 같이 가져와서 캐시 hit으로 성능이 높아진다고 알고 있는데, 그러면 덩어리 형성이 오히려 좋은 효과가 아닌가 싶습니다. 그렇지만 이 점이 충돌이 발생하기가 쉬우며, 고르게 분포가 되어있지 않기 때문에 해시 함수 관점에서는 단점인 것인지 여쭤보고 싶습니다