묻고 답해요
160만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨세계 대회 진출자가 알려주는 코딩테스트 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 이 있나요?
-
미해결비전공자의 전공자 따라잡기 - 자료구조(with JavaScript)
연결리스트 숙제
prev와 tail을 이용해서 만들어 봤습니다! 궁금한점이 하나 있는데 remove 메서드의 if (current)의 else 부분은 필요하지 않은것 같아서 구현하지 않았는데 문제가 있지는 않나요?class LinkedList { length = 0; head = null; tail = null; add(value) { const newNode = new Node(value); if (this.head) { this.tail.next = newNode; this.tail = newNode; } else { this.head = newNode; this.tail = newNode; } this.length++; return this.length; } search(index) { return this.#search(index)[1]?.value; } prevSearch(index) { return this.#search(index)[0]?.value; } #search(index) { let count = 0; let prev; let current = this.head; while(count < index) { prev = current; current = current?.next; count++; } return [prev, current]; } remove(index) { const [prev, current] = this.#search(index); if (current) { if (prev) { prev.next = current.next; } if (current.next) { current.next.prev = prev; } if (current === this.tail) { this.tail = prev; } } this.length--; return this.length; } } class Node { next = null; prev = null; constructor(value) { this.value = value; } } const li = new LinkedList(); li.add(1); li.add(2); li.add(3); li.add(4); li.add(5); li.add(6); console.log(li.prevSearch(2)); console.log(li.remove(4)); console.log(li.search(4)); console.log(li.tail.value); console.log(li.remove(3)); console.log(li.tail.value); console.log(li.remove(3)); console.log(li.tail.value); console.log(li.remove(2)); console.log(li.remove(1)); console.log(li.tail.value); console.log(li.remove(0));
-
해결됨세계 대회 진출자가 알려주는 코딩테스트 A to Z (with Python)
BOJ 9251
안녕하세요 강의 잘 듣고 열심히 따라가고 있습니다. ㅎㅎ Dynamic Programing 강의를 듣는 도중 궁금한점이 있어 질문 드립니다. 백준 9251문제는 Longest Common Subsequence를 구하는 문제인데 강의 내용에서 3가지 접근법인 브루트포스, 그리디, DP 순으로 설명해주시고 똑같이 따라하려고 노력하고 있습니다. 2가지 질문사항이 있습니다. 제가 생각해본 풀이가 브루트포스, 그리디, DP중 어느 풀이에 속하는지 궁금 합니다. 제가 생각해낸 풀이 Dictionary를 활용하여 LCS를 구하는 방법인데요. S1에 문자가 나온 횟수를 Dictionary로 저장하고 S2에 문자가 중복해서 나온 횟수를 빼주어 0이 되는 문자의 개수를 세는 방법입니다. 또한 이 방법으로는 백준 통과가 안되구요. 왜 안되는지 궁금합니다.코드는 아래와 같이 작성하였습니다.s1=list(input())s2=list(input())#print(s1,s2)dicts = dict()for i in s1:if i not in dicts:dicts[i]=1else:dicts[i]+=1common=[]for j in s2:if j in dicts:dicts[j]-=1if dicts[j]==0:common.append(j)print(len(common)) 감사합니다.
-
해결됨세계 대회 진출자가 알려주는 코딩테스트 A to Z (with Python)
섹션2. 브루트 포스[문제 풀이] : BOJ1182. 시간복잡도 100만 vs 1억
안녕하세요, 강의 감사합니다.섹션2. 브루트 포스[문제 풀이] : BOJ1182 에 질문이 있습니다.부분수열의 수가 100만이고 1억 보다 작아서 브루트 포스로 풀 수 있다고 하셨는데, 보통 경우의 수가 1억 미만 인지를 그러면 확인 하면 될까요??1억을 선택하신 기준이 궁금합니다. 1000만은 가능한가요?
-
해결됨김영한의 실전 자바 - 중급 2편
System.out.println(set)의 시간 복잡성
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]이 코드에서 System.out.println(set)의 경우는 O(n)이 맞을까요?
-
미해결비전공자의 전공자 따라잡기 - 자료구조(with JavaScript)
한번에 이해 안가는 제가 비정상 일까요...?
해시 테이블까지 재밋었는데 레드 블랙트리 너무 어려운것 같습니다 ㅠㅠ...반복 숙달이 답이겠죠?
-
해결됨세계 대회 진출자가 알려주는 코딩테스트 A to Z (with Python)
BOJ 1759 문제 오답이 생기는데, 어느 부분이 틀리는 것인지 설명 부탁드립니다.
안녕하세요, 좋은 강의 만들어주셔서 감사합니다.'조합 알고리즘' 부분 진도 나가고 있는데, 다음과 같이 시도했더니 오답이 떴습니다.아예 처음부터 L개의 원소를 뽑아 조합을 만든 다음,모음과 자음의 갯수가 미달되면 해당 조합은 지우는 방식으로 시도해봤는데,(for문이 세개나 나와서 좀 조잡한 풀이 같아 보이긴 하지만..ㅠㅠ)이 풀이가 틀리게 되는 이유를 혼자 힘으론 찾기가 어려워서 도움을 구해봅니다...!from itertools import combinations L, C = input().split() chars = list(input().split()) mo = ['a', 'e', 'i', 'o', 'u'] candidates = list(combinations(chars, int(L))) for can in candidates: mo_num, ja_num = 0, 0 for i in can: if i in mo: mo_num += 1 else: ja_num += 1 if mo_num < 1 or ja_num < 2: candidates.remove(can) sol = [] for ans in candidates: ans_str = '' for i in sorted(ans): ans_str += i sol.append(ans_str) for i in sorted(sol): print(i)
-
미해결김영한의 실전 자바 - 중급 2편
HashIndex() 와 capacity에 대해
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]강의를 듣던 중 의문이 생겨 질문 드립니다.메모리 최적화를 위해 value % capacity 를 통해 HashIndex 를 얻고, 이를 통해 메모리 최적화와 검색, 조회 속도 등에서 이점을 얻을 수 있다는 것은 이해가 됐습니다.그런데, List 의 배열 특성상, capacity가 동적으로 변하게 될텐데, 이에 따라 동일한 value 를 넣어도 다른 hashIndex가 만들어지지 않을까요?학습용이라 가장 심플한 방법으로 보여주신 것 뿐일까요?
-
미해결김영한의 실전 자바 - 중급 2편
if 문 작성 시 else 도 함께 작성해주는 것이 좋나요?
문제 1번의 경우 if 구문을 사용할 때 저는 else 를 안 넣고 바로 return 으로 표현했거든요.static <T extends BioUnit> T maxHp(T unit1, T unit2) { if (unit1.getHp() > unit2.getHp()) { return unit1; } return unit2; }답안엔 else 를 같이 쓰는 것으로 나와서 혹시 else를 쓰고 안 쓰고를 결정하는 메뉴얼이나 혹은 더 좋은 코드의 기준이 있을까요?=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.
-
해결됨2주만에 통과하는 알고리즘 코딩테스트 (2024년)
1090 아이디어 3번 질문
1090번 문제 3번째 아이디어가 잘 이해가 안돼서 질문 드립니다.제가 이해한 바로는, 최소거리를 구하는 것을 요구하고 있으니깐,특정 인물이 특정 집으로 가기 위한 거리를 각각 저장해둔 뒤에2명이 모였을 때 최소거리를 구할 때에는 각각 저장해둔 값 중 둘이 더했을 때의 최소값을,3명이 모였을 때의 최소거리를 구할 때에는 동일하게 저장해둔 값 중 셋 더했을 때의 최소값을구하는 방식으로 최소 거리를 구하는 것이 맞나요? 영상에서 설명해주실 때에는 [1,2,3] , [3,4,5], [2,2,5]의 예시를 들어주셨는데2명이서 모였을 때 최소거리는 둘이 합했을 때 가장 적은 1+2 즉 3이 되는거라고 설명해주셨습니다. 하지만 저장한 값이 특정 집에서 다른 사람의 거리를 저장한 것이므로 한 사람은 본인의 집에, 다른 사람은 최소 거리만큼 이동하여 0+1 즉, 2명이 모였을 때 최소거리는 1이 되는 것 아닌가용..? 제가 잘 이해를 못해서 질문 드립니다 .
-
미해결그림으로 쉽게 배우는 자료구조와 알고리즘 (기본편)
안녕하세요~ 블로그 정리 요약 관련 문의 드립니다!
안녕하세요~ 개발자 취준 준비중인 취준생입니다! 다름아니라 제가 여러 알고리즘 강의들을 봐오면서 감자님 강의가 제일 설명이 잘 되어있어서 심화까지 사서 열심히 듣는 중인데요! 제 개인 블로그 (벨로그이고 수익 창출은 전혀 안합니다.)에 공부용으로 내용을 정리해도될지 여쭈어보고 싶습니다! 물론 강의 그림자료는 첨부 안하고 말씀 하신 내용만 정리해서 게시글을 정리할 생각이고 출처는 무조건 남기려고 합니다!
-
해결됨김영한의 실전 자바 - 중급 2편
Node<E> 와 <E> E 차이점
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요. Node<E> 와 <E> E 헷갈려서 질문을 드립니다.Node<E> 는 배열안의 값을 E 타입으로 고정하는걸로 이해하면 되나요?
-
해결됨세계 대회 진출자가 알려주는 코딩테스트 A to Z (with Python)
강의 내용 BOJ3085 질문 있습니다
변화만 생기는 곳만 체크한다고 하셨는데, 예로 들어 한 행의 두 원소를 바꾸면 그 두 원소의 열과 그 행을 살펴보면 된다고 하셨는데, def get_best(y, x): global N, matrix best = 0 # columns bef = '-' value = 0 for j in range(N): if bef == matrix[y][j]: value += 1 else: value = 1 bef = matrix[y][j] best = max(best, value) # rows bef = '-' value = 0 for i in range(N): if bef == matrix[i][x]: value += 1 else: value = 1 bef = matrix[i][x] best = max(best, value) return best 왜 바꾼 원소 기준으로 그 원소 위치의 하나의 행과 열만 보는걸로 코드를 짜셨나요?설명과 코드가 달라서 약간 이해가 안 갑니다 ㅜ