묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-F 괄호의 의미가 누적합으로 풀어라는 뜻이었군요
괄호를 넣네 마네 (,),안넣 3가지 경우 시간 복잡도 3^n인가 고민 하고 있었는데 풀이가 완전 다른거 였네요근데 정답이 -21억(=2^31)~21억인데 왜 ret=-9억~ 이렇게 해도 맞는거죠? ㅠㅠ
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-O 15684 사다리조작 질문입니다.
안녕하세요. 해설 코드 중에 질문이 있습니다.go 함수에서void go(int here, int cnt) { if (cnt > 3 || cnt >= ret) return; if (check()) { ret = min(ret, cnt); return; } for (int i = here; i <= h; i++) { for (int j = 1; j < n; j++) { if (visited[i][j] || visited[i][j - 1] || visited[i][j + 1]) continue; visited[i][j] = 1; go(i, cnt + 1); visited[i][j] = 0; } } } for (int j = 1; j < n; j++)j 에 대한 for문을 제 생각에는 n을 포함하지 않아야 한다고 생각합니다. 그렇게 돌리면 정답으로 처리가 되기도 하고요. 그런데 n을 포함하면 N번째 세로선에서 오른쪽으로 이동하는 가로선이 추가될 수 있는건데 실제로 그렇게 추가할 수 없잖아요? 그럼에도 불구하고 n을 포함하여 코드를 실행해도 왜 정답처리 되는건지 궁금증이 생겼습니다. 예를 들어 가능한 반례로써 for문에서 j = n 인 경우 N번째 세로선과 가상의 N+1 번째 세로선 사이에 가로선이 2개만 추가되어도 check에서 true를 반환할 것인데 이런 반례가 존재하는 경우는 전부 가로선을 전혀 추가하지 않아도 되는 경우뿐이라 cnt = 0에서 바로 끝나서 그런게 아닌가 합니다. j 를 n보다 큰 수 까지 가능하게 범위를 설정해서 돌리면 실제로 틀리지는 않고 시간초과만 뜨긴 합니다. 결과적으로 j = n 까지 가능하게 하는것이 답을 계산하는데는 틀리지는 않지만 조금 비효율적이지 않나 싶습니다. 이론적인 실제 범위인 j를 n - 1까지로 설정하면 시간이 33%정도 줄어들기도 하고요.이부분에 대해 어떻게 생각하시는지 질문드립니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
[5_R]문제해설에서 100의 의미가 무엇인가요?
안녕하세요! 문제 해설 : http://boj.kr/db0d13a9155748f38feda4624064efd9에서, move함수나 ismal함수에 '인덱스가 100이면' 이라는 조건이 있는데 이 부분이 잘 이해가 안됩니다. ㅜㅜ.말이 윳놀이 판에서 통과한 경우를 의미하신건가요?? 만약 그렇다면, 다른 값이 아니라 100이라고 주신 이유가 있나요? 감사합니다!
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-C 메모리 초과 이슈
똑같이 쓴것 같은데 백준에서 메모리 초과가 뜨네요 ㅜㅜ 그리고 제 컴퓨터로 돌려봐도 출력이 1밖에 안나옵니다..ㅜㅜ 도저히 제 눈으로는 문제를 못찾겠네요 도와주세요~~https://www.acmicpc.net/source/69075967
-
해결됨코딩테스트 [ ALL IN ONE ]
최종 진도
안녕하세요, 혹시 최종 진도가 [섹션 9. [심화] Backtracking]까지 일까요? 아니면 다른 부분도 추가로 업데이트가 될까요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
이렇게 아이디어를 요구하는 문제도 자주 출제되나요?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 선생님 실제 코딩테스트에서도 이렇게 수학적 아이디어를 사용한 문제들이 자주 출제되나요?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
cin에 대해서 질문이 있습니다.
for(int i = 0; i < R; i++){ for(int j = 0; j < C; j++){ cin >> a[i][j]; } } 답안 코드에서 입력을 받을 때 사용하신 코드입니다.cin은 개행문자 이전까지 입력받는 것으로 알고있는데, char 형 배열에 사용될 때는 다른 방식으로 작동하는 건가요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
8-H maxN 설정
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요. 강사님, 이 문제를 풀다가 maxN의 크기를 39로 정한 이유를 알고 싶어서 문의드립니다. 문제에서는 n이 충분히 클 때, 1 ≤ M ≤ 230-1 이라는 조건만 있는데요. 코딩테스트 풀 때, 이런 제한에서 max_N을 설정하는 것이 어려운데, 어떤 원리로 정하는지 알고 싶어요. 이와 별개로, 제가 코딩테스트 그동안 7여개 정도 풀었는데,다 성적이 좋지 않더라고요...ㅜ - ㅜ혹시 만약에, 추후 강의 보강이나 자료 업데이트 계획이 있으시다면, 코딩테스트 직전에 보면 좋을 정리 올려주시면 너무 좋을 것 같습니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
4-A 질문입니다,
맵을 이용해 key와 value 활용에 대해 궁금한점이 있어 질문남깁니다. 일단 맵 key요소는 중복이 안되는것으로 알고있습니다. ret_v[ret].push_back(v) 를 하게되면 ret이라는 키에 벡터를 넣는건데 만약 가격이 700짜리가 2개있다 치면 키가 충복이 되어 오류가 뜨는것이 아닌가요? 혹시 다른방법으로 vector<pair<int,vector<int>>> ret_v 이것으로도 구현이 가능한지 궁금합니다.
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
map과 filter를 이용하여 풀어보았습니다.
반복문 한가지로 해볼려고 했으나, 안될것 같네요 ㅠㅠ function solution(array) { return array.map((v) => { return array.length - array.filter((z) => v >= z).length + 1; }); } //console.log(solution([87, 92, 92, 92, 76])); console.log(solution([87, 89, 92, 100, 76]));
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
sort 사용해도 괜찮은 걸까요?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
5-H 13144
등차수열의 합이 등장하는 이유를 잘 모르겠습니다.교안에도 공식만 나와있고 언제 활용해야 하는지에 대한 정보는 안 담겨 있어서요.그냥 직접 세 보니까 어라? 등차수열의 합 공식의 결과랑 동일하니까 이걸로 가자!라는 논리로 등장한 것인가요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1주차 개념 #10. 구현과 문제를 푸는 방법의 기초(질문 있습니다)
자바스크립트 같은 경우에는 배열 메서드를 까먹었다 싶으면 MDN 사이트를 들어가서 찾아보잖아요? C++도 비슷한 사이트가 있나요?
-
해결됨2주만에 통과하는 알고리즘 코딩테스트 (2024년)
정수론 강의 관련 질문입니다.
정수론의 22분 경의 문제가 이해가 안되어서 질문드립니다. 176~177 사이라는 조건에서는 176은 16으로 완전히 나누어떨어져서 16 + 소수(1) = 17은 이해했는데,22분~ 즈음에 4같은 경우에는 2가 두번이라 4라는 뜻이 이해가 안됩니다. 176과 같은 논리면 4는 2로 나누어떨어지니 2가 나와야 되는거 아닌가 생각이 들어 질문드립니다. 위의 연장선으로 27분 즈음에 2^0 은 1 이니 82로 나누어지는 숫자들의 수 만큼 + 1*(8/2)4로 나누어떨어지는 숫자들의 수 만큼 + 2*2여기까지는 이해8로 나누어떨어지는 숫자들의 수만큼은 + 4*1여기서는 4*1 이 아니라 3*1 이 아닌지1,2,4,8 이 약수가 되는데 1은 이미 처리 했으니 1은 제외해서 3 * 1 더해져야될 것 같은데 ㅠ 수학을 못해서 좀 어렵네요 답변주시면 감사하겠습니다.
-
해결됨독하게 C를 배운 사람을 위한 선형 자료구조
섹션4 범위검색 강의 질문있어요.
올려주신 자료 04_RangeSearch02에서 void SearchByAge(void) 함수 마지막 부분 질문있습니다.SearchByAgeRange함수에서 동적할당한 주소를 리턴하고void **pResult로 받았습니다. void** pResult = SearchByAgeRange(min, max, &cnt);USERDATA* pTmp = NULL;for (int i = 0; i < cnt; ++i){ pTmp = (USERDATA*)pResult[i]; printf("%d, %s, %s\n", pTmp->age, pTmp->name, pTmp->phone);}free(pResult); <----요부분입니다.이제 해제를 해줘야 하는데요free(pResult)를 한 번에 해도 괜찮은건가요?아니면 for문 돌릴 때 free(pResult[i])로 해야하나요?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
사이클
그래프의 특정 정점에서 출발하여 돌아다니다가 다시 처음 출발했던 곳으로 되돌아 갈 수 있으면 사이클이 있다고 하는데4분 40초에 있는 이 그림에서 0-1-2를 잇는 사이클이 있는 것 아닌가요..? 왜 사이클이 없는건지 궁금합니다!
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
공간복잡도 질문있습니다.
공간복잡도 질문있습니다.1.최대 범위<-코딩테스트에서 이것만 보고 풀어라2.메모리 제한 100,000만까지는 ok을 두고 풀라고 하셨는데https://www.acmicpc.net/problem/14502 이문제에서 최대범위인 (3 ≤ N, M ≤ 8) 3*8인 24까지 보고 풀면 되는건가요? 혹시 최대 범위도 제한이 있나요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
8-D 북서풍
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요. 강사님 ,3시간 가량 이 문제를 붙잡아도 도저히 이해가 되지 않네요.. ㅜ - ㅜ 아래 코드에서 find_index 함수의 역할이 너무 어려워요. 왜 update(find~+1) 을 하는건지, find_index 함수는 뭘 출력하는건지 모르겠어요. v[i].second의 인덱스 출력은 아닌 것 같고, v[i].second의 개수도 아닌 것 같고... 강의를 3번 듣고, 구글링도 많이 해봤는데..혼자 계속 고민해봤자 답이 안나올 것 같아요. <아래 코드 출력값>-10 -10 10 10 -10 => 110 => 2-10 => 110 => 2 ll ret = 0; cout << "\n" << v[0].second << " => " << find_index(v[0].second) << "\n"; update(find_index(v[0].second) + 1, 1); for (int i = 1; i < n; i++) { int idx = find_index(v[i].second) + 1; cout << "\n" << v[i].second << " => " << find_index(v[i].second) << "\n"; ret += 1LL * sum(idx); update(idx, 1); }
-
해결됨코딩테스트 [ ALL IN ONE ]
bfs 코드를 공부하면서 트리에서의 levelorder 구현 방식에 대해 질문이 있습니다.
from collections import deque def levelorder(root): if root is None: return visited = [] q = deque() q.append(root) while q: cur_node = q.popleft() visited.append(cur_node.val) if cur_node.left: q.append(cur_node.left) if cur_node.right: q.append(cur_node.right) return visitedlevelorder 코드는 위와 같은데요. 여기서 q.append(root) 를 bfs 코드와 같이 사전에 queue = deque(root)로 미리 넣어줘도 되지 않나요? 이렇게하면 오히려 q.append(root)를 하는데 걸리는 런타임을 더 줄일 수 있을 것 같아서요
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
reduce방식으로 풀어보았습니다.
감사합니다.function solution(array) { let continuous = 0; return array.reduce((pre, current) => { current === 1 ? continuous++ : (continuous = 0); return pre + continuous; }, 0); } console.log(solution([1, 0, 1, 1, 1, 0, 0, 1, 1, 0]));