묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결김영한의 실전 자바 - 중급 2편
자료구조 제네릭 타입
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]Set, List, Map 등 자바에서 제공하는 자료구조에 제네릭 타입을 특정해서 정하지 않고, Object로 사용하면 하나의 자료구조에 여러 가지 데이터 타입을 저장하고 관리할 수도 있을 것 같은데선생님 수업에서는 거의 Integer 혹은 String으로 제네릭 타입을 정하고 사용을 하시는 부분이 많더라구요.궁금한 점은 제네릭 타입을 Object로 사용하는 것이 타입 안정성 때문에 보통은 사용을 안 하는 건지 만약 사용을 한다고 할때 자료구조의 메서드 사용에는 문제 없는지 알고싶습니다.
-
해결됨독하게 C를 배운 사람을 위한 선형 자료구조
인덱스정렬 강의, 04_ListAndIndex질문드립니다.
안녕하세요 강사님04_ListAndIndex의 원본 코드의 signleList.c파일의SearchByIndexAgeRange함수의 354번째 줄 라인에서int length = idxMax - idxMin + 1; USERDATA** aSelected = malloc(sizeof(void*) * length); memcpy(aSelected, aList + idxMin, sizeof(void*) * length);와 같이 aSelected의 리턴 타입이 USERDATA** 인데왜 malloc으로 생성할때, "malloc(sizeof(void*) * length);"로왜 void*의 size만큼 생성해주는지 잘 모르겠습니다.USERDATA** aSelected = malloc(sizeof(USERDATA*) * length);다음 위의 코드처럼 "malloc(sizeof(USERDATA*) length);"즉, USERDATA*의 size가되어야 알맞지 않나요??아니면 USERDATA*와 void* 모두 크기가 8byte라서 메모리가 할당되는 크기가 같은건가요?? 제가 알고 있는 개념이 맞는걸까요??강의 잘 듣고있습니다 감사합니다.
-
미해결그림으로 쉽게 배우는 자료구조와 알고리즘 (심화편)
레드블랙트리 개념 4:20초에 13번 노드는 Nill 노드와 연결되면 안되는 것 아닌가요?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.Nill 노드와 직접 연결된 것이 아니라 17번 노드를 통해서 연결된 거라 13번 노드는 Nill 노드와 연결이 되면 안되는 것 같은데요
-
미해결김영한의 실전 자바 - 중급 2편
List인터페이스를 sout 할때 질문입니다.
링크드리스트의 list를 그냥 System.out.println(list); 했을때, 아래의 내용이 맞는지 궁금합니다. LinkedList의 toString 메서드는 AbstractCollection 클래스에서 오버라이딩된 toString 메서드를 상속받아 사용합니다.
-
미해결김영한의 실전 자바 - 중급 2편
TreeSet으로 자동 변환
질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================Set 정리 14:58에서데이터 개수가 8개 이상이 되면 TreeSet으로 바꿔서 equals를 수행한다는 말씀은,HashSet, LinkedListSet으로 선언하여도 자바가 탐색 시에만 자동으로 변경한다는 말인가요?
-
미해결김영한의 실전 자바 - 중급 2편
add 부분 코드 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]이 코드는 LinkedList<Integer> bucket = new LinkedList - > buket = bukets[hashIndex] 이렇게 이어지는 코드인건가요 ..? bukets이라는 linkedlist의 배열을 만들고 bukets 1 bukets 2 하나 하나에 linkedlist를 넣는 과정인건 알겠는데 저 buket은 어떻게 나온 코드인지 모르겠어요 ㅠㅠ
-
미해결김영한의 실전 자바 - 중급 2편
와일드카드
[질문 내용]package generic.test.ex5; import generic.animal.Animal; import generic.animal.Cat; import generic.animal.Dog; public class WildCardMain2 { public static void main(String[] args) { Box<Object> objBox = new Box<>(); Box<Animal> animalBox = new Box<>(); Box<Dog> dogBox = new Box<Dog>(); Box<Cat> catBox = new Box<Cat>(); //writeBox(objBox); writeBox(animalBox); Animal animal = animalBox.get(); System.out.println("animal = " + animal); } static void writeBox(Box<? extends Animal> box) { box.set(new Dog("멍멍이", 100)); } }package generic.test.ex5; public class Box<T> { private T value; public void set(T value) { this.value = value; } public T get() { return value; } }======질문 수정extends를 대입하면 Animal 이하의 개체(예: Cat, Dog)들이 전달 가능해지고, 이는 Dog를 담을 수 없기 때문에 컴파일 오류가 발생한다고 이해했습니다. 따라서 Super를 통해 이런 가능성을 차단합니다. 제가 이해한 것이 맞을까요?
-
미해결김영한의 실전 자바 - 중급 2편
hashCode를 오버라이딩 했을때 반환하는게 틀려요.
@Override public int hashCode() { return Objects.hashCode(id); }이걸로 ide가 만들어주네요. 업데이트 된 건가요?해쉬코드가 다르게 나와서 다른 인덱스에 채워지네요.강의처럼 아래와 같이 하면,@Override public int hashCode() { return Objects.hash(id); }강의와 똑같이 같은 인덱스에 채워집니다.Objects의 hash 메서드와 hashCode 메서드의 차이가 무엇일까요? 왜 인텔리제이는 hashCode 메서드를 생성했을까요?
-
미해결김영한의 실전 자바 - 중급 2편
제네릭 메서드, 와일드카드
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]제네릭 메서드에서는 <Dog>가 타입추론으로 생략이 가능하다고 하셨는데WildCardEx.<Dog>printGenericV1(dogBox); 와일드 카드의 경우에는 <타입> 해당 부분에 대해서는 설명을 안해주셨는데 와일드카드의 경우에는 "<타입>" 은 어떻게 되는 건가요?? 항상 생략인건가요..???WildCardEx.printWildCardV1(dogBox);
-
해결됨김영한의 실전 자바 - 중급 2편
hashSet에서 hashCode 메서드를 만들 때 질문이 있습니다.
해당 강의에서 강사님꼐서 IDE를 통해 만드신 hashCode() 오버라이드 메서드는 Object.hash() 함수를 사용했는데요.저도 똑같이 IDE를 통해서 만들었는데, Object.hashCode() 라는 다른 메서드를 사용해서 만들어 주더라고요.둘 다 실험해보니까 잘 작동하긴 했는데, 두 메서드의 차이점이 무엇인가요?왜 강사님이 하실때는 hash() 메서드가 뜨고 제가 할 때는 hashCode() 메서드를 이용해서 만들어 줄까요?
-
미해결김영한의 실전 자바 - 중급 2편
정렬-1 강의에 대한 질문이 있습니다.
static class AscComparator implements Comparator<Integer>{ @Override public int compare(Integer o1, Integer o2) { System.out.println("o1=" + o1 +" o2=" + o2); return (o1 < o2) ? -1 : ((o1==o2) ? 0 :1); } }위 메서드에 대하여 질문을 드립니다.Integer[] arr = {3,2,1}을 설정하였고Arrays.sort(arr , new AscComparator());기존 배열을 정렬하는데 제시된 기준으로 정렬을 할 것이라는 것까지는 이해하였습니다.해당 메서드의 경우 o1 & o2에 대한 값을 먼저 출력을 한다음 서로 값 비교를 하는데왜 o1에는 3이 아니라 2가 출력이 되고 o2에는 3이 출력되는지 궁금합니다.
-
해결됨세계 대회 진출자가 알려주는 코딩테스트 A to Z (with Python)
DFS와 백트래킹을 공부하고 싶은데 몇 번 강의를 들으면 좋을까요?
안녕하세요. 강의 잘 듣고 있습니다. 처음부터 차례로 들어도 좋지만, 제가 필요한 부분을 우선적으로 듣고 있는 수강생인데요.백트래킹 알고리즘에 대해 언급하시는 부분이 있을까요?해당 섹션과 강의제목 알려주시면 감사하겠습니다.
-
해결됨세계 대회 진출자가 알려주는 코딩테스트 A to Z (with Python)
학습 방법에 대해서 조금 질문이 있어요!
안녕하세요.강의를 구매하고 재밋게 보고 있는데요지금 재귀함수 이해하기 시리즈 3편을 다 보았는데요질문은 제가 지금 학습하고 공부하는 방법이 맞나요?엇나가고 있는거라면 조언 해주시면 감사드려요 ㅠㅠ강의를 보기전 직접 문제를 풀어보기내 코드랑 강의를 보면서 코드 이해하기강의와 노션을 완독 한 후에 풀이 코드 방식을 학습하고 해당 방식을 풀이 1번 2번 3번 대로 직접 푸는 연습하기아무래도 파이썬 처음이다보니 익숙하지 않아서 문법을 조금 찾아보면서 하고 있긴 합니다. 예를들어 arr = [-1] * (n +2)아래와 같은 코드가 살짝 이해가 안되었는데출력 해보니까 js로 작성해보자면const n = 10; const array = Array.from({ length: n + 2 }).fill(-1);이런 코드인것 같더라요.결론적으로는 1,2,3번 방식으로 공부하고 있으면서 파이썬 문법은 중간중간 제공해주신 파이썬 Notion이나 구글링을 통해서 학습 하면서 문제 풀이 방식들을 안보고도 풀 수 있을때까지 반복 숙달하고 있는데 이렇게 학습 하면 될까요?
-
해결됨세계 대회 진출자가 알려주는 코딩테스트 A to Z (with Python)
강의 구매 했습니다.
강의 구매 해보았습니다. 열심히 달려 볼게요 🏃♂그나저나 파이썬 해볼 생각 하니까 벌써부터 두근두근 되는데요? ㅎㅎ
-
미해결김영한의 실전 자바 - 중급 2편
직접 구현하는 배열 리스트1 - 시작 챕터에서 질문.
public Object set(int index, Object element) {Object oldValue = get(index); elementData[index] = element; return oldValue; } public void add(Object e) { elementData[size] = e; size++; } System.out.println(list.size()); 3 System.out.println(list.set(3, "r")); System.out.println(list);System.out.println("==범위 초과=="); list.add("d"); 아래 출력결과에서,3null[a, b, c] size=3, capacity=5 set(int index, Object element) { elementData[3] ="r"을 할당하는게 [a, b, c,r] 안 된게 이해가 안가는게, list.add("d") add(Object e) { 에서 elementData[3] = "d" 똑같은 코드인데, "d"를 넣어준거는 할당이 되고, AI 에게 질의한 결과 set메서드는 index 3에 값이 무조건 유효값이 있어야 할당이 된다고 답변 하는데, set이나 add 나 그럼 add의 값은 할당이 된건데, set메서드에 유효값이 있어야 한다는 조건이 왜 붙는건지, 각각의 메서드 안에는 elementData[3] ="r"elementData[3] = "d" 같은걸 수행하는데, set에만 해당 index에 유효값이 있어야 한다 조건문은 코드에 있지 않은데,list.set(3, "r") r도 [a, b, c,r] 할당이 되야 될거 같은데(제 생각에는) 질문을 남겨봅니다. ai 한테 답변 받았지만 풀리지 않아 질문 드립니다. 항상 감사합니다. ==범위 초과== [a, b, c, d] size=4, capacity=5
-
미해결김영한의 실전 자바 - 중급 2편
문제와 풀이3 - 제네릭 메서드와 와일드카드 질문 있습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]<영한님 코드>public static void printV2(Shuttle<? extends BioUnit> t1) {BioUnit unit = t1.out();System.out.println("이름: " + unit.getName() + ", HP: " + unit.getHp());}<제 코드>public static void printV2(Shuttle<? extends BioUnit> shuttle) { shuttle.showInfo(); }저는 매개변수 shuttle이 어차피 Shuttle 타입으로 넘어온다고 생각해서 바로 shuttle에서 작성한 메서드를 사용했는데, 제가 생각하는게 맞는지, 또 t1.out()에서 반환되는 값을 받아서 사용하는 것이 더 이점이 있는지 궁금합니다!
-
해결됨2주만에 통과하는 알고리즘 코딩테스트 (2024년)
19942 다이어트 질문 드립니다
안녕하세요, 강사님! 강의 잘 듣고 있습니다.def recur(idx, A, B, C, D, E): global answer, result, tmp if idx == N: if a <= A and b <= B and c <= C and d <= D: # 모든 영양소를 충족했다면 if answer > E: answer = min(answer, E) result = tmp[:] return return # 재료를 사용한 경우 tmp.append(idx+1) recur(idx+1, A+ingre[idx][0], B+ingre[idx][1], C+ingre[idx][2], D+ingre[idx][3], E+ingre[idx][4]) # 재료를 사용하지 않는 경우 tmp.pop() recur(idx+1, A, B, C, D, E) N = int(input()) a, b, c, d = map(int, input().split()) ingre = [list(map(int, input().split())) for _ in range(N)] answer = 999999999999999999999 tmp = [] result = [] recur(0, 0, 0, 0, 0, 0) if answer == 999999999999999999999: print(-1) print() else: print(answer) print(*result)강의에서 작성해주신 기본 코드 기반으로 완성해보았는데, 계속해서 99%에서 틀렸습니다라고 뜹니다..!알고리즘 로직상 이상이 없어보이는데, 제가 놓쳐서 고쳐야할 부분 알려주심 감사하겠습니다..!
-
미해결김영한의 실전 자바 - 중급 2편
printV2의 와일드카드 사용법
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]static public void printV2(Shuttle<? extends BioUnit> shuttle) {BioUnit unit = shuttle.out();System.out.println("이름 : " + unit.getName() + ", HP:" + unit.getHp());}위 printV2 메서드의 파라미터의 타입을 굳이 상한조정해야하는이유가 있나요? static public void printV2(Shuttle<?> shuttle) {...}위처럼 상한을 조정하지 않아도 Shuttle자체에서 상한을 조정하고 있기 때문에 무조건 BioUnit이 들어올수밖에없다고 생각돼서요!public class Shuttle<T extends BioUnit> {...}
-
해결됨김영한의 실전 자바 - 중급 2편
스트림 강의?
안녕하세요.이번에 기존 개념을 다시 익히는 것 플러스로 stream에 대한 개념까지 배울수있을까 싶어 일단 강의수강신청을 하게 되었습니다ㅎ..혹시 stream에 관련된 내용이 어떤 강의에 있는지 문의드립니다.없다면 출시 생각이 있으신지 궁금하네요 ㅠㅜ..
-
해결됨세계 대회 진출자가 알려주는 코딩테스트 A to Z (with Python)
접근방식과 방법론의 차이가 뭔가요?
안녕하세요, 좋은 강의 제공해주셔서 감사합니다.그리디, dp 는 접근방식이라고 말씀하셨고,나머지 bfs 등은 방법론이라고 하셨는데 이게 정확히 무슨 의미인지 궁금합니다. 학술/엔지니어링 적인 term 이 있나요?