1. 동적배열 구현하는 강의를 보고 따라서 구현했는데요, 중단점을 걸어보면 capacity가 1,2,4.. 식으로 늘어나는데 C#에 이미 구현되어있는 List를 사용하여 중단점을 걸어보니 capacity가 4부터 시작해서 4,8,16..으로 늘어났는데, 이미 구현된 List는 DefaultSize가 4로 설정이 되어있는 건가요? 2. 동적 배열에서 원소 Remove시에 총 배열의 크기(사용하던 크기 + 예약된 크기)는 원래 줄어들지 않는건가요? 예를 들어서 5개의 원소를 넣었다가 3개를 삭제하여도 capacity가 8이 유지가 되는데, 이미 구현된 List를 사용할 시에도 극단적으로 많이 넣었다가 많이 삭제하여도 늘어났던 capacity가 유지가 되는지 궁금합니다. 메모리가 낭비되는것이 아닌가요? 3. T[] newArray = new T[_count * 2]; for (int i = 0; i < _data.Length; i++) newArray[i] = _data[i]; _data = newArray; (배열 크기 늘리는 부분) 이 부분에서 마지막에, _data 가 newArray를 가르키도록 하고 있는데요, 이러면 _data가 가르키던 _data배열은 c#이라서 Heap메모리 에서 자동으로 사라지는지, 혹시 아니라면 배열의 크기를 늘릴때마다 newArray가 힙에 계속 생겨나서 안사라지는건지 궁금합니다. (이 부분은 제가 메모리 부분 이해를 잘못 한 걸수도 있습니다.)
기존에 이와 비슷한 질문이 있는데 추가적으로 궁금한점이 있어서 질문드립니다. 예를 들어 char ch[] = "Testing"; strcpy(ch, "LA"); 위의 코드를 printf() 나 puts() 함수를 이용하여 출력하면 문자열 "LA"가 출력될것입니다 근데 사실상 저 두함수는 NULL을 만나기 전까지만 문자열을 출력하는거니 사실상 ch는 "LA\0ting" 이렇게 메모리에 저장되어있는거잖아요. (뒤의 \0는 생략하고) 그렇다면 제생각에는 strlen(ch) 를 실행할시에 2가아니라 저 메모리에 저장되있는 전부 그대로 7이 나와야되는거 아닌가요? 저 ch 문자형배열의 실제크기가 7이니깐요. 이 함수를 만들때 왜 이렇게 작동하게 구현했는지 궁금합니다...
강의 정말 잘보고 있습니다!! 다만 아쉬운점은 테스트케이스가 적어도 2개는 있으면 좋을꺼 같습니다!! 혹시 이 풀이는 괜찮을까요? function solution(m, product) { let result = []; for (let i = 0; i < product.length; i++) { // 예산 let money = m; // 카운트 수 let count = 0; // 상품가격 50% 할인 하기 product[i][0] = product[i][0] * 0.5; // 배송비와 상품가격의 합으로 새로운 배열 만들고 // 오름차순으로 정렬 let sortedArr = product .map((value) => value.reduce((acc, cur) => acc + cur)) .sort((a, b) => a - b); // 예산으로 살 수 있는 개수 체크 for (let j = 0; j < sortedArr.length; j++) { if (sortedArr[j] > money) { break; } money -= sortedArr[j]; count++; } result.push(count); // 할인했던 상품가격 다시 원래 가격으로 바꿔주기 product[i][0] = product[i][0] * 2; } return Math.max(...result); } let arr = [ [6, 6], [2, 2], [4, 3], [4, 5], [10, 3], ]; console.log(solution(28, arr));
[리뉴얼] 처음하는 MongoDB(몽고DB) 와 NoSQL(빅데이터) 데이터베이스 부트캠프 [입문부터 활용까지] (업데이트)
안녕하세요! 선생님 강의를 듣게된 학생입니다! 제가 따로 공부블로그를 운영하고 있습니다. 혹시 수업 내용은 포스팅 해도 되나요? (선생님께서 주시는 자료는 당연히 안 올립니다!!) 제가 직접 타이핑하면서 강의를 들어야 이해가 더 잘 되는 편이라서 강의를 들을 때 타이핑을 하면서 듣습니다. 그래서 제가 타이핑, 필기한 내용을 공부블로그에 포스팅하고 싶어서 문의드립니다! 매번 좋은 수업 감사드립니다!
화면에서 아이템을 등록하려고 합니다. 배송방식을 추가하고나서부터 상품 등록 버튼을 누르는 순간400에러가 떨어지는데요ㅠㅠ 20분을 헤멧는데도 이유를 알 수 없어서 질문드립니다. [컨트롤러] [DeliveryCode] [addForm.html] 오류 메시지를 간략하게 적어보면 아래와 같습니다. 2021-07-07 15:10:15.833 WARN 20644 --- [nio-8080-exec-9] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.validation.BindException: org.springframework.validation.BeanPropertyBindingResult: 1 errors Field error in object 'item' on field 'deliveryCode': rejected value [FAST]; codes [typeMismatch.item.deliveryCode,typeMismatch.deliveryCode,typeMismatch.hello.itemservice.domain.item.DeliveryCode,typeMismatch]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [item.deliveryCode,deliveryCode]; arguments []; default message [deliveryCode]]; default message [Failed to convert property value of type 'java.lang.String' to required type 'hello.itemservice.domain.item.DeliveryCode' for property 'deliveryCode'; nested exception is java.lang.IllegalStateException: Cannot convert value of type 'java.lang.String' to required type 'hello.itemservice.domain.item.DeliveryCode' for property 'deliveryCode': no matching editors or conversion strategy found]]
#include <iostream> #include <vector> #include <algorithm> #include <string> #include <stack> int a[101],n; int tmp[101]; using namespace std; void merge(int start, int end){ if(start >= end) return; else { int mid = (start+end)/2; merge(start,mid); merge(mid+1,end); int i = start; int j = mid+1; int k = start; while (i <= mid && j <= end){ if(a[i] <= a[j]) tmp[k++] = a[i++]; else tmp[k++] = a[j++]; } if(i <= mid) { while(i<=mid){ tmp[k++] = a[i++]; } } else if (j<= end){ while(j<= end){ tmp[k++] = a[j++]; } } for (int t = start; t <= end; t++){ a[t] = tmp[t]; } } } int main(){ int n; scanf("%d",&n); for(int i = 1; i <= n; i++){ scanf("%d",&a[i]); } merge(1,n); for (int t = 1; t <= n; t++){ printf("%d ",tmp[t]); } return 0; } 함수를 선언할 때 선생님께서는 merge(a,1,n)으로 배열까지 앞에 넣어 선언했는데 저는 merge(1,n)으로 해도 실행이 되었습니다. 앞에 배열을 넣어주는 특별한 이유가 있나요?
다시 봐도 이상이 없습니다 f12를 눌러서 copy selector 하면 #main_pack > section > div > div.photo_group._listGrid > div.photo_tile._grid > div:nth-child(1) > div > div.thumb > a > img 가 나오고 여기서 저는 div.thumb > a > img를 선택 했습니다 그러나 역시 결과는 저번 강의때와 마찬가지로 빈 리스트만 출력됩니다 from bs4 import BeautifulSoup import urllib.request as req import urllib.parse as rep import sys import io import os sys.stdout = io.TextIOWrapper(sys.stdout.detach(), encoding = 'utf-8') sys.stderr = io.TextIOWrapper(sys.stderr.detach(), encoding = 'utf-8') base = "https://search.naver.com/search.naver?where=image&sm=tab_jum&query=" quote = rep.quote_plus("사자") url = base + quote res = req.urlopen(url) savePath = "C:/python/img_down" try: if not (os.path.isdir(savePath)): os.makedirs(os.path.join(savePath)) except OSError as e: if e.errno != errno.EEXIST: print("폴더 만들기 시패!") raise soup = BeautifulSoup(res, "html.parser") img_list = soup.select("div.thumb > a > img") print("test", img_list) test [] [Finished in 0.305s]
안녕하세요 강사님! 강의 잘 듣고 있습니다! JPQL(or Querydsl)과 관련된 질문이 있습니다 FROM절 서브쿼리는 지원하지 않는다고 말씀하셨는데 그 말씀은 아래외 같은 쿼리는 JPQL로 표현이 불가능하다는 말씀이신가요? 불가능하다면 아래와 같은 통계성 서브쿼리가 들어간 쿼리를 어떻게 해결해야 가장 효율적으로 해결할 수 있는건지 궁금합니다!(Querydsl을 사용해서 해결하고 싶습니다) 아래 쿼리는 거래 내역 테이블에서 거래된 아이템별로 그룹핑한 데이터에서 아이템별 최소 가격을 먼저 뽑아내고, 이렇게 만들어낸 인라인 뷰를 아이템 테이블, 브랜드 테이블과 조인하는 쿼리입니다 SELECT i.*, br.*, b.immediately_purchase_price FROM item i INNER JOIN brand br ON br.brand_id = i.brand_id LEFT JOIN ( SELECT item_id, MIN(price) AS immediately_purchase_price FROM bid GROUP BY item_id ) b ON i.item_id = b.item_id ORDER BY release_date DESC LIMIT 16