묻고 답해요
167만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결2026 코딩테스트 올인원 [JAVA]
정답과 동일하게 작성 후 실행 또는 제출했음에도 시간초과
강의에서 설명해주신 풀이 그대로 실행하기 / 제출하기 했으나, 항상 시간초과가 발생합니다.
-
해결됨독하게 C를 배운 사람을 위한 선형 자료구조
05_adtFileIO 개정이력에 대한 질문
안녕하세요. LinearDataStructure 프로젝트의 main함수 내용을 보니puts("2024-03-20\t전**님의 제보에 따른 05_adtFileIO 예제 버그 수정(v1.5)");puts("\t\t(사용자가 새로운 항목 추가 시 파일 저장위치 옵셋이 0으로 하드코딩된 오류)");라고 되어있길래 AddNewUser() 함수 정의를 살펴보니 아직 AddNewNode()함수 호출 시 offset이 0으로 하드코딩 되어있더라구요. 혹시 제공된 예제코드에 아직 반영이 되지 않은것일까요? 물론 이벤트루프가 종료되면서 SaveNewDataToFile함수에서 append모드로 파일이 열려서 파일의 맨 끝부터 정상적으로 추가되고, 다음에 다시 실행하면 MYNODE의 offset이 정상적으로 반영은 되더라구요. 그런데 새로 유저를 추가하고, 그 유저를 바로 검색해서 수정한뒤, commit을 한다고 하면, 그때 그 유저의 노드에 담겨져 있는 offset은 0이기 때문에, 가장 앞에 있는 노드의 데이터가 덮어씌워지는 것을 확인했습니다. (예제에서는 'Hoon') 전** 님의 Q&A에 답변하신 것 처럼 전역변수 이용해서 offset을 지정하면 이런 문제가 해결되지 않을까 싶습니다. 항상 좋은 강의 감사합니다. 선생님 강의 들으면서 매번 쾌감이 느껴집니다.
-
해결됨38군데 합격 비법, 2025 코딩테스트 필수 알고리즘
2-10 더하거나 빼거나 관련 질문입니다
1. 현재 학습 진도몇 챕터/몇 강을 수강 중이신가요?2-10어떤 알고리즘을 학습하고 계신가요?재귀여기까지 이해하신 내용은 무엇인가요?강의 내용과 코드는 전부 이해했습니다. 2. 어려움을 겪는 부분어느 부분에서 막히셨나요?아이디어 발상 과정코드의 어떤 로직이 이해가 안 되시나요?어떤 개념이 헷갈리시나요? 처음에 문제를 풀려고 시도했을 때, 아이디어를 이것저것 떠올렸고 2주차때 배운 내용에 재귀가 있으니 뭔가 재귀로 풀면 가능하지 않을까? 라는 것까지 도달했습니다.그러나 30분 이상 고민하다가 결국 도저히 모르겠어서 코드를 아예 짜지 못한 상태로 정답풀이 강의를 봤습니다..강의는 자세히 알려주셔서 다 이해를 했지만 이러한 문제를 마주쳤을 때 풀이법을 떠올리는 게 너무 어려운데 어떻게 하는게 좋을까요?
-
미해결2026 코딩테스트 올인원 [JAVA]
part6. 구름의 개수 풀이 시간초과 이유
part6 구름의개수1 문제 풀다 질문 드립니다. 아래는 제가 bfs로 푼 코드인데요. 케이스는 통과하는데 시간초과가 납니다.bfs() 매개변수로 int[] start 를 받아서 아래에서 사용했는데, 하위 for문에서 int[] sub 로 배열을 만들어 쓴게 문제인가 싶은데, 이런 일차원 배열 더 쓴다고 시간복잡도가 높아지나? 싶은 생각이 들어 시간 초과 왜나는지 궁금합니다. public static int solution(int[][] sky) { boolean[][] visited = new boolean[sky.length][sky[0].length]; int count = 0; for(int i=0; i<sky.length; i++) { for(int j=0; j<sky[0].length; j++) { if(!visited[i][j] && (sky[i][j] == 1)) { bfs(sky, new int[]{i,j}, visited); count++; } } } return count; } public static void bfs(int[][] sky, int[] start, boolean[][] visited) { Queue<int[]> q = new ArrayDeque<>(); q.offer(start); visited[start[0]][start[1]] = true; while(!q.isEmpty()) { int[] cur = q.poll(); System.out.println("start: " + start[0] + start[1] + "/ poll: " + cur[0] + ", " + cur[1]); // cur의 상하좌우 중 갈 수 있는 길 & visited 안한 길을 q에 넣기 int[] r = {-1, 1, 0, 0}; int[] c = {0, 0, -1, 1}; int w = sky[0].length; int h = sky.length; for(int i=0; i<r.length; i++) { int[] sub = new int[]{cur[0]+r[i], cur[1]+c[i]}; System.out.println("sub:" + sub[0] + ","+sub[1]); if((sub[0] >= 0 && sub[0] < h && sub[1] >= 0 && sub[1] < w) && (sky[sub[0]][sub[1]] != 0) && (!visited[sub[0]][sub[1]])) { q.offer(sub); visited[sub[0]][sub[1]] = true; System.out.println("sub offer:" + sub[0] + ","+sub[1]); } } } }
-
미해결2026 코딩테스트 올인원 [JAVA]
DFS vs BFS 중 BFS 추천해주신 것 관련 질문
안녕하세요![part6.구름의 개수1] 강의에서 DFS vs BFS 중 DFS 사용하면 스택오버플로우 가능성이 있어서 대안을 말씀 해주셨는데요.암시적그래프에서 구현 시에 해당하는건지, 다른 케이스에서도 그러한지 궁금합니다.암시적그래프에서 모두 1인 경우 재귀가 많이 호출되어서 그게 문제인거같은데, 다른 유형에서는 그런 경우가 없을까요?
-
미해결자바스크립트로 배우는 자료구조 & 알고리즘 (개념+문제풀이)
생산 공정 최적화 (이분탐색) worst Case 수정
function solution(n, speeds) { let left = 1; let right = Math.min(...speeds) * n; //최악의 경우 : 가장 빠른 기계가 n개의 제품을 만드는 시간 let answer = right; while(left <= right){ const mid = Math.floor((left+right) / 2) let total = 0; for (let time of speeds) { total += Math.floor(mid/time) // 중간 시간에 생성할 수 있는 제품 수 } if(total >= n){ answer = mid; right = mid - 1; } else { left = mid + 1; } } return answer } console.log(solution(8, [5,9])) console.log(solution(6, [7,10])) 최악의 경우가 가장 느린기계가 제품을 모두 생성하는 시간이 아닌 가장 빠른 기계만 사용해서 제품을 모두 만드는 경우가 최악의 케이스 같습니다!
-
미해결개발 역량 + 자격증까지, Java로 PCCP 자격증 준비하기
응시권 재발송해주시길 바랍니다.
응시권이 확인되지 않습니다.재발송해주시길 바랍니다.
-
미해결자바스크립트로 배우는 자료구조 & 알고리즘 (개념+문제풀이)
버블정렬
function bubbleSort(array) { const n = array.length for (let i=0; i<n; i++){ for (let j=0; j<n; j++) { if (array[j] > array[j+1]) { [array[j], array[j+1]] = [array[j+1], array[j]] } } } return array } console.log(bubbleSort([77, 42, 6, 4, 3, 5, 1, 35, 222])) 수업에서 사용하신 코드인데 버블정렬의 브레이크 포인트와 이미 정렬된 뒷 부분까지 비교할 필요가 없지 않나요? 저렇게 사용하신 다른 이유가 있으신 지 여쭤보고 싶습니다!function bubbleSort(array) { const n = array.length for (let i=0; i<n-1; i++){ let swapped = false; for (let j=0; j<n- i; j++) { if (array[j] > array[j+1]) { [array[j], array[j+1]] = [array[j+1], array[j]] swapped = true; } } if (!swapped) break; } return array } console.log(bubbleSort([77, 42, 6, 4, 3, 5, 1, 35, 222]))
-
미해결자바스크립트로 배우는 자료구조 & 알고리즘 (개념+문제풀이)
학습 방향성에 대한 문의
구현 원리는 어느정도 이해하였고 강의를 보고 구현 코드도 이해하였는데 직접 코드로 구현하려고 하니 잘 안됩니다 기본적인 예제나 구현을 암기하는게 맞을까요? 아니면 문제풀이를 반복하면서 막히면 보고해서 익숙할 때까지 푸는 방향이 맞을까요? 문제풀이와 구현 암기 중 어떤 것이 선행되어야 하는 지 여쭤보고 싶습니다
-
미해결자바스크립트로 배우는 자료구조 & 알고리즘 (개념+문제풀이)
큐 구현 관련
현재 queue는 따로 구현하지 않고 shief() 메서드를 이용하고 있는데 queue 구현하지 않고 shief()로 했을 때 성능차이 크게 없을까요? 코딩 테스트 시에도 이렇게 진행해도 되는 지 여쭤보고 싶습니다.
-
해결됨38군데 합격 비법, 2025 코딩테스트 필수 알고리즘
3-8 해쉬 -2
def get_absent_student(all_array, present_array): all_set = set(all_array) present_set = set(present_array) return all_set - present_set이런식으로 작성하였는데 해쉬 테이블을 사용한 방법과 비교했을 때 어떤 가요?
-
미해결[AI 시대의 게임 개발을 지탱하는 기술들] 홍사부의 디아블로1 PCG 던전 생성 알고리즘
강의를 듣다가 답답해서 문의 남깁니다.
지금 6강을 듣고 있는데요 솔직히 말해서 지금까지 무슨 얘기를 하는지 하나도 모르겠어요.많은 강의를 들었지만 이렇게 당황스러운 적은 처음인데요...일단 저는 PCG가 뭔지 이걸 왜 사용하고 어떤 원리인지 알고 싶지만 이런 기본 개념에 관한 설명이 하나도 없네요. 제가 답답해서 검색으로 찾아봤습니다.그리고 Room, Chamber도 그냥 텍스트로만 설명해주셨는데 이것도 헷갈리고요, 그 이후의 내용은 당연히 이해하기 너무 힘듭니다.17번 강의 봤는데 오히려 여기 내용이 1강으로 소개 되어야 하는거 아닌가요? 코드 설명도 하나 씩 작성하면서 풀어내는 방식이 아닌 전체 프로젝트를 던져주고 갑자기 가운데 부분부터 설명하시던데 무슨 얘기를 하는지 도무지 알 수가 없더군요.강의 소개에서 사전 지식 부분에 Unity사용법과 C#만 알며 된다고 하셨는데 강의 내용은 이 조건과 많이 동떨어져 있어 보입니다.가르치기 위한 강의보다는 본인이 진행한 프로젝트를 소개하는 영상같은 느낌이 더 듭니다. 수강평이 아닌 질문게시판에 글을 작성한이유는이 후의 내용도 계속 이런 방식인지, 저처럼 PCG(?) 던전생성알고리즘관련 지식이 전무한 사람은 수강이 어려운 건지 궁금합니다.
-
미해결코테의 바이블 [java]
섹션6에 있는 [코테 TIP] visited 초기화 부분이 자바 내용이 아니라 파이썬으로 되어있습니다
섹션6에 있는 [코테 TIP] visited 초기화 부분이 자바 내용이 아니라 파이썬으로 되어있습니다.자바 내용으로 최신화해주셔야 될 것 같습니다
-
미해결2026 코딩테스트 올인원 [JAVA]
part5. 청팀홍팀 풀이 질문 드립니다.
안녕하세요! 남노씨님 덕분에 강의 잘 들으며 학습중입니다. part5.청팀홍팀 풀이로 보여주신 것에서 질문이 있습니다.문제의 Input 예시 이해가 잘 되지 않았습니다.제가 혼자 생각했을 때는, 주어진 friends[][] 배열을 인접리스트로 만들어야한다고 생각했고, 서로는 쌍방이니 양방향 그래프. 양방향 값을 인접리스트에 넣어주어야 한다고 생각했습니다. 근데 input 예시를 보니, 예시1은 서로 양방향 없이 구성되어있고, 예시2는 인접리스트처럼 서로 양방향으로 구성되어있습니다. 이상황에서 인접리스트를 구성하려니 예시2로는 중복이 발생하더라구요.1. 예시 1,2 기준이 달라보이는데 어떻게 해석해야 좋을까요?2. 양방향 그래프=무방향 그래프 같다고 볼 수 있나요? 이 문제의 경우 어떤 그래프인지, 구현의 차이점이 있는지 궁금합니다.3. 풀이에서는 인접리스트를 별도로 안만들고, 받은 배열 자체를 인접리스트인것처럼 바로 사용하였는데, 이전 풀이와 비교해서 왜 이렇게 사용하였는지 궁금합니다. (문제에서 캐치할 수 있는 차이점이 뭘지)4. dfs/bfs에서 사용하는 자료구조(큐,재귀/스택)는 풀이에 사용하지 않으셨는데 문제 상 필요 없는건지, 이분그래프일 때 사용 안해도 되는지 궁금합니다. (일단 bfs 큐 사용한 구조 만들고 시작했는데 이렇게 접근하면 안되는걸까요?ㅠㅠ)이해 도와주시면 감사하겠습니다 :)
-
해결됨38군데 합격 비법, 2025 코딩테스트 필수 알고리즘
Linked List Element Delete Explanation Problem
1. 현재 학습 진도몇 챕터/몇 강을 수강 중이신가요?어떤 알고리즘을 학습하고 계신가요?여기까지 이해하신 내용은 무엇인가요? 2. 어려움을 겪는 부분어느 부분에서 막히셨나요?코드의 어떤 로직이 이해가 안 되시나요?어떤 개념이 헷갈리시나요? 3. 시도해보신 내용문제 해결을 위해 어떤 시도를 해보셨나요?에러가 발생했다면 어떤 에러인가요?현재 작성하신 코드를 공유해주세요 이렇게 구체적으로 알려주시면, 더 정확하고 도움이 되는 답변을 드릴 수 있습니다! 😊 아래 코드(TODO; 제가 만든 삭제코드, 정답지; 제공된 교재 답 풀이본) 에 대해 문의드립니다. 5,9,12,27 일때 정답지를 통해 결과를 뽑아보면 삭제가 안되는 현상이 일어납니다. 이와 관련해 어떻게 생각하실지 여쭙습니다!class Node: def __init__(self, data): self.data = data self.next = None class LinkedList: def __init__(self, value): self.head = Node(value) def append(self, value): cur = self.head while cur.next is not None: cur = cur.next cur.next = Node(value) def print_all(self): cur = self.head while cur is not None: print(cur.data) cur = cur.next def get_node(self, index): node = self.head count = 0 while count < index: node = node.next count += 1 return node def add_node(self, index, value): new_node = Node(value) if index == 0: new_node.next = self.head self.head = new_node return node = self.get_node(index - 1) next_node = node.next node.next = new_node new_node.next = next_node # def delete_node(self, index): # TODO # if index == 0: # 첫번째 노드를 불러와야 출력이 가능하므로 0번째 인덱스를 제거하려고하면 1번쨰 인덱스를 head로 지정 # self.head = self.head.next # return # before_node = self.get_node(index-1) # 1. 제거해야할 노드 이전 노드 찾기 # delete_node = self.get_node(index) # before_node.next = delete_node.next # 2. 이전 노드 next를 제거할 노드의 next로 # delete_node.next = None # 3. 제거할 노드의 next 를 None # return "index 번째 Node를 제거해주세요!" def delete_node(self, index): # 정답지 if index == 0: # 첫번째 노드를 불러와야 출력이 가능하므로 0번째 인덱스를 제거하려고하면 1번쨰 인덱스를 head로 지정 self.head = self.head.next return before_node = self.get_node(index-1) # 1. 제거해야할 노드 이전 노드 찾기 before_node = before_node.next.next return "index 번째 Node를 제거해주세요!" linked_list = LinkedList(5) linked_list.append(9) linked_list.append(12) linked_list.append(27) print("제거 전") linked_list.print_all() print("제거 후") linked_list.delete_node(3) linked_list.print_all()
-
미해결2026 코딩테스트 올인원 [JAVA]
추후 학습 계획 질문
안녕하세요!강의 수강 완료 후에는 복습하면서 다양한 문제를 풀어보면서 학습하는 방법이 좋을까요?..
-
해결됨코딩 테스트 합격을 위한 리트코드 핵심 문제 풀이
강의 순서
강의 수강 방법에 대해서 질문이 있습니다.저는 Blind75를 순서대로 풀고 있는데 강의 순서랑은 Blind75 순서랑 조금 다르더라구요 자료구조 알고리즘을 모르는 상태로 강의를 시작해도 되는지 1번과 연계되는 질문으로 일단 문제 풀이를 시도하되 한 문제당 어느정도의 시간을 두고 풀면 되는지 보통 10분 정도 고민해보고 정말 모르겠다면 문제풀이 강의를 바로 들어보는 편입니다.Blind75 순서대로 문제를 풀면서 풀지 못한 문제에 대해서만 강의를 시청하면 되는지 좋은 강의 만들어주셔서 감사합니다.
-
미해결코딩 테스트 합격자 되기 - 4주완성
시간복잡도 개념문제 Deque질문
[ 질문 배경 ]Deque에 대한 자료를 보면 포인터를 사용한다고 나와있습니다.따라서 popleft()시 맨 좌측부터 포인터가 가르키며 삭제하게 되는데, 이는 논리적으로 "삭제"라는 개념보다는 포인터가 가르키는 곳을 다음으로 이동시킨다는 의미를 가진다고 gpt를 통해 알게 되었습니다. [ 질문 ]그렇다면, popleft()시 포인터가 다음으로 이동할 시 메모리에 적재되어 있던 이전 값은그대로 남아있게 될텐데, 그렇다면 이것은 메모리 낭비로 이어질 수 있지 않나요? 자바의 경우 가비지 컬렉터가 알아서 메모리를 관리하죠. GPT에게 물어보니 메모리 슬롯은 유지하며 재사용할 수 있도록 대기상태에 들어간다고 합니다. 그렇다면 이 재사용을 할지 말지에 대한 것은 누가 결정하며 어떻게 처리되나요? 궁금합니다. C의 경우 malloc 으로 메모리 빌림 , 메모리 반납을 거치게 되는데, 이 경우도 궁금합니다.
-
미해결코딩 테스트 합격자 되기 - 파이썬 편
자료구조 구현에 관한 질문
안녕하세요 강의에서 스택 구현하기에서 직접 구현할 일은 없다고 말씀해주시는데 코딩인터뷰를 하게되면 보통 자료구조를 직접 구현하는 과정이 많더라구요 그런걸 생각했을때 자료구조를 구현해보는것도 필요하지 않을까요..?
-
해결됨3. [노베이스/입문] 기초 C++ 스파르타 클래스
비주얼 스튜디오 2026으로 해도 문제 없을까요?
비주얼 스튜디오 2026으로 해도 문제 없을까요?2022가 다운받을 방법이 없네요 ㅜ