묻고 답해요
160만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결김영한의 실전 자바 - 중급 2편
comparable, comparator
강의를 보면 ID 를 통한 Array 배열을 정렬할때IdComparator 를 만드셨는데, 사실 comparable 에서도 충분히 정의할 수 있는 것 아닌가요 ?단순히 Comparator 를 통해서도 할 수 있다라는 것을 보여주기 위함인가요 ?또한 언제 comparable 을 쓰는 게 낫고 언제 comparator 를 쓰는게 나은가요 ?
-
해결됨세계 대회 진출자가 알려주는 코딩테스트 A to Z (with Python)
안녕하세요. 파트 소개 글을 보다가 브루트 포스와 구현 문제에 대해
참고로, 단순 구현 문제와 브루트 포스 관련 문제만 잘 풀어도 어렵지 않은 코딩테스트는 합격을 노려볼만합니다. 해당 내용이 언급 되어 있던데, 이부분은제 코테 전략은 아래와 같습니다.백준 브루트포스 알고리즘별 문제모음https://www.acmicpc.net/problemset?sort=ac_desc&algo=125 백준 시물레이션(구현) 알고리즘별 문제모음https://www.acmicpc.net/problemset?sort=ac_desc&algo=141 알고리즘별 문제 모음으로브루트 포스 : 100문제시물레이션 : 100문제각각 100문제 정도 풀어보고해당 강의에 있는 문제들을 완전 이해와 학습 복습을 하는것인데 이정도면 스타트업 코딩테스트 정도 노려볼만한가요?
-
미해결그림으로 쉽게 배우는 자료구조와 알고리즘 (기본편)
동적 프로그래밍 메모리 낭비 질문
안녕하세요!동적 프로그래밍 방식을 사용하면 for 문 안에 table[i] = table[i-1] + table[i-2] 를 볼 수 있었습니다. int[] dp = new int[n + 1];이런식으로 객체를 계속 만들어서 이에 대한 메모리 낭비(?) 는같은 계산이 반복되어서 발생하는 낭비보다 훨씬 덜 한 것인가요 ? 또한 메모리제이션이랑 동적프로그래밍 알고리즘을 구현하는 것은 시간 복잡도를 줄이기 위함인가요? 아니면 메모리 낭비를 방지하기 위함인가요 ? 아니면 시간복잡도가 곧 메모리 낭비와 상당히 관련이 있기에 둘다 신경써준다고 봐야하나요 ?
-
미해결김영한의 실전 자바 - 중급 2편
강의 질문
안녕하세요. 김영한 선생님 모든 강의중에서 재귀함수에 대해서 다뤄주시는 곳이 있을까요 ?
-
미해결김영한의 실전 자바 - 중급 2편
hashCode 결과로 음수가 나올 수 있게 해놓은 이유?
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]강의 내용에서 hashCode 결과로 음수 값이 나올 수 있으므로 절대값으로 변환하는 과정을 가졌는데요, 자바에서는 왜 음수 값이 나올 수 있게 해놓은 건가요? 인덱스로 사용하는 용도 외에 다른 용도가 있나요?
-
해결됨코딩테스트 [ ALL IN ONE ]
노션 링크 공유를 못 받았습니다
vvoohhee@gmail.com위의 메일 주소로 2번이나 신청했는데 노션을 공유 받지 못했습니다. 노션에 로그인 되어있는 이메일도 위의 이메일과 같은데 한 번 확인 부탁드립니다...
-
해결됨[자바/Java] 문과생도 이해하는 DFS 알고리즘! - 입문편
백준 24479 문제 제출 결과 "틀렸습니다" 라고만 나와서 어떤 부분이 틀렸는지 잘 모르겠어요 피드백 부탁드립니다
package com.study.book.graph; import java.util.*; import java.io.*; public class Baekjoon24479 { private static ArrayList<Integer>[] adjList; private static boolean[] visited; private static int[] answer; private static int visitOrder; public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); StringTokenizer st = new StringTokenizer(br.readLine()); int N = Integer.parseInt(st.nextToken()); int M = Integer.parseInt(st.nextToken()); int R = Integer.parseInt(st.nextToken()); adjList = new ArrayList[N + 1]; for (int i = 0; i < adjList.length; i++) { adjList[i] = new ArrayList<>(); } for (int i = 1; i < N + 1; i++) { st = new StringTokenizer(br.readLine()); int x = Integer.parseInt(st.nextToken()); int y = Integer.parseInt(st.nextToken()); adjList[x].add(y); adjList[y].add(x); } for (ArrayList<Integer> list : adjList) { Collections.sort(list); } visited = new boolean[N + 1]; answer = new int[N + 1]; visitOrder = R; dfs(R); for (int i = 1; i <= N; i++) { bw.write(String.valueOf(answer[i])); bw.newLine(); } br.close(); bw.close(); } private static void dfs(int now) { visited[now] = true; answer[now] = visitOrder; visitOrder++; for (int next : adjList[now]) { if (!visited[next]) { dfs(next); } } } } 안녕하세요 개취님!알고리즘 강의 잘 듣고 있습니다 ㅎㅎ다름이 아니라, 위 코드로 문제를 풀고 테스트 코드 또한 정상적으로 통과하여 백준에서 제출을 진행했는데, 단순히 "틀렸습니다" 라고만 나와서 어떤 점에서 문제가 있는지 정상적으로 파악이 안되서 문의드립니다!한번 확인 후 피드백 주시면 감사하겠습니다.
-
미해결김영한의 실전 자바 - 중급 2편
배열 링크드리스트
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.안녕하세요.자바 HashSet 구현을 할때 이렇게 링크드 리스트를 이용하여 배열을 만들었는데, 질문이 있습니다. ArrayList 와 LinkedList 중 LikedList 를 사용한 이유는 O(x) 가 더 빠르기 때문인가요 ? 어떠한 장점이 있길래 LinkedList 를 결정한건지 모르겠습니다.제가 추측하기로는 buckets 내의 각각의 인덱스에 링크드 리스트가 필요하기 때문에 배열 타입을 링크드 리스트로 결정한 것인가요 ?
-
미해결김영한의 실전 자바 - 중급 2편
HashSet 최적화
우리가 ArrayList 에서 LinkedList로 넘어온 이유가배열 메모리 확보로 인한 낭비로 인해 경우에 따라서 LinkedList 를 사용해야한다고 알고 있는데, set 에서도 ArrayList 처럼 배열 메모리를 확보해두고 배열의 크기를 2배씩 늘리는 식으로 작동하나요 ?
-
해결됨세계 대회 진출자가 알려주는 코딩테스트 A to Z (with Python)
초기값 초기화 없이 구현 하는 방법 후에 Top-Down 방식
원래 Top-Down 방식까지 설명하고 알아두면 좋은 내용들로 넘어갔는데Top-Down는 재귀에 익숙하지 않거나 초보자가 하기 어려워서 넘어 가진 건지 궁금해서요!
-
해결됨세계 대회 진출자가 알려주는 코딩테스트 A to Z (with Python)
메모리 초과가 나는 이유가 궁금합니다!
안녕하세요, 강의를 듣고 계신 여러분!여러분의 학습을 돕기 위해 질문 안내를 드리고자 합니다. 1. chatGPT를 이용해보기단순한 의문은 chatGPT를 이용해도 해답을 찾을 수 있는 경우가 종종 있습니다! 2. 강의의 어떤 부분에 대한 질문이고, 어떤 부분이 궁금한지 명확히 알려주세요!강의의 어느 파트에서 의문을 느끼고, 어떤 부분이 궁금한지를 명확히 제시해 주시면 답변에 도움이 됩니다!자신은 어떻게 이해했는지 또한 적어주면 좋습니다! ex) 섹션5의 '그래프 순회 (DFS & BFS) [개념]' 강의에서 DFS와 BFS 모두 그래프의 모든 노드를 탐색하는 알고리즘이라고 하셨고 시간 복잡도 또한 똑같다고 이해했습니다. 그러면 DFS와 BFS 중에서 어떤 알고리즘이 더 효율적인지 구별하는 것은 의미가 없는 것일까요? 어느 파트섹션5의 '그래프 순회 (DFS & BFS) [개념]' 강의자신은 어떻게 이해했는지DFS와 BFS 모두 그래프의 모든 노드를 탐색하는 알고리즘이라고 하셨고 시간 복잡도 또한 똑같다고 이해어떤 부분이 궁금한지 DFS와 BFS 중에서 어떤 알고리즘이 더 효율적인지 구별하는 것은 의미가 없는 것일까요? 안녕하세요 선생님![브루트 포스 알고리즘 : BOJ 1342 행운의 문자열] 문제를 혼자 풀었는데, 메모리 초과를 해결하지 못해 질문합니다..!permutations를 이용하여 풀고, set 함수를 사용하여 중복되는 것이 없도록 했습니다. 혹시 set 함수를 사용해서 메모리 초과가 나온 걸까요..?from itertools import permutations S = input() answer = set() for x in permutations(S, len(S)): ok = True for i in range(len(x)-1): if x[i] == x[i+1]: ok = False break if ok: answer.add(x) print(len(answer))
-
미해결김영한의 실전 자바 - 중급 2편
LinkedHashSet 수업
LinkedHashSet 을 수업중에 HashSet 처럼 자세히 다룬 적이 있나요? 아무리봐도 못 찾겠어서요! 왜 LinkedHashSet 이 입력한 데이터대로 출력하는지 코드를 통해 이해를 하고 싶습니다.
-
해결됨세계 대회 진출자가 알려주는 코딩테스트 A to Z (with Python)
안녕하세요. 강의 잘 보고 있습니다. 노션에 코멘트
안녕하세요. 알고리즘 종결 급 강의 잘 보고 있습니다.그러나 강의를 보는동안 해당 강의의 노션 페이지에 comment가 보이지 않는것 같습니다. 강의에서는 comment가 정상적으로 있는것 같은데 다른 페이지에는 comment가 보이는데 해당 페이지에서만 안보이네요.강사님의 소중한 자료라 풀 스크린은 올리지 않겟습니다.오른쪽에 comment가 없습니다 ㅠㅠ
-
해결됨세계 대회 진출자가 알려주는 코딩테스트 A to Z (with Python)
최적의 개발환경(Sublime Text3) 설치(for windows) 영상부터 꿀팁 전까지 강의가 재생이 안되고 검은 화면만 보입니다.
최적의 개발환경(Sublime Text3) 설치(for windows) 영상부터 꿀팁 전까지 강의가 재생이 안되고 검은 화면만 보입니다.아래 강좌도 검은화면만 보이고 play가 안됩니다.코딩테스트에 필요한 자료구조 총정리 - Python 중간중간 play가 안되는데 어떻게 된건가요???
-
미해결김영한의 실전 자바 - 중급 2편
<> 유무
MyLinkedListV3 stringList = new MyLinkedListV3<>();에서는 <> 가 있어야 하는데 왜 MyLinkedListV3 stringList = new MyLinkedListV3[CAPACITY]; 에서는 <> 를 쓰면 안되는지 궁금합니다.
-
미해결김영한의 실전 자바 - 중급 2편
6강 해시 충돌 구현
2:30 를 보면 영한님께서 해시 테이블에서 Linkedlist 를 전체 버킷의 컨테이너로 사용하셨는데, ArrayList 를 전체 버킷의 컨테이너로 사용해도 전혀 문제가 없지 않나요 ?따라서, 해시 테이블에서 ArrayList를 전체 버킷의 컨테이너로 사용하고, 각 버킷 내에서는 LinkedList를 사용해 충돌을 처리하는 방법도 괜찮지 않나요 ?
-
미해결김영한의 실전 자바 - 중급 2편
Comparable이 아닌 Comparator를 사용하는 경우
이 부분에서 '기본 정렬 외에 다른 정렬 방법을 사용해야 하는 경우'가 잘 이해가 되지 않는데요. 예를 들어, MyUser에서 age는 int형이라서 '<' 비교 연산이 가능하지만 id는 String이라 비교 연산을 할 수 없기 때문에 Comparable이 아닌 Comparator를 사용하는 건가요?'기본 정렬 외에 다른 정렬 방법을 사용해야 하는 경우'가 이러한 경우를 의미하는 건가요??만약 그렇다면 SortMain2에서 AscComparator, DescComparator를 Comparable이 아닌 Comparator로 구현한 이유가 무엇인가요?
-
해결됨독하게 C를 배운 사람을 위한 선형 자료구조
Event Loop
Event Loop 함수에서 함수포인터 배열를 사용하여 Lookup 테이블 구조로 변경 하는 도중에 에러가 발생하여 질문 남깁니다! void (*EventFunc[EVENT_COUNT])(void) = { 0, AddNewUser, SearchByName, SearchByAge,PrintList, SearchByNameToRemove };위 코드와 같이 EVENT_COUNT 를 #define EVENT_COUNT 6 매크로로 정의 했을때 오류가 발생 합니다.void (*EventFunc[6])(void) = { 0, AddNewUser, SearchByName, SearchByAge,PrintList, SearchByNameToRemove };EVENT_COUNT를 매크로로 정의 하지 않고 6으로 하드코딩 할때는 컴파일이 잘되는데 서로 다른 결과가 나오는 이유가 궁금합니다.
-
해결됨세계 대회 진출자가 알려주는 코딩테스트 A to Z (with Python)
시간초과를 자력으로 해결하지 못했습니다 😓
안녕하세요, 강의를 듣고 계신 여러분!여러분의 학습을 돕기 위해 질문 안내를 드리고자 합니다. 1. chatGPT를 이용해보기단순한 의문은 chatGPT를 이용해도 해답을 찾을 수 있는 경우가 종종 있습니다! 2. 강의의 어떤 부분에 대한 질문이고, 어떤 부분이 궁금한지 명확히 알려주세요!강의의 어느 파트에서 의문을 느끼고, 어떤 부분이 궁금한지를 명확히 제시해 주시면 답변에 도움이 됩니다!자신은 어떻게 이해했는지 또한 적어주면 좋습니다! ex) 섹션5의 '그래프 순회 (DFS & BFS) [개념]' 강의에서 DFS와 BFS 모두 그래프의 모든 노드를 탐색하는 알고리즘이라고 하셨고 시간 복잡도 또한 똑같다고 이해했습니다. 그러면 DFS와 BFS 중에서 어떤 알고리즘이 더 효율적인지 구별하는 것은 의미가 없는 것일까요? 어느 파트섹션5의 '그래프 순회 (DFS & BFS) [개념]' 강의자신은 어떻게 이해했는지DFS와 BFS 모두 그래프의 모든 노드를 탐색하는 알고리즘이라고 하셨고 시간 복잡도 또한 똑같다고 이해어떤 부분이 궁금한지 DFS와 BFS 중에서 어떤 알고리즘이 더 효율적인지 구별하는 것은 의미가 없는 것일까요?안녕하세요. 선생님.저번 설명과 조언 너무 감사합니다. 그,, 백준 2580 스도쿠에 관한 질문인데요,시간 초과를 해결하지 못하였는데,각각을 보면 그렇게까지 시간이 많이 들지는 않을 거 같다는 생각도 들구..재귀를 사용하지는 않았지만,어디서 시간이 많이 걸리는 지 분석이 안되어서요..선생님 도움이 필요해서 질문 남깁니다.. arr = [list(map(int, input().split())) for _ in range(9)] # 스도구 문제 배열 idxs = [] # 인덱스 쌍을 담는 배열 for i in range(9): for j in range(9): if not arr[i][j]: idxs.append((i,j)) def fillHori(y, x): # 가로 nums = 45 # 1~9까지의 합 for i in range(9): if x == i: continue # 자기 자신 탐색 제외 if arr[y][i] == 0: return 0 # 0이 또 있으면 채울 수 없음 nums -= arr[y][i] return nums def fillVerti(y, x): #세로 nums = 45 # 1~9까지의 합 for i in range(9): if y == i: continue # 자기 자신 탐색 제외 if arr[i][x] == 0: return 0 # 0이 또 있으면 채울 수 없음 nums -= arr[i][x] return nums def fillSquare(y, x): #사각형 nums = 45 # 1~9까지의 합 for i in range(y // 3 * 3, y // 3 * 3 + 3): for j in range(x // 3 * 3, x // 3 * 3 + 3): if y == i and x == j: continue # 자기 자신 탐색 제외 if arr[i][j] == 0: return 0 # 0이 또 있으면 채울 수 없음 nums -= arr[i][j] return nums def fillCrossDown(y, x): # 대각선(안씀) nums = 45 # 1~9까지의 합 for i in range(9): for j in range(9): if y == i and x == j: continue # 자기 자신 탐색 제외 if arr[i][j] == 0: return 0 # 0이 또 있으면 채울 수 없음 if y - x == j - i: nums -= arr[i][j] return nums def fillCrossUp(y, x): # 대각선(안씀) nums = 45 # 1~9까지의 합 for i in range(9): for j in range(9): if y == i and x == j: continue # 자기 자신 탐색 제외 if arr[i][j] == 0: return 0 # 0이 또 있으면 채울 수 없음 if y + x == j + i: nums -= arr[i][j] return nums while idxs: for i, j in idxs: n = fillHori(i, j) if n: arr[i][j] = n; idxs.remove((i,j)); continue n = fillVerti(i, j) if n: arr[i][j] = n; idxs.remove((i,j)); continue n = fillSquare(i, j) if n: arr[i][j] = n; idxs.remove((i,j)); continue n = fillCrossUp(i, j) if n: arr[i][j] = n; idxs.remove((i,j)); continue n = fillCrossDown(i, j) if n: arr[i][j] = n; idxs.remove((i,j)) for a in arr: for i in a: print(i, end = ' ') print()
-
미해결김영한의 실전 자바 - 중급 2편
implement iterator 주석처리 해도 myArray는 배열 아닌가요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]순회 2 -향상된 for문 1;18초에서 implememt를 주석 처리 하고 향상된 for문을 돌렸을 때 배열이거나 iterable이여야한다고 에러가 떴습니다 .근데 MyAraayMain에서 이미 myarray 는 new int [] {1.2.3.4}로 배열로 선언한거 아닌가요?