묻고 답해요
167만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결2026 코딩테스트 올인원 [JAVA]
part8 Notion 링크
안녕하세요 강사님.강의 잘보고있씁니다. 노션에 part 7까지만있고, part 8 이 없는데 새로운 링크가 필요한걸 까요?
-
미해결2026 코딩테스트 올인원 [JAVA]
잠겨버린 사물함 시간초과 관련 질문입니다.
class Solution { public int solution(int[][] lockers) { int answer = -1; int n = lockers.length; boolean[] visited = new boolean[n]; visited[cur] = true; dfs(visited, 0, lockers); for(boolean isVisit : visited) { if (isVisit) { answer++; } } return answer; } void dfs(boolean[] visited, int cur, int[][] lockers) { for(int nxt : lockers[cur]) { if(!visited[nxt]) { visited[nxt] = true; dfs(visited, nxt, lockers); } } } } 위와 같이 풀어봤는데 문제풀이 사이트에서 시간 초과가 납니다 ㅠ어떻게 해야 시간초과가 나지 않을까요
-
해결됨38군데 합격 비법, 2026 코딩테스트 필수 알고리즘
코딩테스트 처음인데 이런 공부방법이어도 괜찮을까요
안녕하세요! 현재 비전공자로 코딩 경험이 없는 사람인데요. 코딩테스트를 프로그래머스 lv.2 정도로 준비해야 할 일이 있어서 무작정 듣고 있습니다.코드 보는 능력은 정처기 수준이고, 알고리즘을 이렇게 직접 작성해보는 건 처음이라 2분 안에 코드나 문법을 생각하기가 많이 어려운 거 같아 걱정이 됩니다.공부 방법을 현재 이렇게 하고 있는데요,강의 수강 -> 중간에 2분 멈추고 생각해보는 시간을 10분으로 가진 뒤 아이디어(한글로)만 겨우 도출 -> (대부분 틀리고)강의 이어서 수강 -> 다 듣고 코드 따라 작성해보기 이런 공부방법으로 빠르게 여러번 강의를 회독하면 실력이 오를 수 있을까요? 아니면 시간을 오래 잡고 코드를 끝까지 완성해본 다음 이어 듣는게 좋을까요? 작성 시 써야하는 문법이나 코드가 감이 잡히지 않아서 시간이 오래 걸리는 거 같습니다... 부족하지만 답변 부탁드리겠습니다. 감사합니다.
-
미해결2026 코딩테스트 올인원 [JAVA]
Climbing Stairs 문제 basecase 생각하는 방법
안녕하세요. DP Climbing Stairs 문제 풀이에서 질문이 있습니다. basecase로 f(0)=1, f(1)=1 조건을 주셨는데요. f(1)=1, f(2)=2 로 해도 값이 동일하더라고요. 결국 초기값 2개만 지정하면 되는건가? 싶었습니다. 저는 계단을 1칸, 2칸을 갈 수 있는게 최소 케이스라고 생각하고, f(1), f(2)를 정의했는데 f(0) 부터 지정한 이유가 궁금합니다. 이 기준을 잡는 포인트는 어떻게 생각해낼 수 있을까요? 점화식이 f(n-1)+f(n-2) 이니 초기 0,1(혹은 1,2)번째 값을 알면 풀린다. 라고 접근하는 게 맞을까요?
-
미해결2026 코딩테스트 올인원 [JAVA]
DFS/BFS
학습 관련 질문을 남겨주세요. 구체적으로 적을수록 좋아요!마크다운과 단축키를 활용하면 글을 더 편하게 작성할 수 있어요.커뮤니티 질문 & 답변에 비슷한 내용이 있었는지 먼저 검색해보세요.편하게 질문주세요:) 직접 답변 드리도록 하겠습니다~안녕하세요. 제가 DFS/BFS부분이 많이 약해서 ㅠㅠ 질문입니다.lockers = [[1, 2], [3], [], [0]] 이런 이중행렬인데 인접리스트로 코드 변환 안하고 생각해도 괜찮다는 의미 인거죠…? 감사합니다.
-
해결됨38군데 합격 비법, 2026 코딩테스트 필수 알고리즘
3-3 정렬-2 선택정렬 로직
1. 현재 학습 진도몇 챕터/몇 강을 수강 중이신가요? 3-3 정렬-2어떤 알고리즘을 학습하고 계신가요? 정렬여기까지 이해하신 내용은 무엇인가요? 2. 어려움을 겪는 부분어느 부분에서 막히셨나요? 코드의 어떤 로직이 이해가 안 되시나요?선택 정렬이란 최솟값을 찾아 교환하는 것으로 이해하였는데 해당 코드대로라면 작은 값을 찾을 때마다 교환이 발생하는게 아닌가 싶어 의문이 듭니다!어떤 개념이 헷갈리시나요? 선택정렬 3. 시도해보신 내용문제 해결을 위해 어떤 시도를 해보셨나요?에러가 발생했다면 어떤 에러인가요?현재 작성하신 코드를 공유해주세요 이런 식으로 작성해봤는데 괜찮은가요??
-
해결됨일정 관리 앱 만들기 챌린지 - 3기
질문 디스코드 관련
오티 강좌에 질문 디스코드가 있다고 하셨는데 링크 받을 수 있을까요??
-
해결됨38군데 합격 비법, 2026 코딩테스트 필수 알고리즘
링크드 리스트 끝에서 k번째 값 출력하기
1. 현재 학습 진도몇 챕터/몇 강을 수강 중이신가요? 2주차어떤 알고리즘을 학습하고 계신가요? 2주차 숙제여기까지 이해하신 내용은 무엇인가요? 링크드리스트, 재귀 2. 어려움을 겪는 부분어느 부분에서 막히셨나요? 2주차 숙제 1번끝에서 k번째를 구하는게 문제잖아요? 근데 정답 코드를 보면 fastNode는 끝이 아닌 끝보다 한칸 더간거고, slownode(정답이 될)는 한칸 더간 fastnode에서 k번째 떨어질 경우 답이 되는데 while문을 fastnode.next is not None의 조건을 해줘야 링크드 리스트 끝에서 라는 문제의 의미에 더 맞지 않나요? 3. 시도해보신 내용문제 해결을 위해 어떤 시도를 해보셨나요?에러가 발생했다면 어떤 에러인가요?현재 작성하신 코드를 공유해주세요 이렇게 구체적으로 알려주시면, 더 정확하고 도움이 되는 답변을 드릴 수 있습니다! 😊
-
미해결기초 탄탄! 독하게 시작하는 Java - Part 2 : OOP와 JVM
compareTo를 사용하는 이유가 뭔가요?
String은 equals 함수를 기본적으로 제공하는데 compareTo를 이용하는 이유가 궁금합니다. 강의에서 말씀하신 동등성을 표현하려면 equals를 사용하는게 오히려 맞는거 아닐까요??
-
해결됨38군데 합격 비법, 2026 코딩테스트 필수 알고리즘
LinkedList 과제 Fast, slow 포인터
1. 현재 학습 진도2챕터 과제, 끝에서 K번째 노드값 구하는 문제LinkedList 2. 어려움을 겪는 부분fast 포인터를 k만큼 움직이고 slow, fast를 동시에 움직여 fast노드가 끝에 도달때까지 반복해 k만큼 떨어진 slow노드를 반환하는것은 이해했습니다. 그런데 fast 노드를 끝까지 보내는 While 문 조건에서 저는 fast.next가 없을 때 가 마지막 노드라고 생각했습니다.하지만 선생님이 실제로 구현할 때는 이전에 구두로 설명하신것과는 약간 다르게 fast 가 마지막 노드가 아닌 거기서 한번 더 반복되어 fast == None 일때까지 움직여 k번째 노드를 찾으시더라고요. 왜 마지막노드에서 멈추는게 아니라 설명과 좀 다르게 2개의 포인터를 한칸씩 더 움직여 none이 될때까지 움직이도록 했는지 궁금해 강의 끝 시각화 해주신 부분을 봤습니다.강의 끝에 시각화 하는 부분에서도 첫번째 풀이방법의 답은 10, 두번째 풀이방법의 답은 9가 나오면서 각 풀이방법의 정답이 달라진것 처럼 나오게 됐습니다.구두로 설명하셨던 것보다 결국 index를 한칸 더 가서 fast가 None이 돼야 정답이 되던데 일반적으로 LinkedList 문제에서 마지막 노드까지 반복문을 돌린다고 가정하면 원래 currentNode가 None이 될때까지 돌려서 푸는건가요??? 이렇게 구체적으로 알려주시면, 더 정확하고 도움이 되는 답변을 드릴 수 있습니다! 😊
-
미해결코테의 바이블 [java]
섹션[6] 66.[출제유형] 거리측정, 최단거리 페이지 오타
섹션[6] 66.[출제유형] 거리측정, 최단거리 페이지 오타 방법 2) 큐에 거리 정보까지 함께 저장하는 방식 ✔ visited를 사용한 구현 코드 설명에 visited 코드 예시가 아니라 아래 설명되어있는 distance와 동일한 코드 예시로 되어있습니다.visited로 활용하는 코드로 변경 필요할 것 같습니다. 현재 노션도 이와 동일하게 되어있습니다..!
-
미해결38군데 합격 비법, 2026 코딩테스트 필수 알고리즘
투포인터 시간복잡도
1. 현재 학습 진도몇 챕터/몇 강을 수강 중이신가요? 2챕터/10강어떤 알고리즘을 학습하고 계신가요? 링드크리스트여기까지 이해하신 내용은 무엇인가요? 2. 어려움을 겪는 부분어느 부분에서 막히셨나요? 투포인터 시간복잡도 부분코드의 어떤 로직이 이해가 안 되시나요? 끝에서 k번째의 값 문제 부분에서 11분 38초 자막에 N이 매우커지면 2N과 N이라서 차이가나긴한다고 되어있는데 투포인터도 2N의 시간복잡도 아닌가요? fast가 N만큼 slow가 N-K만큼 시간복잡도가 걸리고 이것은 1번풀이에서도 동일한거 아닌가요?왜 N값이 커지면 달라지는지 궁금합니다.어떤 개념이 헷갈리시나요? 3. 시도해보신 내용문제 해결을 위해 어떤 시도를 해보셨나요?에러가 발생했다면 어떤 에러인가요?현재 작성하신 코드를 공유해주세요 이렇게 구체적으로 알려주시면, 더 정확하고 도움이 되는 답변을 드릴 수 있습니다! 😊
-
해결됨38군데 합격 비법, 2026 코딩테스트 필수 알고리즘
수강평 작성 후 자료
1. 현재 학습 진도몇 챕터/몇 강을 수강 중이신가요?어떤 알고리즘을 학습하고 계신가요?여기까지 이해하신 내용은 무엇인가요? 2. 어려움을 겪는 부분어느 부분에서 막히셨나요?코드의 어떤 로직이 이해가 안 되시나요?어떤 개념이 헷갈리시나요? 3. 시도해보신 내용문제 해결을 위해 어떤 시도를 해보셨나요?에러가 발생했다면 어떤 에러인가요?현재 작성하신 코드를 공유해주세요 이렇게 구체적으로 알려주시면, 더 정확하고 도움이 되는 답변을 드릴 수 있습니다! 😊 강의 듣고 수강평 작성했는데 수강평 작성하면 받는 자료를 아직 못 받았습니다
-
미해결2026 코딩테스트 올인원 [JAVA]
노션 링크 질문드립니다!
학습 관련 질문을 남겨주세요. 구체적으로 적을수록 좋아요!마크다운과 단축키를 활용하면 글을 더 편하게 작성할 수 있어요.커뮤니티 질문 & 답변에 비슷한 내용이 있었는지 먼저 검색해보세요.편하게 질문주세요:) 직접 답변 드리도록 하겠습니다~ 안녕하세요 강사님 유익한 강의 잘 듣고 있습니다!구글폼을 통한 노션 링크를 24시간 후에도 못 받았는데 따로 이메일을 통해 직접 전달주시는건가요?
-
미해결기초 탄탄! 독하게 시작하는 Java - Part 2 : OOP와 JVM
[실습] MyString에 복사 생성자 추가
import java.lang.reflect.Field; class MyString { private byte[] sdata = null; MyString(MyString s) { this.sdata = s.sdata; } // 생성자 1: 문자열을 받을 때 MyString(String param) { this.setString(param); } // 생성자 2: 정수를 받을 때 MyString(int param) { setString(String.format("%d", param)); } // 데이터를 문자열로 반환 (null 체크 포함) public String getString() { if (sdata == null || sdata.length <= 0) { return "(null)"; } return new String(sdata); } // 데이터를 안전하게 복사해서 저장 (Deep Copy) public void setString(String param) { sdata = param.getBytes(); } } public class Main { public static void main(String[] args) throws Exception { MyString src = new MyString("Hello"); MyString dst = new MyString(src); Field field = MyString.class.getDeclaredField("sdata"); field.setAccessible(true); byte[] srcSdata = (byte[]) field.get(src); byte[] dstSdata = (byte[]) field.get(dst); System.out.println("src.sdata 주소: " + System.identityHashCode(srcSdata)); System.out.println("dst.sdata 주소: " + System.identityHashCode(dstSdata)); // 둘이 같은 숫자 → 같은 배열 가리킴 (얕은 복사 증명!) src.setString("world"); byte[] srcSdata2 = (byte[]) field.get(src); byte[] dstSdata2 = (byte[]) field.get(dst); System.out.println("--- setString 후 ---"); System.out.println("src.sdata 주소: " + System.identityHashCode(srcSdata2)); System.out.println("dst.sdata 주소: " + System.identityHashCode(dstSdata2)); // src는 새 주소, dst는 그대로 → 분리됨 확인! } }원래 의도가 얕은 복사를 먼저 해봄으로서 사이드 이팩트 문제를 일으킨 다음, 깊은 복사를 시도해볼려고 했는데 위 코드를 실행해보시면 깊은 복사가 되는 것 처럼보이더군요.그런데 알고보니, 의도대로 dst.sdata 배열의 주소값이 src.sdata 배열의 주소값으로 얕은 복사가 이뤄졌으며, getBytes() 함수 자체가 원래 String 객체의 데이터를 byte 배열로 새로 만들어서 해당 배열에 대한 주소값을 반환하는 함수다 보니, src.sdata 변수의 대상 인스턴스 주소 값이 새로운 바이트 배열에대한 주소값으로 바뀌어 버렸고, 기존 배열은 원래 gc에 의해 사라져야하는게 맞는데, dst.sdata에 src.sdata 배열의 주소값이 얕은 복사가 이뤄졌다보니, 기존 참조된 배열은 계속 참조되어 메모리 상에 남아있더라구요.그렇다보니, src.sdata가 참조한 실질 배열 데이터는 dst.sdata에 얕은 복사해버리고, src.sdata 배열 본인은 새로운 배열 데이터로 갈아타다보니, 실질적으로는 src 객체의 문자열을 바뀌었다기 보단, 참조한 대상 자체가 바뀌다 보닌까 실질적으로는 처음 의도한 얕은 복사로 인한 사이트 이팩트 문제는 애초부터 발생하지 않는다 라는게 결론입니다.따라서 주어진 실습 예제가 적절한지에 대해 한 번 고민해보았습니다.혹시라도 제가 부족하거나 다르게 이해한 부분이 있을 시 지적해주시면 감사하겠습니다.
-
해결됨2026 코딩테스트 올인원 [JAVA]
[문제풀이] network delay time
학습 관련 질문을 남겨주세요. 구체적으로 적을수록 좋아요!마크다운과 단축키를 활용하면 글을 더 편하게 작성할 수 있어요.커뮤니티 질문 & 답변에 비슷한 내용이 있었는지 먼저 검색해보세요.편하게 질문주세요:) 직접 답변 드리도록 하겠습니다~정답 풀이 코드가 이상한거 같아요 ,,!e1[2] - e2[2] 로 코드를 구성하면 OutOfBound에러가 발생해요~e1[0] - e2[0] 이렇게 구성해야하는게 아닌가요 ? curCost + edge[0] 에서 edge[0]가중치가 아니라 출발 노드 이므로edge[2] 을 더 하는게 맞지 않나요? curCost + edge[2] new int[]{curNode, nextCost}큐에 {curNode, nextCost} 추가 → 배열 형식이 {cost, node}여야 하는데 순서와 값이 모두 잘못된거같은데 맞을까요 ?public class NetworkDelayTime { public int solution(int[][] times, int n, int k) { // 그래프 구현 Map<Integer, List<int[]>> graph = Arrays.stream(times) .collect(Collectors.groupingBy(t -> t[0])); // 다익스트라 알고리즘 Map<Integer, Integer> costs = new HashMap<>(); Queue<int[]> pq = new PriorityQueue<>((e1, e2) -> e1[0] - e2[0]); pq.add(new int[]{0, k}); while (!pq.isEmpty()) { int[] cur = pq.remove(); int curCost = cur[0]; int curNode = cur[1]; if (!costs.containsKey(curNode)) { costs.put(curNode, curCost); if (!graph.containsKey(curNode)) continue; for (int[] edge : graph.get(curNode)) { int nextCost = curCost + edge[2]; pq.add(new int[]{nextCost, edge[1]}); } } } // 방문 못한 노드 찾기 for (int node = 1; node < n + 1; node++) { if (!costs.containsKey(node)) { return -1; } } // 최소값중에서 최대값 구하기 return costs.values().stream() .mapToInt(Integer::intValue).max().getAsInt(); } public static void main(String[] args) { NetworkDelayTime solution = new NetworkDelayTime(); int[][] times = { {2, 1, 2}, {2, 3, 5}, {2, 4, 1}, {4, 3, 3} }; int result = solution.solution(times, 4, 2); System.out.println(result); } }이렇게 구현하니 제대로 돌아가서 문의드립니다
-
미해결2026 코딩테스트 올인원 [JAVA]
위상정렬 구현 관련
package 위상정렬; import java.util.*; public class 위상정렬 { public int[] topologicalSort(int nodesNum, int[][] edges) { // 주어진 입력을 사용하기 편한 형태로 변경 -> 방향그래프로 변경 Map<Integer, List<Integer>> graph = new HashMap<>(); int[] indegree = new int[nodesNum]; // edges의 원소 [v, u]는 u -> v 의 방향을 가지 edge를 뜻한다. for (int[] edge : edges) { graph.putIfAbsent(edge[1], new ArrayList<>()); graph.get(edge[1]).add(edge[0]); indegree[edge[0]]++; } Queue<Integer> queue = new ArrayDeque<>(); boolean[] visited = new boolean[nodesNum]; int[] order = new int[nodesNum]; // 위상정렬을 수행한다. // indegree == 0 인 정점부터 탐색이 시작된다. int count = 0; for (int c = 0; c < nodesNum; c++) { if (indegree[c] == 0) { queue.add(c); visited[c] = true; order[count] = c; count++; } } while (!queue.isEmpty()) { int cur = queue.remove(); if (graph.containsKey(cur)) { // 해당 정점과 연결된 노드들의 진입차수에서 1빼기 for (int next : graph.get(cur)) { indegree[next]--; // 진입차수가 0이면 이제 방문해도 된다는 뜻이기 때문에 queue에 추가해준다. if (indegree[next] == 0) { visited[next] = true; order[count] = next; count++; queue.add(next); } } } } return order; } } 안녕하세요 ~ 위상정렬 관련해서 문의사항이 있어서요 ~ 다름이 아니라 강의의 구현 코드에서 visited를 체크를 하고 있던데 위상정렬의 경우 사이클이 없는 방향 그래프인데 visited가 필요할까요 ?? 현재 코드에서도 visited를 선언만 하고 따로 활용을 하고 있지 않은거같아서 문의 드립니다 ~
-
해결됨코딩 테스트 합격자 되기 - 파이썬 편 3기
슬랙에 안들어가져요
슬랙 링크를 클릭하니 해당 커뮤니티 슬랙에 계정이 없다고 뜨네요
-
미해결2026 코딩테스트 올인원 [JAVA]
코딩테스트를 위한 JAVA 질문 있습니다!
학습을 위해 사전 공부를 하려고 하는데 질문이 있습니다. 혹시 노션 공유해주신 "코딩테스트를 위한 JAVA"의 모든 내용을 읽고 이해만 할 수 있을 정도일 때 강의를 들어야 하는지, 문제가 나오면 바로 쓸 수 있을 정도가 되어야 하는지 문의 드립니다.
-
미해결코딩 테스트 합격자 되기 - 파이썬 편 3기
동영상 비공개
이진탐색트리및최종정리 강의에 영상이 비공개로 되어있습니다!