- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. http://boj.kr/50bc7487d15a4569a1ed8e12e3f46c6f 메인에서 combi를 호출할 때에 combi(-1,b)로 보내는데 위의 링크 combi(0,b)로 보내고 combi 함수의 내부의 for문과 같이 바꿔도 괜찮을까요?? 개인적으로 함수를 호출할 때에 증가되는것이 보기에 더 잘 이해되서 한 번 여쭤봅니다!!
http://boj.kr/eaeaa929cfea47cea478e58406b544d1 안녕하세요. 예전에 알고리즘을 살짝 공부해서 투 포인터를 써서 array로 풀어보고 list로도 풀어 볼라 하는데 막혀서 질문드립니다. 위 코드를 보면 9개의 입력을 받는 cin반복문이 작동하지 않습니다. line 15까지만 있으면 잘 작동하는데 아래 코드들이 추가되면 안되더라구요. iterator를 잘못사용한거 같아 3시간 동안 구글링하며 씨름 해봤는데 그래도 모르겠습니다... 참고로 http://boj.kr/ed564ade48bf42768fe37164e175621b 는 array로 짠 코드입니다.
일단 저는 이직준비를 하기 위해 이 강의를 수강하고 있어서 제공되는 문제와 강의를 kotlin언어로 풀고있습니다. 제가 틀린문제라 아래 코드는 선생님의 C++ 해설코드를 그대로 kotlin 코드로 옮겨 놓은것인데요. go 함수의 종료 조건에 저 부분을 추가 하면 정답이 됩니다. 하지만, 선생님의 C++ 코드는 저런 종료 조건이 없음에도 잘 정답처리가 됩니다. 이게 로직의 차이인지.. 아니면 제가 모르는 C++ 언어의 특성으로 발생하는 일인지 잘 모르겠습니다. 왜 선생님의 코드에는 cnt가 음수가 되면 종료하는 종료 조건이 없이도 정답이 됩니까? // 방문해야할 오락실 개수가 음수라면 if (cnt < 0) return 0 fun go(y: Int, x: Int, cnt: Int, prevC: Int): Int { // 맵의 범위를 벗어난 경우 if (y !in 1..n || x !in 1..m) return 0 // 방문해야할 오락실 개수가 음수라면 if (cnt < 0) return 0 // 도착지에 도착한 경우 if (y == n && x == m) { if (map[y][x] == 0) { if (cnt == 0) return 1 } else { if (cnt == 1 && map[y][x] > prevC) return 1 } return 0 } // println("y $y, x $x, cnt $cnt prevC $prevC") if (case[y][x][cnt][prevC] != -1) return case[y][x][cnt][prevC] var pathCnt = 0 if (map[y][x] == 0) { pathCnt = (go(y + 1, x, cnt, prevC) + go(y, x + 1, cnt, prevC)) % 1000007 } else if (map[y][x] > prevC) { pathCnt = (go(y + 1, x, cnt - 1, map[y][x]) + go(y, x + 1, cnt - 1, map[y][x])) % 1000007 } case[y][x][cnt][prevC] = pathCnt return pathCnt }
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 잘 구현한 게 맞는지 궁금합니다. function solution(day, saleArr) { let answer; let start = 0; let sum = 0; let max = Number.MIN_SAFE_INTEGER; for(let end = 0; end < day; end++) { sum += saleArr[end]; } max = sum; for(let end = 3; end < saleArr.length; end++) { sum = sum + saleArr[end] - saleArr[start++]; if(sum > max) max = sum; } answer = max; return answer; } let day = 3; let saleArr = [12, 15, 11, 20, 25, 10, 20, 19, 13, 15]; console.log(solution(day, saleArr));
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 글이 삭제가 안되네요..그래서 삭제하지 못하고 이렇게 남겨놓습니다. 해당 질문 신경쓰지 말아주세요.
const solution = (nums) => { let sumNum = 0 let minNum = Number.MAX_SAFE_INTEGER let oddNums = nums.filter((num) => { return num % 2 !== 0 }) oddNums.forEach((num) => { sumNum += num if (num < minNum) minNum = num }) return [sumNum, minNum] } 위와 같이 짜봤는데 비효율적인 코드인가 싶어서 여쭤봅니다! (구지 filter와 forEach를 쓸 필요까지는 없었나 싶어서...) 효율성적인 측면에서 볼 때 어떤지 궁금합니다
Question 1 2주차 이론 블로그 내용에서 내부 노드의 정의가 '루트 노드와 내부 노드 사이에 있는 노드를 뜻합니다.' 로 되어 있는데 여기서 내부노드가 아닌 리프노드가 맞지 않나요? Question 2 2주차 문제 중 10709 기상 캐스터 문제 코드에서 다음 부분 질문입니다. for(int i = 0; i < n; i++){ for(int j = 0; j < m; j++){ if(a[i][j] == 0){ int cnt = 1; while(a[i][j + 1] == -1){ a[i][j + 1] = cnt++; j++; } } } } 위 코드에서 while 문 내부에서 조건이 계속 만족되면 증가하는데, 인덱스 에러가 발생하지 않는 이유가 궁금합니다. for (int j = 0; j < m; j++) 위 for loop 문의 j < m 까지라는 게 내부 while 문까지 적용되는 건가요? Question3 2주차 문제 4659에서 isVowel을 아래와 같은 방식으로 작성하셨는데요. bool isVowel(int idx){ return (idx == 'a' || idx == 'e' || idx == 'i' || idx == 'o' || idx == 'u'); } ... ... if (isVowel(idx))... 이를 아래와 같이 문자열로 만들어서 이 내부를 탐색하는 건 어떻게 생각하시나요? 저 위에 isVowel도 결국은 각각 일치하는지 탐색하는 거이지 않나요? string f = "aeiou"; int main() { for (char w : word) { if (f.find(w) == string::npos) ... } }
안녕하세요 선생님 강의를 보고 살짝 헷갈리는 부분이 있어 질문드립니다. Q1. 사진은 선생님이 설명해주실때 그려주신건데, 왼쪽 num[1] oper[1] num[2] 이 부분이 괄호를 쳐서 연산해주었다고 생각해도 되는건가요? 즉 제가 이문제를 접근할때 완전탐색으로 재귀호출시에 1. 괄호를 묶거나 2. 괄호를 묶지 않거나 이렇게 두가지로 생각을 해서 호출을 하려 했습니다. 사진의 오른쪽은 그냥 현재 인덱스와 그 다음 인덱스를 연산하는것이기 때문에 왼쪽부터 오른쪽으로 연산하는것 이기에 괄호연산을 하지 않았다고 판단했고, 왼쪽은 오른쪽에서 부터 왼쪽으로 연산을 했기 때문에 괄호 연산을 한것이라고 판단하였습니다. 근데 이번 인덱스를 먼저 계산하는 것이기 때문에 그 반대가 맞는것 같기도 하네요.. Q2. 그리고 또 질문은 만약 괄호를 추가하냐 추가하지 않느냐 이렇게 두가지로 가정한다면 재귀호출후 원복하는 부분이 필요할것 같은데 그 부분이 왜 따로 없는지도 궁금합니다. -> 이 부분 제가 생각해 보았는데, visited 등과 같은 전역변수 배열은 한번 체크하면 재귀 탈출후에도 체크가 남아있어서 따로 지우는 로직이 필요한 것이고, 이번 문제의 경우는 재귀함수에서 하나의 함수를 탈출하면 재귀의 특성때문에 자동적으로 선택하기 이전으로 돌아가기 때문에 따로 뭔가를 지우는 로직이 필요없는것인가요? 혹시 제가 생각한것이 맞는 생각인건가요? 아니면 아예 접근을 그런식으로 하면 안되는건가요?
안녕하세요 K번째 큰수 코드 작성중 3중 for문 만들때 아래와 같은 경우 에러가 발생하지 않을까 해서 break나 continue 를 넣어야 하지 않나 하는 생각이 들어 여쭙니다 for i in range(n): for j in range(i+1, n): for m in range(j+1, n): res.add(a[i]+a[j]+a[m]) range 가 5인 경우 i, j, m이 0, 3, 4 이후 0, 4, 5 일 때 이 경우 다른 답변에서는 for문이 멈춰버린다고 답변주셨는데 continue처럼 이 경우 작동하지 않고 다음 순환으로 넘어간다고 생각하면 될까요?