[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 배열과 비교한 리스트의 이점으로 itemCount와 같이 배열에 몇 개의 데이터가 추가 되었는지 추적하는 변수를 제거할 수 있다고 했는데, MyArrayList calss에서 add(E e) 메서드를 보면 size++; 부분이 동일한 역할이을 하고 있는 것이 아닌가요?
학습 관련 질문을 최대한 상세히 남겨주세요! 고민 과정도 같이 나열해주셔도 좋습니다. 먼저 유사한 질문이 있었는지 검색해보세요. 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요! 10:30초 쯤부터 설명해주시는 내용이 잘 이해가 안가서 질문드립니다. article 테이블에 insert 문과 update 문을 동시에 실행한다고 하더라도 서로 다른 레코드에 대한 작업이어서 update문이 실행될 때 x-lock이 걸리는 레코드는 insert하는 레코드와 상관 없을 거라고 생각했는데 게시글 쓰기와 좋아요 수 쓰기 작업을 할 때 어떻게 동일한 레코드에 락이 걸릴 수 있는지 상황이 잘 안그려지네요.. 게시글을 새로 작성하는 경우가 아니라 게시글 수정 - 좋아요 수 업데이트 간에 동일한 레코드에 대한 락이 잡힐 수 있는 상황을 말씀하신 건가요??
[Unique Paths] 완전탐색 / DP (후반부) 강의에서 13분에서 질문있습니다. 첫 번째 행과 첫 번째 열이 모두 왜 1 인가요? 만약 방향을 바꾸기 전까지 1이라고 친다면, 아래 그림 처럼 도착지에서 최대 방법이 28이 아니라 8이 되어야 하는거 아닌가요? 왜냐면 방향은 오른쪽 아래로만 이동이 가능하다고 해서 올라가거나 왼쪽은 이동이 불가능하잖아요.
59분 14초까지 따라가서 arr[0]까지 되는건 이해가 가는데 그 뒷부분이 설명이 여러번 다시들어봐도 거기서 길을 잃었어요.. 계산을 return줄에서 해서 그 값으로 위로 쭉쭉 올라가면서 계산하는게 맞나요? 59분 42초에서 arr[1] arr[0] 이렇게 적으셨는데 return(arr[size-1]>max)?arr[size-1]:max; 에서 size에 1을 넣으면 배열[0]이 1인건 알겠는데 5(배열[1])가 어디서 어떤식으로 나와서 어떻게 비교가 되는건지 모르겠어요
docker run -p 3306:3306 -e MYSQL_ROOT_PASSWORD=todos -e MYSQL_DATABASE=todos -d -v todos:/db --name todos mysql:8.0 ALTER USER 'root' @ ' localhost ' IDENTIFIED WITH caching_sha2_password BY '비밀번호' ; 명령어로 root계정의 비밀번호를 바꿨고, 이후에 mysql -u root -p로 root계정에 접속할 때는 변경된 비밀번호로 잘 작동합니다. 그러나, workbench에서 localhost:3306 root계정에 접속하려할 때, 계속해서 강의중 설정한 todos라는 비밀번호를 입력해야 접근이 가능한 상황입니다. 왜 cmd에서 변경한 비밀번호가 워크벤치에 적용되지 않는것인지 궁금해서 문의드립니다. 해결방법이 있을까요?
실전! 코틀린과 스프링 부트로 도서관리 애플리케이션 개발하기 (Java 프로젝트 리팩토링)
안녕하세요 fetch join까지 적용한 후에 테스트 코드 자체가 N+1 문제가 제거된 것은 확인했습니다. 그런데 AfterEach 함수에서 deleteAll을 하는 과정에 fetch join 이전의 N+1 쿼리랑 유사한 쿼리가 나오는데 이게 delete 쿼리를 날리기 위한 데이터를 가져오려는 목적인것 같은데 질문이 있습니다. 혹시 deleteAll 이전에 나오는 쿼리도 N+1처럼 동작하는지 테스트 코드이므로 테스트 객체의 모수가 작아 무시해도 되는지 이정도 질문하고 싶습니다
학습 관련 질문을 최대한 상세히 남겨주세요! 고민 과정도 같이 나열해주셔도 좋습니다. 먼저 유사한 질문이 있었는지 검색해보세요. 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요 무한 depth는 이전 강의에 소개된 adjency list로도 구현이 가능하고 또 adjacency list, path enumeration 방법 외에도 nested set, closure table 방법도 있는 걸로 알고 있습니다. path enumeration 방법을 선택한 이유가 따로 있을까요??
안녕하세요 강사님. 해당 강의 정말 재밌게 잘 들었습니다. 다름이 아니라 강의 들으면서 커리큘럼 내에 비동기 API 사용시 단점이라거나 문제점 또는 주의사항 같은 내용을 못봤던 것 같은데 실무에서 비동기 API 를 적용하려 할 때 일반적인 동기 API 개발에 비해 주의해야 할 사항 같은 게 있을까요? run_in_threadpool 동작하는 걸 보면 거의 완벽한 프레임워크 같고, 장고나 다른 프레임워크에 비해 단점도 없어보여서 질문드립니다.
[질문 내용] 여기에 질문 내용을 남겨주세요. public class MemberThis { public String nameField; public void initMember( String nameParameter ) { nameField = nameParameter ; } } 위에서 public void initMember( String nameParameter ) 이 메서드를 선언하는거라고 생각했는데요. 왜 public이랑 void 사이에 static이 없는건가요? 왜 없어도 되는건지 모르겠습니다.
경우의 수 문제에서는 memo[i]가 i번째 계단까지 도달하는 방법의 수를 저장했다. 최소 비용 문제에서는 memo[i]가 i번째 계단까지 도달하는 총 비용을 저장했다. 그렇다면 memo[i]가 이미 최소 비용을 저장하고 있다면, 왜 cost[i]까지 더해야 하나요? memo[i] = min(memo[i-1], memo[i-2]) + cost[i] 계단 오르기 경우의 수 문제가 당신은 계단을 오르고 있습니다. n 꼭대기에 도달하려면 단계가 필요합니다. 매번 당신은 오르 1 거나 2 계단을 오를 수 있습니다. 정상까지 올라갈 수 있는 뚜렷한 방법은 몇 가지입니까? memo[i]=i가 3이라고 한다면 3까지 도달할 수 있는 방법을 저장하는것이고. 계단오르기 최소비용문제에서는 memo[i]=i가 3이라고 한다면 3까지 도달할 수 있는 비용을 저장하는것이라 생각하는데요. 아래는 최소 비용 문제 코드입니다 class Solution(object): def minCostClimbingStairs(self, cost): n = len(cost) if n == 2: return min(cost) # 계단이 두 개라면, 더 싼 비용을 선택 # DP 배열 초기화 memo = {} memo[0] = cost[0] memo[1] = cost[1] # 점화식을 이용하여 최소 비용 계산 for i in range(2, n): memo[i] = min(memo[i-1], memo[i-2]) + cost[i] # 불필요한 비교 제거 # 마지막 계단을 오르지 않아도 되므로, 마지막 두 개 중 최소값 반환 return min(memo[n-1], memo[n-2])
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 안녕하세요 강사님 강의 항상 감사하게 보고있습니다 연결리스트의 삭제에서 초기화를 시킨다고 했는데 참조값의 연결의 끊으면 사용되지 않으므로 gc대상이 되니 초기화는 안해도 되지 않나요? 제가 놓친 부분이 있으면 말씀 부탁드리겠습니다 :)
@DATASETS.register_module(force=True) class KittyTinyDataset(CustomDataset): # 커스텀 데이터셋에서 사용할 클래스명 저장. CLASSES = ('Car', 'Truck', 'Pedestrian', 'Cyclist') ##### self.data_root: /content/kitti_tiny/ self.ann_file: /content/kitti_tiny/train.txt self.img_prefix: /content/kitti_tiny/training/image_2 #### ann_file: /content/kitti_tiny/train.txt # annotation에 대한 모든 파일명을 가지고 있는 텍스트 파일을 __init__(self, ann_file)로 입력 받고, 이 self.ann_file이 load_annotations()의 인자로 입력 def load_annotations(self, ann_file): print('##### self.data_root:', self.data_root, 'self.ann_file:', self.ann_file, 'self.img_prefix:', self.img_prefix) print('#### ann_file:', ann_file) cat2label = {k:i for i, k in enumerate(self.CLASSES)} image_list = mmcv.list_from_file(self.ann_file) # 포맷 중립 데이터를 담을 list 객체 data_infos = [] datasets = [build_dataset(cfg.data.train)] 클래스 설정 후(위 박스) 아래박스 코드로 데이터셋을 생성하면 load_annotations의 ann_file에 cfg.data.train.ann_file의 값이 자동으로 들어가는 것으로 이해했습니다. 또한 self.ann_file 값으로는 KittyTinyDataset이 상속받은 CustomDataset의 ann_file 값이 들어가는데 이 또한 데이터셋 생성시 CustomDataset에 cfg.data.train.ann_file의 값이 자동으로 들어가는 것으로 이해했습니다. 이 과정이 맞다면 데이터셋 생성시 self.ann_file과 ann_file에 들어가는 값이 동일한데 두가지 방식 모두 사용하는 이유가 궁금합니다. 과정이 틀렸다면 self.ann_file과 ann_file의 값이 언제 어떤 방식으로 할당되는지 궁금합니다.
1. 현재 학습 진도 몇 챕터/몇 강을 수강 중이신가요? 4-9 4주차 끝 & 숙제 설명 어떤 알고리즘을 학습하고 계신가요? 첫번째 문제 (라면공장) 여기까지 이해하신 내용은 무엇인가요? stock이라는 변수에, 날짜가 stock값보다 작은 date일 때의 supplies들 중 최대 값을 얻어서 다시 stock에 += 해주면서 최종적으로 stock이 k보다 커졌을 때 반복을 종료하고 결과값을 return하는 전반적인 알고리즘은 이해하였습니다. 2. 어려움을 겪는 부분 어느 부분에서 막히셨나요? 정답이 4가 나오는 예시 문제 코드의 어떤 로직이 이해가 안 되시나요? while stock <= k : 라는 반복문이 실행될 때 마다 max_heap을 왜 초기화시켜주지 않는 건가요? stock을 업데이트 하기 전에 남아있는 max_heap의 원소들과, stock을 업데이트 한 후에 새로이 추가된 max_heap의 원소들 중에 전자의 경우에서 max값이 나올 수 있기 때문인가요? 어떤 개념이 헷갈리시나요? 3. 시도해보신 내용 문제 해결을 위해 어떤 시도를 해보셨나요? 에러가 발생했다면 어떤 에러인가요? 가장 바깥의 while문에서 벗어나지 못하는 문제 현재 작성하신 코드를 공유해주세요 def get_minimum_count_of_overseas_supply(stock, dates, supplies, k): # 풀어보세요! max_coverd_date = 0 result = 0 remained_stock = stock max_coverd_date += remained_stock while max_coverd_date < k: #k일을 버틸 수 있을 때까진 반복해야 함 can_supplied_qty_list = [] while dates: supply_date = dates[0] if supply_date <= max_coverd_date: dates.pop(0) can_supplied_qty_list.append(supplies.pop(0)*-1) else: break if can_supplied_qty_list: heapq.heapify(can_supplied_qty_list) max_supplied_qty = heapq.heappop(can_supplied_qty_list)*-1 max_coverd_date += max_supplied_qty result += 1 return result 이렇게 구체적으로 알려주시면, 더 정확하고 도움이 되는 답변을 드릴 수 있습니다! 😊
1. 현재 학습 진도 몇 챕터/몇 강을 수강 중이신가요? => 1-5. 알고리즘과 친해지기 (2) 어떤 알고리즘을 학습하고 계신가요? => 최빈값 구하기 2. 어려움을 겪는 부분 어떤 개념이 헷갈리시나요? => 안녕하세요~ 화면 캡쳐가 안돼서 말로 설명하자면, 강의 마지막 시뮬레이션 영상(25:58)에서 max_alphabet_index가 8이었다가, 13이었다가, 마지막에 14인 채로 끝나는 이유가 뭔가요? 코드 상으로, if문 조건절에 등호를 붙이지 않았기 때문에(`if alphabet_occurrence > max_occurance:`), 동일한 최빈값 중에서는 알파벳 순서가 가장 앞에 위치한 알파벳이 max로 저장된다는 것은 이해했습니다! 그냥 시뮬레이션 영상 자체에 대한 질문이었어요! 근데 쓰다 보니 쓸 데 없는 질문인 것 같긴 하네요 😅 그냥 코드 상으로 이해했다면 넘어가도 괜찮겠죠!?? 감사합니다!!