묻고 답해요
169만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-H 질문입니다.
문제 보자마자 슬리이딩 윈도우가 생각나서 해당 방법으로 구현을 했습니다 . 구간합을 이용한 문제를 푸실때 누적합으로 구현하게 하시는 이유가 궁금 합니다.https://www.acmicpc.net/source/102197682
-
해결됨독하게 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군데 합격 비법, 2026 코딩테스트 필수 알고리즘
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])) 최악의 경우가 가장 느린기계가 제품을 모두 생성하는 시간이 아닌 가장 빠른 기계만 사용해서 제품을 모두 만드는 경우가 최악의 케이스 같습니다!
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
C++ 알고리즘 교안 학습 관련
최근 강의를 구매해, 코딩 테스트를 준비 중인 학생입니다!제가 원래 JAVA 언어를 주력으로 사용합니다. 코딩 테스트도 웬만하면 주력 언어를 사용하는 것이 학습 시간 면에서 유리할 것이라고 생각하고 있습니다. 실제로 시간이 많지도 않습니다.이런 상황에서, C++ 알고리즘 교안을 익히고 JAVA로 매핑 후, 강의를 들어야 하는 것인지아니면, C++ 알고리즘 교안을 익히고, 강의 또한 C++로 듣고, 마지막에 JAVA로 매핑 해야 하는 것인지혹은, 이미 C++ 을 어느 정도 알고 있어서, 바로 강의를 들으며 JAVA를 기준으로 진행해도 되는 것인지 궁금합니다...!!
-
미해결개발 역량 + 자격증까지, 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군데 합격 비법, 2026 코딩테스트 필수 알고리즘
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이런식으로 작성하였는데 해쉬 테이블을 사용한 방법과 비교했을 때 어떤 가요?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
강의 영상에 오타가 있는 것 같습니다
비트마스킹 개념 #3-5. 비트연산자 활용법: idx번째 비트를 켜기 영상에서 2:26에 or연산이 맞는거 같은데 xor로 들리고 자막에도 xor로 나와서 질문 남깁니다
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
가중치 방향 그래프에서 가중치가 0인 간선을 표현하는 방법
안녕하세요! 11. 그래프와 인접행렬 강의를 듣다가 질문이 생겨 글을 남깁니다.가중치 방향 그래프에서 가중치가 0인 간선이 문제 특성상 의미가 있을 경우 가중치가 0인 간선을 자바로 표현하는 방법이 있을까요? 기존처럼 0으로 표현해 버리면 간선이 없는 경우와 구분하기 어려울 것 같아서요.검색 해보니 그런 경우에는 double 타입 행렬을 선언하고 간선이 없을 때 Double.POSITIVE_INFINITY 를 쓰는 것 같긴 한데 맞는 방법일까요? 그런 기법이 코딩테스트 풀 때 사용되는지도 궁금합니다.
-
미해결코테의 바이블 [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군데 합격 비법, 2026 코딩테스트 필수 알고리즘
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()
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
질문있습니다!
다른방법으로 풀어서 질문드립니다.지우는 노드부터 자식으로 내려가서면서 dfs를 돌리며 visited를 체크 했습니다.너무 비효율적인지? 아니면 이렇게 해도 될지 알려주시면 도움이 될것 같습니다! http://boj.kr/79ae7d2c251d458fa1560fcb789af4ae
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
LIS 질문있습니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. Q) LIS 알고리즘이 코딩 테스트에서 자주 사용되는 알고리즘인가요? 실전 코딩 테스트 경험이 적어서 그럴 수 있지만, 이거 LIS로 풀어야겠다 하고 문제 풀이를 들어간 경험이 없어서요. 그냥 알아두면 좋은 알고리즘이라고 생각하고 공부하고 있습니다.
-
미해결2026 코딩테스트 올인원 [JAVA]
추후 학습 계획 질문
안녕하세요!강의 수강 완료 후에는 복습하면서 다양한 문제를 풀어보면서 학습하는 방법이 좋을까요?..