묻고 답해요
150만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
순위 정보를
불러오고 있어요
-
해결됨실리콘밸리 엔지니어가 가르치는 파이썬 기초부터 고급까지
class method vs static method
class method와 static method는 각각 어떤 목적으로 사용되는건가요?타 언어의 static class method와 비슷한 느낌인데, replit 에서 테스트 해보니 instance로도 해당 method 들을 call 할 수 있던데, 각 method type의 목적과 사용 예시를 알고 싶습니다.
-
해결됨실리콘밸리 엔지니어가 가르치는 파이썬 기초부터 고급까지
Type hint 문법의 Type Checking이 강제성이 있는지?
Type hint를 작성했을때(특히 function의 args type과 return type) Type Checking을 언어단에서 해주는건가요? (강제성이 있는지? Interpreting 과정에서 Type Checking을 해주는건지?) 아니면 정말 순수하게 코딩 작업의 Hint 목적으로만 존재하는 문법인가요?
-
해결됨[파이썬/Python] 문과생도 이해하는 DFS 알고리즘! - 입문편
다른 주제 강의
안녕하세요!! 먼저 좋은 강의 너무 감사드립니다 이해가 너무 잘돼요 ㅜㅜ전에 글중에서 올해 하반기에 다른주제 강의들도 올리실 계획 있다고 본 것 같은데 (DP, BFS 등등) 혹시 구체적인 일정 나온게 있나요? 나오면 꼭 결제하고 싶습니다! 감사합니다^-^
-
해결됨[자바/Java] 문과생도 이해하는 DFS 알고리즘! - 입문편
최근에 올린 질문, 코드블럭으로 공유드립니다!
import java.util.*; public class Main { static int N, M, R; static int[] answer; static ArrayList<Integer>[] graph; static boolean[] visited; static int order = 1; public static void dfs(int idx) { visited[idx] = true; answer[order] = idx; order++; for(int i = 0; i < graph[idx].size(); i++) { if(!visited[graph[idx].get(i)]) dfs(graph[idx].get(i)); } } public static void main(String[] args) { Scanner input = new Scanner(System.in); N = input.nextInt(); M = input.nextInt(); R = input.nextInt(); answer = new int[N+1]; visited = new boolean[N+1]; graph = new ArrayList[N+1]; for(int i = 1; i <= N; i++) { graph[i] = new ArrayList<>(); } for(int i = 0; i < M; i++) { int x = input.nextInt(); int y = input.nextInt(); graph[x].add(y); graph[y].add(x); } for(int i = 1; i < graph.length; i++) { Collections.sort(graph[i], Collections.reverseOrder()); } dfs(R); for(int i = 1; i < answer.length; i++) { System.out.println(answer[i]); } } }이렇게 구현한 경우, 틀렸다고 나오는데,ide로 돌리고 출력해보면14320으로 정상 출력되는데.. 이유를 모르겠습니다ㅠㅠ!선생님이 작성해주신 코드answer[idx] = order; order++; 제가 작성한 코드answer[order] = idx; order++;이렇게해도, 제가 하나씩 디버깅해서 따라가보면, 정답과 맞게 나오는데, 틀렸다고합니다.. !
-
해결됨[자바/Java] 문과생도 이해하는 DFS 알고리즘! - 입문편
질문이 있습니다. dfs 메서드에 order를 이렇게 구현하면 안되는 이유가 무엇인가요?
이렇게 구현한 경우, 틀렸다고 나오는데,ide로 돌리고 출력해보면14320으로 정상 출력되는데.. 이유를 모르겠습니다ㅠㅠ!
-
해결됨카카오 코테 6주 합격! 실전 파이썬 코딩테스트
2강 사전문제
안녕하세요.2강 사전문제 2강_0.배경지식 퀴즈.ipynb에서 배경지식 퀴즈 1의 힌트 두 번째 줄에 숫자가 잘못 표기된 것 같습니다.다음과 같이 기재되어 있는데, 첫번째 거듭제곱이 1*10^2가 맞는 게 아닌지요?
-
미해결김영한의 실전 자바 - 중급 2편
HashCode override
김영한 선생님의 자료의 경우에는 매개변수가 Object value 였는데 만약 제네릭을 K key 라고 할때에도return Math.abs(Objects.hashCode()) 라고 하는게 맞나요 ? 아니면 Math.abs(key.hashCode()) 가 맞나요?gpt 말로는 Objects 로 해야 NullPointerException 을 방지할 수 있다고 하는데 왜 그런건가요 ?
-
미해결김영한의 실전 자바 - 중급 2편
Shuttle에 많이 태우기 위해 코드를 수정한 후 생긴 사이드 이팩트
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]```package generic.test.ex3; import generic.test.ex3.unit.BioUnit; public class Shuttle<T extends BioUnit> { private BioUnit[] units; private int unitCount; public Shuttle() { units = new BioUnit[10]; } public void in(T unit) { units[unitCount++] = unit; } public T out() { return (T) units[0]; } public void showInfo() { for (int i = 0; i < unitCount; i++) { System.out.println("이름: " + units[i].getName() + " HP: " + units[i].getHp()); } } } package generic.test.ex3; import generic.test.ex3.unit.Marine; import generic.test.ex3.unit.Zealot; import generic.test.ex3.unit.Zergling; public class ShuttleTest { public static void main(String[] args) { Shuttle<Marine> shuttle1 = new Shuttle<>(); shuttle1.in(new Marine("마린", 40)); shuttle1.in(new Marine("마린2", 45)); shuttle1.showInfo(); Shuttle<Zergling> shuttle2 = new Shuttle<>(); shuttle2.in(new Zergling("저글링", 35)); shuttle2.in(new Zergling("저글링2", 35)); shuttle2.in(new Zergling("저글링3", 35)); shuttle2.in(new Zergling("저글링4", 35)); shuttle2.showInfo(); Shuttle<Zealot> shuttle3 = new Shuttle<>(); shuttle3.in(new Zealot("질럿", 100)); shuttle3.in(new Zealot("질럿2", 100)); shuttle3.in(new Zealot("질럿3", 100)); shuttle3.in(new Zealot("질럿4", 100)); shuttle3.showInfo(); UnitPrinter.printV1(shuttle1); UnitPrinter.printV2(shuttle1); } } Shuttle을 생성하고 내부에 많이 태우고 싶어서 코드를 조금 수정해 보았습니다 ! 그런데 코드를 이렇게 수정하니 문제풀이 시간 때 package generic.test.ex3; import generic.test.ex3.unit.BioUnit; public class UnitPrinter { public static <T extends BioUnit> void printV1(Shuttle<T> shuttle) { T out = shuttle.out(); System.out.println("이름: " + out.getName() + "HP: " + out.getHp()); } public static void printV2(Shuttle<? extends BioUnit> shuttle) { BioUnit out = shuttle.out(); System.out.println("이름: " + out.getName() + "HP: " + out.getHp()); } }이 코드를 출력하기 위해서 Shuttle 클래스에 out메서드에 unit 1명만 출력하기 위해 (T) units[0]을 반환하였는데요, 이렇게 한 덕분에 문제 요구사항 대로 잘 나왔지만,Shuttle 클래스의 out 메서드에 이러한 린트가 발생합니다. Unchecked cast: 'generic. test. ex3.unit. BioUnit' to 'T' 왜 이러한 문제가 발생하는지 파악을 하지 못했고,혹시 코드를 이렇게 작성하게 된다면 어떤 문제점이 발생하는지, 어떻게 리팩터링 하면 좋을지 조언을 구하고 싶습니다 !
-
미해결김영한의 실전 자바 - 중급 2편
와일드 카드는 이미 만들어진 제네릭 타입을 활용할 때 사용한다 ?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요 !강의를 통해 제네릭에 대해 알 수 있어서 감명깊었습니다.회사 코드를 보면서 막혔었는데 점차 이해가 되고 있어요 ! 감사 인사 먼저 전합니다 ㅎㅎGeneric2 정리 부분 11:06초에 질문 있습니다 !와일드카드는 제네릭 타입이나, 제네릭 메서드를 선언하는 것이 아니다.와일드 카드는 이미 만들어진 제네릭 타입을 활용할 때 사용한다. 이 부분이 이해가 잘 되지 않습니다 ...! public static void printV2(Shuttle<? extends BioUnit> shuttle) { BioUnit out = shuttle.out(); System.out.println("이름: " + out.getName() + "HP: " + out.getHp()); }package generic.test.ex3; import generic.test.ex3.unit.BioUnit; public class UnitPrinter { public static <T extends BioUnit> void printV1(Shuttle<T> shuttle) { T out = shuttle.out(); System.out.println("이름: " + out.getName() + "HP: " + out.getHp()); } public static void printV2(Shuttle<? extends BioUnit> shuttle) { BioUnit out = shuttle.out(); System.out.println("이름: " + out.getName() + "HP: " + out.getHp()); } } 강의에서 사용한 와일드카드 메서드 예시입니다 ! printV2가 와일드카드 메서드 인데요, 이 메서드를 구현한 UnitPrinter 클래스는 제네릭 타입을 선언(?)하지 않았는데도 불구하고 사용하고 있는데, 어떤 인스턴스를 기준으로 제네릭이 "이미 만들어진 제네릭 타입"으로 간주하면 될까요?제가 아직 깊이가 부족하여 이해를 잘 못한 것일 수 있지만, 만약 Shuttle 클래스에서 제네릭 타입을 선언하지 않고, <?>만을 사용하여 메서드를 만든다면 잘못된 사용법인지궁금합니다 !와일드카드는 제네릭 타입이나, 제네릭 메서드를 선언하는 것이 아니라 이미 만들어진 제네릭 타입을 활용할 때 사용한다의 예시가 더 있다면 조언 부탁드리겠습니다 ! 감사합니다 ☺
-
해결됨카카오 코테 6주 합격! 실전 파이썬 코딩테스트
1강 연습문제&목표문제 - 복습 문제2
첫 번째 예시에서 출력이 [4, 16] 이 맞지 않을까요?그리고 문제에 대한 모범 답안은 따로 제공해주시는 건 없을까요?
-
미해결김영한의 실전 자바 - 중급 2편
stack구조관련질문
package collection.deque.test.stack; import java.util.ArrayDeque; import java.util.Deque; public class BrowserHistory { private Deque<String> history = new ArrayDeque<>(); private String currentPage = null; public void visitPage(String s) { if(currentPage != null){ history.push(currentPage); } currentPage = s; System.out.println("방문 : "+s); } @Override public String toString() { return "BrowserHistory{" + "stack=" + history + '}'; } public String goBack() { if(!history.isEmpty()){ currentPage = history.pop(); System.out.println("뒤로가기 : "+currentPage); return currentPage; } return null; } public void pop(){ System.out.println(history.pop()); } } 문제와풀이3 -stack시간 수업에관한 질문입니다 stack구조의 경우 마지막에 넣은 입력이 pop()을 하면 나오는데 이경우는 마지막 전에 입력한것이 나옵니다 이유가뭘까요??
-
미해결김영한의 실전 자바 - 중급 2편
변수 작명하신 부분에 궁금증이 있습니다!
<섹션 2 - 제네릭이 필요한 이유>부분인데요. IntegerBox 클래스는 set 메서드에 변수가 value로 작명 되어있습니다. 그러나,StringBox 클래스는 set 메서드에 변수가 object로 작명 되어 있습니다.StringBox에 set 함수 매개변수에, String str이 아니라, String object라고 하신 이유가 혹시 있는걸까요? String str이라고 해도 물론 되겠지만, 혹시 "String object"로 매개변수를 받도록 하신 특별한 의도가 있는건가 싶어서요.
-
미해결김영한의 실전 자바 - 중급 2편
arrayList 다운 캐스팅 오버헤드에 대한 질문이 있습니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요 영한님 강의 잘 수강하고 있습니다 😀 수강중 한가지 궁금한 점이 생겨 질문드립니다.arrayList에서 제너릭을 사용시 타입 이레이지에 의해 컴파일시 Obejct로 타입이 변경된다고 알고 있습니다. 당연히 그과정에서 값을 꺼내면 (예를들어 String을 꺼낸다고 가정) Object -> String으로 다운 캐스팅이 되어야 한다고 이해하고 있습니다.이렇게 되면 개발자의 의도와 다른 다운 캐스팅이 발생하게 되고 이런 캐스팅은 리스트와 같은 복수개의 데이터를 다루는 컬렉션에서 오버헤드를 크게 발생시킬수도 있겠다는 생각을 하게 되었습니다. 혹시 이러한 질문에 대한 내용이 맞는지와 맞다면 어떤방식으로 개선할 수 있을지 의견을 구할 수 있을까요??
-
해결됨C++로 만들면서 배우는 게임 개발과 알고리즘 with Windows API
PPT도 수업자료로 올려주실 수 있나요?
강의에 관련된 질문만 받습니다 !또한, 강의에 누락된 부분이나 부족한 부분이 있다면 알려주시면 감사드리겠습니다 ^_^
-
미해결카카오 코테 6주 합격! 실전 파이썬 코딩테스트
bisect 활용법에서 궁금한 점이 있습니다.
저희 강의 내용 중에서 내장모듈 bisect에 대한 설명 글에서 궁금한 점이 있어서 질문 드립니다. 내림차순이라면, reverse=True 를 사용할 수 있다고 하셨는데 bisect 모듈 안에는 reverse 라는 인자가 없다고 나옵니다. 어떻게 사용해야할까요?
-
미해결Do it! 알고리즘 코딩테스트 with JAVA
[P11726 2*N 타일채우기] top down 방식을 사용하니 런타임 에러가 발생합니다.
top down 방식을 사용하니 런타임 에러가 발생합니다. 이 문제는 bottom up으로만 풀어야하나요? 런타임 에러가 난 이유는 무엇일까요? import java.util.Scanner; public class Main { static long[] D; public static void main(String[] args){ Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); D = new long[n+1]; for(int i = 0 ; i < n+1 ; i++){ D[i] =-1; } D[1] =1; D[2] =2; long result = DP(n); System.out.println(result); } public static long DP(int n){ if(D[n] != -1){ return D[n]; } return D[n] = (DP(n-1) + DP(n-2)) % 10007; } }
-
해결됨김영한의 실전 자바 - 중급 2편
직접 구현하는 set1 - MyHashSet 코드 구현 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요. MyHashSetV1 복습 할 겸 코드를 안보고, 만들고 있었습니다.그런데 계속 하다 보니, 코드를이런 코드 방식으로 하게 되는 데요.영한님 코드를 보니buckets[hashIndex] 에서 새로운 인스턴스 bucket을 만들어서 하시는 것을 보게 되는 데요. 이럴 때 에는 영한님의 코드를 보면서 고치고, 습관이 바껴질 때까지 코드를 치는게? 낳은가요? 아니면 저가 하는 코드 방식?if(buckets[hashIndex].contains(value)),buckets[hashIndex].add(value);이렇게 하는 것도 괜찮은가요?답변 부탁 드립니다.
-
해결됨세계 대회 진출자가 알려주는 코딩테스트 A to Z (with Python)
제가 이해한 칸토어집합 문제를 풀어서 써봤습니다.
나중에 강의를 복습 할 때 제가 어떤식으로 문제에 접근하고 이해하고 강의를 들었는지 회고 하기 위해서 기록 해둡니다. 또한 제가 이해한 부분이 다른 분들에게 도움이 되면 더 좋겠습니다.목표문자열 길이가 주어지면 길이가 1이 될때까지 - - 형태로 바꾸는 문제제약조건1 <= N <= 12어떻게 해결?입출력 결과를 보면 아래와 같이 추론이 가능하다.ans[0] = 3⁰ = 1 => -ans[1] = 3¹ = 3 => - -ans[2] = 3² = 9=> - - - -=> ans[2-1] + 3²⁻¹ + ans[2-1]결론적으로=> ans[i-1] + 3ⁱ ⁻ ¹ + ans[i-1]이러한 규칙을 찾을 수 있다.시간 복잡도칸토어 집합은 0부터 N까지 각 단계별로 3⁰ + 3¹ + 3² + ... 3¹² 만큼의 문자열을 처리해야 하므로 모든 합이 전체 연상량이다.0 <= N <= 12ans[0] ~ ans[12]ans[i]의 길이 : 3ⁱans[0] : 1ans[1] : 3ans[2] : 9- 위에 0,1,2일때 공백 - 합쳐서의 길이등비수열
-
해결됨김영한의 실전 자바 - 중급 2편
코드오류 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.package collection.set.test; 의 RetangleTest 클래스에 관한 질문입니다package collection.set.test;import java.util.HashSet;import java.util.Set;public class RetangleTest { public static void main(String[] args) { Set<Retangle> retangleSet = new HashSet<>(); retangleSet.add(new Retangle(10,20)); retangleSet.add(new Retangle(20,10)); retangleSet.add(new Retangle(30,30)); for (Retangle retangle : retangleSet) { System.out.println(retangle); } }}중복된 값은 출력하지않아야하는데예시코드를 돌려보아도 중복된값을 출력하고있는 문제가있습니다package collection.set.test;import java.util.Objects;public class Retangle { private int width; private int height; public Retangle(int width, int height) { this.width = width; this.height = height; } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Retangle retangle = (Retangle) o; return width == retangle.width && height == retangle.height; } @Override public int hashCode() { return Objects.hash(width, height); } @Override public String toString() { return "Retangle{" + "width=" + width + ", height=" + height + '}'; }}이거는 Retangle 클래스입니다hashCode , eqauls를 오버라이딩했는데도 중복출력이되네요
-
미해결김영한의 실전 자바 - 중급 2편
타입 이레이저 동작방식 질문입니다!
안녕하세요! 이번에 정처기 문제에서 타입 이레이저 관련 문제가 나왔는데, 궁금한 점이 생겨서 질문 올려봅니다.class Printer { void print(Integer a) { System.out.print("A" + a); } void print(Object a) { System.out.print("B" + a); } void print(Number a) { System.out.print("C" + a); } } public class Gisafirst { public static void main(String[] args) { new Container<>(0).print(); } public static class Container<T> { T value; public Container(T t) { value = t; } public void print() { new Printer().print(value); } } }제가 이해한 바로는, 강의에서 설명해주신대로 new Container<>(0)에서 public static class Container<Integer> { Integer value; public Container(Integer t) { value = t; } public void print() { new Printer().print(value); } }컴파일러가 컴파일 시점에 이렇게 이해하고 나서 컴파일 종료 후, 타입 소거가 일어나서, Object로 변환한다고 이해했습니다.그래서 print 메서드를 호출할 때 value는 Object 타입이므로 B0가 출력되는 것이죠.여기서 궁금한 점은 바로 print의 오버로딩 메서드 선택 시점입니다. 제가 찾아본 바로는 오버로딩 메서드 선택시점은 컴파일 단계에서 이루어진다로 알고있습니다. 그렇다면 동작방식이 컴파일 종료 후 타입 소거가 일어나는게 아니라, 정확히는"컴파일 시작 - 타입 소거 - 오버로딩 메서드 선택 - 컴파일 종료 - 런타임" 이런식으로 일어나는건가용?아니면 어디서 오해하고 있는지 궁금합니다!
주간 인기글
순위 정보를
불러오고 있어요