묻고 답해요
143만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결2주만에 통과하는 알고리즘 코딩테스트 (2024년)
정수론 최적화 #1407문제 질문있습니다
1 2 3 4 5 6 7 8 2**0 o o o o o o o o -> 8개 (8 // 1) 2**1 o o o o -> 4개 (8 // 2) 2**2 o o -> 2개 (8 // 4) 2**3 o -> 1개 (8 // 8)강의에서 위의 내용까지는 이해를 했습니다.(8!에 2가 몇 번 곱해져있을까? 를 구하는 방법이라고 이해하고 있습니다) 강의하시는 중(24:30초 즈음부터)에 아래의 빨간 네모부분의 계산을 왜 하시는건지 이해가 잘 안됩니다!
-
미해결오픈소스 자료구조 및 알고리즘 in C
커널 버전
안녕하세요. 좋은 강의 정말 감사드립니다 😋 강의에서 분석하는 커널 버전이 3.10.X(on Jul 1, 2013(https://github.com/torvalds/linux/releases/tag/v3.10)) 으로 한 이유가 있으신지 궁금합니다. 최신 버전은 6.9.X 과는 시간 간극이 꽤 큰 것 같습니다. 강의 17:00 에서의 리눅스 소스코드 버전을 보면 3.10.X(https://github.com/torvalds/linux/blob/v3.10/lib/sort.c) 에서의 generic_swap 함수를 띄어왔지만, 최신 버전(6.9.X - https://github.com/torvalds/linux/blob/v6.9/lib/sort.c) 에서는 generic_swap 함수를 찾을 수 없습니다. 물론, 코드를 읽어보면 강사님이 해주신 내용으로 충분히 이해가 가능합니다. 핵심 아이디어는 동일하다는 것이겠지만, 조금씩 다른 부분, 그리고 시간이 더해지면서 발전한 코드가 있을 것 같아, 질문으로 남깁니다
-
해결됨김영한의 실전 자바 - 중급 2편
다운캐스팅은 런타임오류??
Object를 활용시에 다운캐스팅 과정이 필요했는데요. (String) Object 10 이것은 컴파일오류로 인식하지 않는 이유가 약간 이해가 가지 않습니다. 어떤 객체든지 Object가 최상위 부모니까 String으로 갈 수 있는데 가보니까 10이어서 예외가 터지는 시나리오 같은데, 컴파일러는 이를 미리 판단할 정도는 되지 않나요?? 컴파일러는 "Object에서 String? -> ok 가능" 이정도만 판단해주는건가요?
-
해결됨독하게 C를 배운 사람을 위한 선형 자료구조
스택의 POP코드 질문드립니다.
안녕하세요 오랜만에 질문드립니다.현재 가정을 헤드노드->Test03->Test02->Test01->테일노드 이렇게 있다고 가정을 했을 때pPop->pNext->pPrev = g_TailNode.pPrev; 이 코드에서 질문있습니다.제가 이해한것을 풀어쓰느라 조금 길거 같습니다.흐름상 pop 구조체 포인터가 Test03노드를 가리키고 있고 헤드의 다음노드를 Test02로 바꾸는것까지 이해했습니다. 그다음 pop 다음 노드의 이전 노드 즉 Test02의 이전 노드가 테일 노드의 이전 노드를 가리킨다고 하는데 현재 흐름 상 보면 Test03의 다음노드의 이전노드가 Test01노드라고 하는걸로 해석이 됩니다. 제가 어느 부분에서 이해를 못한 건지 모르겠습니다.그리고 다음 코드를 이렇게 고쳐도 출력에는 이상이 없는 것으로 확인됩니다.
-
미해결김영한의 실전 자바 - 중급 2편
HashSet 실제 구현
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]HashSet의 코드를 보니 HashMap을 사용하여 구현이 되어있는데 실제 구현도 결국에는 강의 내용처럼 배열안에 LinkedList 나 TreeSet으로 구현과 최적화가 되는건가요?
-
해결됨2주만에 통과하는 알고리즘 코딩테스트 (2024년)
백준 2436 문제에서..
왜 maxg = gcd * lcm 을 생각하셨는지..왜 반복을 돌 때 maxg ** 0.5 를 생각하셨는지.. 이해가 잘 안되네요 ㅠ..
-
해결됨김영한의 실전 자바 - 중급 2편
섹션 10. List.of()
복습하다 문득 이 코드를 보고 생각이 들었습니다. ArrayList<MyUser> list = new ArrayList<>(List.of(myUser1, myUser2, myUser3));List<MyUser> list1 = List.of(myUser1, myUser2, myUser3);List로 반환되는 건 맞는 거 같은데... static <E> List<E> of(E e1, E e2, E e3) { return ImmutableCollections.listFromTrustedArray(e1, e2, e3); }List.of()는 분명 List타입으로 반환이 되는데 ArrayList에 어떻게 들어가는 건가요?List가 ArrayList를 받을 수는 있지만, 그 반대는 안 되는 거 아닌가 해서요!!
-
해결됨김영한의 실전 자바 - 중급 2편
연결리스트 배열 선언?
해시 알고리즘6-해시 충돌 구현 파트에서 LinkedList<Integer>[] buckets = new LinkedList[CAPACITY];이런 코드가 등장했는데요. 제가 앞선 강의에서 이런 내용을 놓친 것인지는 잘 모르겠지만...ㅠ제네릭을 통해 선언하는 것인데new LinkedList<>()[CAPACITY]; 를 하면 안되는 이유가 무엇인가요?
-
해결됨독하게 C를 배운 사람을 위한 선형 자료구조
adtFileIO 예제코드관련 질문 있습니다.
코드를 분석하다 드는 의문점이 있어 질문드립니다.실제 자료노드와 이를 추상화 한 MYNODE로 데이터베이스가 구축되어 있는데 여기에 MYNODE를 기준으로 파일 입출력을 연동시킨 것이 이번 예제의 핵심이라고 보입니다. 이렇게 한 이유가 파일의 일부를 메모리로 옮겨올 수 있기 때문(캐싱)이라고 하셨는데 이 캐싱의 정확한 개념이 궁금합니다. 해당 예제의 offset변수를 보면 파일의 처음부터 끝까지 모든 자료에 대하여 카운트정보를 담고 있는 것으로 보입니다. 즉 파일의 일부가 아닌 전부가 MYNODE기준 메모리상 데이터에 연동되고 이 후 선택노드의 추가 데이터만 메모리상데이터에 추가되는 것으로 보이는데 캐싱이라는 개념이 파일데이터들의 일부만 메모리에 옮기는 것이 아니라 일단 모든 목록(인덱스)를 올린 후 선택 노드의 데이터만 추가하는 개념인 것인지. 아니면 원래는 파일데이터의 목록까지도 일부만 올리는 개념인데 예제에서는 간략화하여 설명된 것인지 궁금합니다.SaveNewDataToFile()함수를 살펴보면 pTmp->bNew 불리언 변수가 true일 때 파일쓰기가 일어나는데 이는 기존 데이터가 존재하는 노드인 경우 데이터를 수정시 파일쓰기가 되지 않는 오류가 있지 않나 생각됩니다. 즉 commit이 노드데이터 수정 후 일어나지 않으면 프로그램 종료시 호출되는 SaveNewDataToFile()함수로는 수정데이터의 파일출력이 일어나지 않는 것 아닌가 하는 의문이 듭니다. 두 째 질문은 강의 중에 언급해 주신 부분을 확인했습니다. 감사합니다. 감사합니다.
-
미해결김영한의 실전 자바 - 중급 2편
직접 구현 하는 컬렉션 코드는 실제 내부 구현과 유사하게 구현하시는건가요?
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]직접 구현 하는 컬렉션 코드는 실제 내부 구현과 유사하게 구현하시는건가요?예를 들면 배열 리스트에서 capacity를 넘어서 데이터를 추가 시에 기존 배열의 50% 정도 증가하는 방법을 사용한다고 pdf에 나와있는데 이런 부분들이 실제 구현과 같은지 궁금합니다.
-
해결됨2주만에 통과하는 알고리즘 코딩테스트 (2024년)
코딩센세님.. 이거 제가 이해를 잘못하는걸까요?
29:10분에보면 "176 ~ 177까지의 2의 제곱수가 몇 번 포함되어 있는지 나오겠네요"라고 하시는데 제가 생각할 땐"176 ~ 177까지의 2의 제곱이면서 최대 약수의 합"이라고 생각하는데 두 개의 말은 다른 말 아닌가요??
-
미해결김영한의 실전 자바 - 중급 2편
LinkedHashSet 구조에 관해 질문이 있습니다
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]LinkedHashSet은 HashSet과 같은데 Node를 추가해서 입력 순서를 유지한다 들었습니다.그럼 만약에 HashIndex가 같은 경우(해시 충돌) Node도 HashSet과 같이 List 형식으로 저장이 되는게 맞을까요?
-
해결됨2주만에 통과하는 알고리즘 코딩테스트 (2024년)
우선 1090 모이기 문제를 완전 탐색으로 해보려고 하는데...
N=4 일 때 좌표 4개가 주어지고 1명, 2명, 3명, 4명 모였을 때의 경우의 수를 비교해야할 것 같은데1명 모였을때 경우의 수, 2명 모였을 때 경우의 수, 3명 모였을 때 경우의 수, 4명 모였을 때 경우의 수를어떻게 그 좌표 조합을 만들 수 있는지 고민입니다.1명 모였을 때는 단일 반복문, 2명일 때 2중 반복문, 3명일 때 3중 반복문이 필요할 것 같은데... 이게 N개면 N개의 반복문을 만드는게 맞나 싶어서요.. ㅠ
-
해결됨독하게 C를 배운 사람을 위한 선형 자료구조
ADT강의 관련 질문 있습니다.
항상감사합니다.ADT강의 보고 코드 확인하는 중 질문이 생겨 글 올립니다. 1.동적바인딩과 다형성 등 사용성 증가를 위해 구체 자료를 가리키는 추상화 자료노드를 구성하여 함수로 그 추상화자료노드에 일차적으로 접근하는 개념이 ADT라고 파악되는 데 여기에 함수 포인터를 구조체 맴버로 포함시킨 이유가 궁금합니다. 그냥 구조체 외부에 선언된 getkey 함수를 사용해서 sorting을 해도 기능상 차이는 없을 것 같은데 포함시키신 이유는 객체지향개념을 적용하기 위함인지 아니면 구조체 안의 함수포인터 변수로 실현된 getkey 함수가 외부에 선언된 getkey함수를 사용할 때와 비교해서 실제 기능상 차이가 있는지 궁금합니다. 2.함수포인터는 함수를 가리키는 포인터 변수로 함수의 이름과 같으면 안되는 것으로 알고 있는데 이 예제의 경우 컴파일 되는 것은 구조체 안의 포인터 변수라서 그런 것인지. 궁금합니다. 3.강의에서 언급해 주신 구조체 안의 함수포인터 개념을 너무 흥미있게 들었습니다. 그렇다면 그 개념의 연장선이 객체지향 클래스 개념이라고 보는데 결국 c언어는 절차지향. c++은 객체지향으로 단편적으로 구분되는 것이 아니라 c언어 프로그래밍시 하나의 기능단위 캡슐화를 시도하는 프로그래밍 기법이 객체지향이 아닌지. 그리고 그것을 구현하기 쉽게 만든 것이 c++같은 객체지향 프로그래밍 언어가 아닌가 하는 궁금증이 생겼습니다. 이런 관점에서 보자면 함수포인터는 결국 c언어 안에서 이미 함수형프로그래밍의 개념으로 접근할 수 있는 수단이 아닌지 하는 생각도 듭니다. 이러한 접근이 맞는 것인지 여쭤봅니다. 4.getkey함수가 name 이나 phone을 반환하는데 호출함수이름이 SortListByKey()가 적절하지 않나 궁금합니다. 5.기타 질문으로 lineardatastructure.c 파일 안의 한글이 깨져 보이는 문제가 있는데 비쥬얼 스튜디오 및 윈도우에서 utf-8으로 환경설정을 전부 변경해도 여전히 깨져 보입니다. 다른 해결방법이 있는지 궁금합니다. 감사합니다.
-
해결됨코딩테스트 [ ALL IN ONE ]
for,while 문
제가 알기로는 for, while문 모두 반복문인데 왜 O(n)으로 계산되는건가요?
-
해결됨2주만에 통과하는 알고리즘 코딩테스트 (2024년)
1090 문제... 두 번 들어도 참 어렵네요..
정말 머리가 굳어진 기분이네요... 두 번 들어도 와닿지가 않네요..더 들어봐야겠다..
-
미해결김영한의 실전 자바 - 중급 2편
제네릭 메서드
역시 갓 영한님 믿고듣는 강의.. 감사합니다 질문이 하나 있습니다. public static <T> T genericMethod(T t) { System.out.println("generic print: " + t); return t; }이 코드에서 타입 지정해주는 T를왜 다 똑같은 타입으로 써야 하는지 궁급합니다. 예를 들자면 위 코드를 보면 매개변수 타입도 T이고 반환 타입도 T인데매개변수의 타입과 반환타입을 꼭 맞춰서 써야 하는지 궁금하네요 public static <T> T genericMethod(A t) { System.out.println("generic print: " + t); return t; }이런식으로는 왜 못쓰는건가요 ?(매개변수로는 String을 받지만 결과 타입은 Integer 로 할수도 있지않나요 ? 근데 제네릭 메서드는 왜 이렇게는 불가능한가요?)
-
미해결김영한의 실전 자바 - 중급 2편
섹션 10. Collections
Map<String, Integer> map = Map.of("a", 1, "b", 2, "c", 3, "ab", 4); 실행 결과 1번째 map = {a=1, b=2, c=3, ab=4} 2번째 map = {b=2, a=1, ab=4, c=3} 3번째 map = {ab=4, c=3, b=2, a=1} 4번째 map = {b=2, c=3, ab=4, a=1} 5번째 map = {b=2, a=1, ab=4, c=3}Map은 순서를 보장하지 않고, 중복을 허용하지 않습니다. HashMap에서는 key값을 가지고 hashCode를 구하고 hashIndex에 값을 보관하기에 입력한 순서대로 저장하는 것을 보장할 수 없습니다.그런데 map.of()로 생성을 했을 때는, 그 순서가 실행 할 때마다 달라져있습니다. 랜덤으로 돌린 것처럼...왜 매번 입력되는 값의 순서가 달라지는 건가요ㅠㅠ
-
해결됨김영한의 실전 자바 - 중급 2편
섹션 10. Comparable
public class MyUser implements Comparable<MyUser> { private String id; private int age; public MyUser(String id, int age) { this.id = id; this.age = age; } public String getId() { return id; } public int getAge() { return age; } @Override public int compareTo(MyUser o) { return this.age < o.age ? -1 : (this.age == o.age) ? 0 : 1; }MyUser의 멤버 변수는 private인데 compareTo(MyUser o)에서 this.age는 본인의 값을 가져다 쓴다고 쳐도 o.age로 호출이 어떻게 가능한 건가요??
-
해결됨김영한의 실전 자바 - 중급 2편
섹션 2. 문제풀이 질문드립니다.
class Suttle<T extends BioUnit> 으로 상한이 정해져있고, 타입 매개변수로 받아서public class UnitPrinter { static <T extends Shuttle> void printV1(T t) { t.showInfo(); } static void printV2(Shuttle<?> t) { t.showInfo(); } } UnitPrinter를 구현할 때 직접 셔틀에 있는 메서드를 호출할 수 있기 때문에 위와 같은 코드로 구현했습니다.동작은 제대로 하지만, 혹시 문제점이 존재하는 코드인지, 실무에서 지양하는 코드 구현 방식인지 궁금해서 질문드립니다.감사합니다.