묻고 답해요
169만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
질문
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. http://boj.kr/681ea9efbab148389692696bbe044d80문제 고민하다가 강사님께서 말씀하신 풀이대로 하던 중에 "모든 구역 다 탐방해도 되지만, 그냥 L인 부분만 골라서 그 좌표 넣어서 하는 건 안 될까?' 라는 생각이 들어서 갑자기 이 코드로 해봤는데요, bfs에서 반환되는 부분이랑 main에서 treasure.size 부분에서 오류가 있다는 건 아는데, 이렇게 해서 이 문제 해결에 대해서 강사님의 생각이 듣고 싶습니다!
-
해결됨코딩테스트 [ ALL IN ONE ]
시간복잡도 질문
안녕하세요 강사님알찬 강의 구성으로 재미있게 강의를 듣고 있습니다.다름이 아니라 시간 복잡도에 대해서 여쭤보고 싶은게 있어서 글을 남깁니다.현재 완전탐색을 하게 되면 시간 복잡도가 n2이 된다고 하셨는데, 두번째 반복문 조건을 j = i+1 로 설정하는 순간부터 n2이 아니라 n log n이 되는 것이 아닌가 싶어서요.만약 nums의 길이가 5라면 최악의 경우에도 반복문이 전체가 돌아간다면 ( 4+ 3+ 2+ 1 ) = 10번으로 n2 = 25일때보다는 획기적으로 줄어드는 것 같아요!5의 경우에도 절반 이하로 줄어들었는데 숫자가 커지면 커질수록 기하급수적으로 줄어들 것으로 보이는데, 혹시 제가 잘못 생각하고 있는 걸까요? ㅠㅠ
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
while문 없이 if만 사용
function solution(m, arr) { let answer = 0; let sum = 0; let lt = 0; for (let rt = 0; rt < arr.length; rt++) { if (sum < m) sum += arr[rt]; else if (sum > m) { sum -= arr[lt++]; } if (sum === m) { answer++; sum += arr[rt]; } } return answer; } let a = [1, 2, 1, 3, 1, 1, 1, 2];while문 없이 if만 사용해도 답이 나오던데 while문 이렇게 사용해도 문제가 없나요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-D 이왜틀 질문있습니다!
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.vs코드에선 문제없이 결과값이 잘 출력되는데 백준에서 채점을 하면 틀렸다고 나옵니다. 계속 고민하다가 어떤 것이 문제인지 잘 모르겠어서 이렇게 질문 드립니다 ㅜㅜhttp://boj.kr/39e3a3ae1e12496c89bd1a369f199c12
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-R 질문있습니다.
저는 선생님과 달리 bfs로 로직을 짰습니다.이유는 완전이진 트리만을 생각했기 때문에가장 높은 레벨인 노드들만 카운트하면 된다 생각했었습니다.물론 틀린생각이었죠.어찌됐든 bfs로 로직을 짰고 자식노드가 발견되면 플래그를 변경하고 플레그에 따라 리프노드를 선별하는 방식입니다.또한 삭제노드와 동일한 노드는 큐에 추가하지 않고 패씽했습니다.무엇이 문제인지 모르겠습니다.http://boj.kr/9c43785254f842aa975a11e833102304
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
[교안 질문]재귀를 이용한 순열
쌤. 위의 함수에서 r 파라미터를 사용하는 의미가 무엇인지 궁금합니다.아래와 같이 r을 생략하고 n으로 대체해도 같은 결과를 얻을 수 있어 보여서요. void makePermutation(int n, int depth){ if(n == depth){ printV(v); return; } for(int i = depth; i < n; i++){ swap(v[i], v[depth]); makePermutation(n,depth+1); swap(v[i], v[depth]); } return;}
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3주차 개념강의 - 색종이 붙이기
쌤~3주차 강의 중에, 색종이 붙이기 부분에서, 전반적으로 이해가 잘 안됩니다..특히 함수들의 파라미터 중, int cnt가 하는 역할이 어떤 것인지 감이 안잡히네요 ㅠ Q1. 왜 cnt 라는 파라미터가 존재해야 하는지부터 이해가 어렵습니다.. 왜 존재하나요?Q2. 모든 발단이 문제 해석이 와닿지 않아서 그런것 같습니다. 색종이 붙이기 문제에 대한 분석을 좀 더 설명 부탁드려도 될까요? 늘 좋은 강의 감사드립니다~!
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
손코딩 이후 IDE에 코드 작성하는 방법
안녕하세요! 강의 잘 듣고 있는 학생입니다.선생님 저 같은 경우 코딩 테스트 문제를 풀때, 컴퓨터(IDE)에 바로 작성하지 않고 노트에 solution 부분의 코드를 전부 손코딩으로 작성 해본 뒤에 컴퓨터로 작성합니다. 이런 방식이 코딩테스트 시험 볼때는 시간제한이 있으니,, 비효율적인지 궁금합니다. (현재는 코드가 짧아서 상관 없다고 생각하지만, 어려운 문제들.. 즉, 코드가 길어 지는 문제들을 풀때 문제가 되지 않을까? 생각하여 이렇게 질문을 남깁니다) 이렇게 하게 된 이유는, 펜으로 작성해보지 않고 바로 코드를 타이핑 하려니 생각이 잘 떠오르지 않아 이렇게 하게 되었습니다.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2589번 보물섬 테스트케이스
안녕하세요 큰돌 선생님 수업 잘 듣고있습니다.다름이 아니라 강의를 듣기전 문제를 한번 풀어보았는데 궁금한 것이 생겨 질문 드리게 되었습니다.https://www.acmicpc.net/source/55784974육지인 지역 2곳을 뽑아서 bfs(최단거리)를 사용해 풀었는데요, 틀렸습니다. 시간복잡도의 문제도 있겠지만 그 전에 12%에서 반례 케이스가 존재하였습니다.5 5LLLLLLWWWLLWWWLLWWWLLLLLL이 테스트케이스의 답은 8인데 저는 14가 나왔습니다.궁금해서 visited배열을 출력하였더니, 이렇게 나왔습니다.정상적으로 bfs가 수행되지않았는데 이유가 무엇인지 알 수 있을까요?감사합니다!
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
문제풀이관련 질문
안녕하세요 큰돌님 문제풀이 관련 질문이 있어 이렇게 글을 남깁니다.유튜브에서 코딩테스트 딱 이정까지 고민하세요 영상을 보면 난이도에따라 골드5~3정도는 1시간골드2~플레 4시간 고민하라고 하셨는데, 말씀해주신 시간만큼 고민했지만 풀지 못한 문제 또는 틀린 문제는 어떤 방식으로 학습하고 복습하는게 좋나요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
c++ 코드를 파이썬으로
안녕하세요.문득 든생각이 있습니다. c++도 공부는 하는데 시간이 좀 부족해서 수업을 들으면서 파이썬으로 최대한 매핑해서 코드를 짜보려고 합니다. 강사님 문제 풀이 로직(c++) 코드를 파이썬으로 옮기면 코딩테스트에서 시간 초과나 메모리 문제가 생길 수 있나요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
안녕하세요 선생님 교안 공부하다가 ..
안녕하세요. 알고리즘 공부를 위해 강의를 구매했고 C++ 알고리즘 교안을 통해 공부 중입니다.교안을 보다보면 제 머리가 조금 부족해서 내용 이해가 정확히 안가는 부분도 있고, 내용이 적지 않다 보니 1주일 공부하다보면 앞에 내용이 기억나지않아 뒷 부분에서 이게 무슨 소리인가라는 생각이 자주 듭니다. 이럴 때, 기억나지않아도 적당히 이해하면서 교안을 뒤로 넘기며 계속 공부를 이어나가야 할지 앞에 내용을 다시 공부하고 진행해야 할 지 모르겠습니다. 교안을 완벽하게 숙지(이해, 암기)하고 강의를 듣고 공부를 해 나가야할지, 아니면 모든 내용이 기억나지 않고 완벽하게 숙지되지 않더라도 앞으로 나아가야할지 어느 방법을 추천하시는지 조언해주시면 감사하겠습니다. 감사합니다!
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
안녕하세요 이런 풀이도 괜찮을까요?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.let input = `7 128 460 603 40 521 137 123`.split("\n"); let num = Number(input[0]); let arr = input[1].split(" "); function solution(arr) { let answer; let sum; let sumMax = 0; let maxNum = 0; for (let i = 0; i < num; i++) { sum = arr[i].split("").reduce((acc, cur) => { return Number(acc) + Number(cur); }, 0); if (sum > sumMax) { sumMax = sum; maxNum = arr[i]; answer = arr[i]; } if (sum === sumMax) { answer = Math.max(maxNum, arr[i]); } } return answer; } console.log(solution(arr));이런식으로 한번 풀어봤는데 이런 풀이도 괜찮을걸까요..!?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
c++ 설치관련문의
교안에서 윈도로 설치할 경우 DevC++을 추천한다고 했습니다. 제가 유니티를 전에 사용하면서 비줄얼스튜디오2022가 이미 설치가 되어있습니다. 이경우에서도 DevC++를 설치하는 것이 나을지 아니면 이미 있는 비주얼스튜디오2022로 사용해도 되는지 각각의 장단점을 문의드립니다.
-
미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
수들의 합
해당 코드는 강사님 풀이와 비교했을 때 어떤지 궁금합니다. N, M = map(int, input().split()) list = list(map(int, input().split())) cnt = 0 for i in range(N): sum = list[i] temp = i while True: if sum == M: cnt += 1 break if sum > M: break if temp == N - 1: break temp += 1 sum += list[temp] print(cnt)
-
미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
자바스크립트에서는 항상 맨날 힙 구현해서 풀어야했는데..
실시간 정렬해야되는 문제들 보면 거의 무조건 힙구조도 같이 이용해야하는 문제들이여서..자바스크립트로 풀때는 최소 빨라도 3~4분정도는..요로코롬Min이나 Max 힙 구조 만드는데 소요해야하고,class MaxHeap { constructor() { this.heap = [null]; } push(value) { this.heap.push(value); let currentIndex = this.heap.length - 1; let parentIndex = Math.floor(currentIndex / 2); while (parentIndex !== 0 && value > this.heap[parentIndex]) { const temp = this.heap[parentIndex]; this.heap[parentIndex] = value; this.heap[currentIndex] = temp; currentIndex = parentIndex; parentIndex = Math.floor(currentIndex / 2); } } pop() { if (this.heap.length === 1) return; if (this.heap.length === 2) { return this.heap.pop(); } const returnValue = this.heap[1]; this.heap[1] = this.heap.pop(); let currentIndex = 1; let leftIndex = 2; let rightIndex = 3; while ( this.heap[currentIndex] < this.heap[leftIndex] || this.heap[currentIndex] < this.heap[rightIndex] ) { if (this.heap[leftIndex] < this.heap[rightIndex]) { const temp = this.heap[currentIndex]; this.heap[currentIndex] = this.heap[rightIndex]; this.heap[rightIndex] = temp; currentIndex = rightIndex; } else { const temp = this.heap[currentIndex]; this.heap[currentIndex] = this.heap[leftIndex]; this.heap[leftIndex] = temp; currentIndex = leftIndex; } leftIndex = currentIndex * 2; rightIndex = currentIndex * 2 + 1; } return returnValue; } } 심지어 문제 구조에서, 힙에 들어가야하는게 객체요소이면서, 객체의 어떤 Key 값에 따라서 실시간 정렬해야할 경우엔 여기서 또 out of index , key값 더 생각해서, class MinHeap { constructor() { this.heap = [null]; } isEmpty() { return this.heap.length === 1; } _swap(a, b) { [this.heap[a], this.heap[b]] = [this.heap[b], this.heap[a]]; } push(value) { this.heap.push(value); let currentIndex = this.heap.length - 1; let parentIndex = Math.floor(currentIndex / 2); // while (parentIndex !== 0 && this.heap[parentIndex].key > value.key) { this._swap(parentIndex, currentIndex); currentIndex = parentIndex; parentIndex = Math.floor(currentIndex / 2); } } pop() { if (this.isEmpty()) return; if (this.heap.length === 2) return this.heap.pop(); const returnValue = this.heap[1]; this.heap[1] = this.heap.pop(); let currentIndex = 1; let leftIndex = 2; let rightIndex = 3; while ( (this.heap[leftIndex] && this.heap[currentIndex].key > this.heap[leftIndex].key) || (this.heap[rightIndex] && this.heap[currentIndex].key > this.heap[rightIndex].key) ) { if (this.heap[rightIndex] === undefined) { this._swap(leftIndex, currentIndex); currentIndex = leftIndex; } else if (this.heap[rightIndex].key < this.heap[leftIndex].key) { this._swap(rightIndex, currentIndex); currentIndex = rightIndex; } else if (this.heap[rightIndex].key >= this.heap[leftIndex].key) { this._swap(leftIndex, currentIndex); currentIndex = leftIndex; } leftIndex = currentIndex * 2; rightIndex = currentIndex * 2 + 1; } return returnValue; } } 요로코롬 이렇게 힙구조 작성하는데만 4~5분 먹고, 그담 문제 풀이 본격적으로 시작할 수 있습니다..파이썬의 deque 같은경우는 자바스크립트에선 Queue 구조 1분. 먹고왜 사람들이 파이썬 코테로 많이 쓰는지 알겠네요..ㄷㄷ;;import heapq , 단 1초면 모듈 가져오고, 끝이네요.코테에서 import 모듈 제한 없다면 진짜 무조건 파이썬이네요 ;;
-
미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
열부분 슬라이싱 질문
행부분을 temp = board[j][i+5]로 슬라이싱하셨는데열부분은 temp = board[j:j+5][i]로는 슬라이싱이 안되나요?
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
Math.max
안녕하세요 강사님궁금한 것이 있는데요마지막에 answer = Math.max(answer, cnt)는 처음부터 못 사는 경우를 생각해서 하는건가요??answer = cnt만 해도 그냥 답이 나와가지고 궁금해서 여쭤봅니다.
-
미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
시간복잡도 기준 질문
전 강의(수의 합)에서는 시간복잡도 때문에 for문 한번만 작성해야하고 어느문제는 그냥풀어도 되는건지 그 기준이 궁금합니다.
-
미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
두 리스트 합치기 문제 질문합니다.
while(p1<n and p2<n2): if arr1[p1] <= arr2[p2]: newArr.append(arr1[p1]) p1+=1 print(newArr)위 while문에서 and를 써야만 동작되는 이유가 있을까요?저는 문제를 풀 때 and가 아니라 or로 작성하여 에러가 발생하였습니다. 둘 중 하나만 도달하면 되는데 and로 쓰는 이유를 알 고 싶습니다.