묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결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기
동영상 비공개
이진탐색트리및최종정리 강의에 영상이 비공개로 되어있습니다!
-
해결됨네카라쿠배 면접관들이 직접 알려주는 코딩테스트 & 면접 실전 대비
혹시 오픈카톡 링크는 어디서 볼수 있을까요?
혹시 오픈카톡 링크는 어디서 볼수 있을까요?
-
해결됨38군데 합격 비법, 2025 코딩테스트 필수 알고리즘
수업교재 링크 오류
수업 교재 링크에 접속하면 무한 로딩에 걸려서 교재를 볼 수가 없네요 ㅠㅠ,, 어떻게 하면 될까요?
-
해결됨기초 탄탄! 독하게 시작하는 Java - Part 2 : OOP와 JVM
안녕하세요~ 회수라는 의미에 대해서 질문합니다.
안녕하세요~~ 강의 너무 잘 듣고 있습니다. 강의 듣다가 한가지 의문이 생겨서 질문 남깁니다. GC가 회수한다 라고 말씀을 해주셨는데 여기서 회수는 정확히 어떤 의미일까여? reachable 가능성을 따져서 도달 가능한 인스턴스를 제외한 나머지 공간을 OS에 반납(실제 OS에 반납은 아닐거 같지만 JVM에 반납한다? 라는 의미로 얘기합니다..)한다는 의미일까여 아님 그냥 JVM이 사용가능한 공간으로 만들어 주는것 (free와 같은 개념)으로 만들어 주는걸 의미하는 걸까여? 간략하게 여기서 회수란 메모리 재사용 가능 상태(실제 값이 0으로 초기화 되거나 그런게 아니라 연결을 끊음으로써 언제든 그 공간을 새롭게 할당 가능한 상태)로 돌림으로 이해하면 될까여 아님 실제로 반납을 해주는걸까여....? 진짜 어렵네여 ㅠㅠ 일하면서도 단한번 제대로 잡고간적 없는듯 해서 맨날 헷갈리는 개념입니다 ㅠㅠ
-
해결됨38군데 합격 비법, 2025 코딩테스트 필수 알고리즘
프로그래머스에서 제출 후 채점시 틀림ㅠ
카카오 추가 코딩 테스트 - 2의 '방금그곡' 해결방법 코드를 프로그래머스에 복붙하고 '제출 후 채점하기' 를 하면 하나의 테스트 케이스에서 틀리는데 도저히 봐도 봐도 잘 모르겠네요 ㅠㅠ 제가 풀었을 때도 같은 테스트 케이스에서 틀려서 딩코님꺼 돌려봤는데도 틀려서 뭐가 잘못된건지 못 찾는 중입니다 ㅠ
-
미해결2026 코딩테스트 올인원 [JAVA]
점진적과부하 문제 - 시간 초과 오류
public int[] solution1(int[] weights) { int[] answer = new int[weights.length]; ArrayDeque<int[]> stack = new ArrayDeque<>(); for (int i = 0; i < weights.length; i++) { int weight = weights[i]; while (!stack.isEmpty() && stack.peek()[1] < weight) { var popped = stack.pop(); int poppedIndex = popped[0]; answer[poppedIndex] = i - poppedIndex; } stack.push(new int[] {i, weight}); } return answer; }위와 같이 답변을 작성하였고, 강의에서 나오는 답과 변수명 정도 외에는 차이가 없어 보이는데, 시간 초과 오류가 발생합니다.
-
미해결2026 코딩테스트 올인원 [JAVA]
예제 2번 오류
예시 2:입력: ‘((())())’출력: -1코딩 테스트 사이트에 올라와있는 예제 2번의 입력값과 강의에서 설명해주시는 입력값이 다르고, 출력값도 잘못 기입되어 있는 것 같습니다.
-
미해결38군데 합격 비법, 2025 코딩테스트 필수 알고리즘
1-10 알고리즘 더 풀어보기(2) 질문 있습니다
1. 현재 학습 진도몇 챕터/몇 강을 수강 중이신가요?1-10 알고리즘 더 풀어보기(2)어떤 알고리즘을 학습하고 계신가요?반복되지 않는 문자 2. 어려움을 겪는 부분어느 부분에서 막히셨나요?1-10 알고리즘 더 풀어보기(2) 어떤 개념이 헷갈리시나요?왜 이 문제가 입력된 문자열에서의 등장 순서 상 첫번째가 아닌 알파벳 순서상 첫번째 기준으로 구하도록 결정되었다고 설명 되어있는지 잘모르겠습니다 3. 시도해보신 내용문제 해결을 위해 어떤 시도를 해보셨나요?제가 생각하는 코드의 흐름은 다음과 같습니다 findAlphabetOccurrenceArray 메서드를 통해 알파벳별 중복 횟수를 담은 숫자 배열을 생성합니다중복 횟수가 1인 알파벳만 따로 뽑아 arrayList에 적재합니다main에서 파라미터로 입력된 문자열을 문자배열로 만들어 arrayList에 해당 문자가 있는지 확인 후 반환합니다(없다면 _ 반환)여기서 질문이 있습니다 중복횟수가 1인 알파벳을 순서대로 arrayList에 담더라도 결국엔 도출되는 값은 main에서 들어온 string값을 for문을 돌려서 해당 문자를 도출 합니다 그렇다면 만약 문자열이 'aabbdcee' 라고 한다면 d가 나온다는 의미인데 왜 강의자료에는라고 설명이 되어있는지 궁금합니다 제가 설명을 잘 이해를 못한걸까요??
-
해결됨38군데 합격 비법, 2025 코딩테스트 필수 알고리즘
문제 풀이 방식 관련 질문입니다!
1. 현재 학습 진도몇 챕터/몇 강을 수강 중이신가요? 5-2. LINE 인턴 채용 코딩테스트어떤 알고리즘을 학습하고 계신가요? DFS, BFS여기까지 이해하신 내용은 무엇인가요? DFS, BFS의 기본 개념 2. 어려움을 겪는 부분어떤 개념이 헷갈리시나요? 여기서 문제를 푸실 때 완전탐색을 해야한다. 그래서 BFS를 사용하고자 큐를 사용하신 것까지 이해 했습니다! 근데 완전탐색의 경우 DFS를 사용해야하는게 아닌가..?라는 의문 때문에 질문을 하게되었습니다. 이 문제에서는 DFS나 BFS 둘 중 아무거나 써도 되는 것인가요?또한 어떤 경우에 DFS를 써야하고 BFS를 써야하는지 잘 모르겠습니다... 이렇게 구체적으로 알려주시면, 더 정확하고 도움이 되는 답변을 드릴 수 있습니다! 😊
-
미해결38군데 합격 비법, 2025 코딩테스트 필수 알고리즘
1-5 알고리즘과 친해지기 (2) - 최빈값찾기 질문 있습니다
1. 현재 학습 진도몇 챕터/몇 강을 수강 중이신가요?8.1-5 알고리즘과 친해지기 (2) - 최빈값찾기어떤 알고리즘을 학습하고 계신가요?최빈값 찾기 2. 어려움을 겪는 부분어느 부분에서 막히셨나요?왜 배열로 푸는 것이 제일 낫나요?저는 java의 map을 사용해서 풀었는데 이건 좋지 않은 풀이법일까요? 3. 시도해보신 내용현재 작성하신 코드를 공유해주세요public class FindMaxOccurredAlphabet0102 { public static void main(String[] args) { System.out.println("정답 = i 현재 풀이 값 = " + solution("hello my name is dingcodingco")); System.out.println("정답 = e 현재 풀이 값 = " + solution("we love algorithm")); System.out.println("정답 = b 현재 풀이 값 = " + solution("best of best youtube")); } public static char solution(String s) { Map<Character, Integer> map = new HashMap<>(); for (int i = 0; i < s.length(); i++) { char c = s.charAt(i); if (!Character.isLetter(c)) { continue; } map.put(c, map.getOrDefault(c, 0) + 1); } List<Map.Entry<Character, Integer>> list = new ArrayList<>(map.entrySet()); list.sort( (a, b) -> b.getValue() - a.getValue() ); return list.get(0).getKey(); } }
-
미해결2026 코딩테스트 올인원 [JAVA]
part5 홍팀청팀 테스트케이스 오류
안녕하세요 강의 잘 듣고 있습니다.해당 문제 테스트 케이스에 오류가 있는 것 같아 글 남깁니다! 연결된 네트워크 그룹이 여러 개일 때를 고려하지 않고 문제를 풀었는데 정답 처리 되었습니다..!확인 부탁드립니다감사합니다!import java.util.*; class Solution { List<List<Integer>> graph; public boolean solution(int[][] friends) { graph = new ArrayList<>(); for (int i = 0; i < friends.length; i++) { graph.add(new ArrayList<>()); } for (int i = 0; i < friends.length; i++) { for (int j = 0; j < friends[i].length; j++) { graph.get(i).add(friends[i][j]); graph.get(friends[i][j]).add(i); } } return bfs(0); } private boolean bfs(int start) { Queue<Integer> queue = new ArrayDeque<>(); queue.offer(start); int[] team = new int[graph.size()]; Arrays.fill(team, -1); team[start] = 0; // 시작 팀 while(!queue.isEmpty()) { int cur = queue.poll(); for(int next : graph.get(cur)) { if (team[next] == -1) { // 아직 미방문한 노드 team[next] = 1 - team[cur]; // 반대팀 배정 queue.offer(next); } else if (team[next] == team[cur]) { // 방문한 노드가 같은 팀이면 false 반환 return false; } } } return true; } }
-
미해결2026 코딩테스트 올인원 [JAVA]
코테 사이트 네트워크 연결....
학습 관련 질문을 남겨주세요. 구체적으로 적을수록 좋아요!마크다운과 단축키를 활용하면 글을 더 편하게 작성할 수 있어요.커뮤니티 질문 & 답변에 비슷한 내용이 있었는지 먼저 검색해보세요.편하게 질문주세요:) 직접 답변 드리도록 하겠습니다~ 안녕하세요! 양질의 강의 덕분에 코딩 테스트 준비를 수월하게 할 수 있는 것 같습니다!다름이 아니라 코테 사이트 네트워크 문제가 지속적으로 발생해서 공부하는데 어려움이 있습니다..ㅠㅠ 확인 한 번만 부탁드립니다! 감사합니다
-
미해결2026 코딩테스트 올인원 [JAVA]
DP-다익스트라
학습 관련 질문을 남겨주세요. 구체적으로 적을수록 좋아요!마크다운과 단축키를 활용하면 글을 더 편하게 작성할 수 있어요.커뮤니티 질문 & 답변에 비슷한 내용이 있었는지 먼저 검색해보세요.편하게 질문주세요:) 직접 답변 드리도록 하겠습니다~혹시 DP와 다익스트라도 추후 강의 추가 예정일까요?커리큘렴을 제대로 확인하지 않은 제잘못이지만 두가지 없는건 살짝 아쉽네요ㅠㅠ
-
미해결2026 코딩테스트 올인원 [JAVA]
코테 사이트 네트워크 연결 문제 확인 부탁드립니다.
학습 관련 질문을 남겨주세요. 구체적으로 적을수록 좋아요!마크다운과 단축키를 활용하면 글을 더 편하게 작성할 수 있어요.커뮤니티 질문 & 답변에 비슷한 내용이 있었는지 먼저 검색해보세요.편하게 질문주세요:) 직접 답변 드리도록 하겠습니다~ 문제 풀러가기 눌렀을 때 다음과 같은 현상 발생합니다.서버 호출 안하는 것 같은데 확인 한 번 부탁드립니다. 감사합니다.