묻고 답해요
169만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-S 문제를 파이썬으로 풀을 때 질문
위 문제를 파이썬으로 시도했습니다. 몇 주 동안 cpp하다가 파이썬으로 하니 파이썬이 불편함이 있네요..아래 코드를 실행한 경우, 시간 초과가 떴습니다. 제 생각에는 cpp 내용으로 파이썬 문법으로 그대로 옮겨 적은 거나 마찬가지라고 생각하는데요.from sys import stdin def main(): ret = 0 ans = [] n, m = map(int, stdin.readline().split()) visited = [0 for _ in range(n + 1)] tree = [[] for _ in range(n + 1)] def dfs(root: int): visited[root] = 1 cnt = 1 for there in tree[root]: if not visited[there]: cnt += dfs(there) return cnt for _ in range(m): a, b = map(int, stdin.readline().split()) tree[b].append(a) for i in range(1, n): cnt = 0 visited = [0 for _ in range(n + 1)] if len(tree[i]) != 0 and not visited[i]: cnt = dfs(i) if cnt > ret: ans.clear() ret = cnt ans.append(i) elif cnt == ret: ans.append(i) s = "" for i in ans: s += str(i) + " " print(s) if __name__ == "__main__": main() cpp 쓰다가 파이썬을 쓰니 초기화하는 것도 불편하고, 시간도 많이 걸립니다. (오랜만에 파이썬으로 다시 짜보면 무슨 느낌일지 궁금해서 시도해봤습니다. 아직은 병행하지 않고, 강의 완주 후에 파이썬으로 해볼 생각입니다. 파이썬을 사용하려는 이유는 파이썬을 사용하는 백엔드 회사에 들어갈려고 하거든요. 백엔드로 취업할려면 자바 스프링하라는 영상을 이미 시청했습니다.)main 안에다가 변수를 선언하고 그 안에 dfs 함수를 사용해서 클로저 방식으로 사용해봤는데요. 클로저를 사용 안하고 아래 조건문 안에 선언한 후,if __name__ == "__main__": ... visited = [0 for _ in range(n + 1)] main() 아래 코드처럼 dfs()를 호출하기 전에 visited를 초기화했음에도 불구하고도, for i in range(1, n): cnt = 0 visited = [0 for _ in range(n + 1)] if len(tree[i]) != 0 and not visited[i]: cnt = dfs(i) dfs()는 main()을 호출하기 전 visited를 인식하여 문제 풀이에 에러가 발생하는 것 같습니다. 일반적으로 변수를 선언한 후, 초기화하면서 변수에 그 값을 담는 방식이라면 파이썬은 이와 달리 변수 이름이 그 값에 라벨링처럼 지시하는 방식이라서 새롭게 변수를 생성하여 다른 변수로 인식하는 것 같습니다.global 이나 nonlocal 로 선언하여 사용하는 방식이 있으나, 이런 경우 시간 초과가 발생하더군요. 어떻게 해결할 수 있을까요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
질문드립니다.
안녕하세요. 강의 잘 듣고있습니다.아래 코드 체크 한번만 부탁드립니다...답과 차이는 child++ 대신 리스트 사이즈로 체크했는데 어떤 반례가 있는지 모르겠습니다.감사합니다 :)http://boj.kr/9d478a7184dd4667ba1266a2ac37acb0
-
미해결C++ Let's Make Games
혹시 마리오게임 만드는 예제에서 헤더파일하고는 어디있나요?
넘겨가면서 보느라 이전 강의들에 있나 찾아보는데도 안보여서 Core.h 파일이 갑자기 생겼네요
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-H 맞왜틀 질문
안녕하세요.두 로직이 같은 것 같은데 하나는 맞고 하나는 틀려서 질문드립니다.부분합 계산하는 로직은 똑같은데, 답지 풀이와 다르게 처음에 부분합을 구하고 한 칸씩 옮기면서 다음 값들을 빼고 더하는 로직입니다.<맞는 코드>http://boj.kr/71648b379df54b9da80fe0b80ec8ca33#include<bits/stdc++.h> using namespace std; int N, K, num; vector<int> temperatures; int main(){ ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); cin >> N >> K; for (int i = 0; i < N; i++) { cin >> num; temperatures.push_back(num); } int sum = 0; for (int i = 0; i < K; i++) { sum += temperatures[i]; } int ret = -10000000; ret = max(sum, ret); for (int j = K; j < N; j++) { sum = sum + temperatures[j] - temperatures[j - K]; ret = max(sum, ret); } cout << ret << "\n"; }<틀린 코드>http://boj.kr/c2a7e69a69f6426d87429b3920570c4c#include<bits/stdc++.h> using namespace std; int N, K, j; vector<int> temperatures; int main(){ ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); cin >> N >> K; for (int i = 0; i < N; i++) { int num = 0; cin >> num; temperatures.push_back(num); } int sum = 0; for (int i = 0; i < K; i++) { sum += temperatures[i]; } int ret = -10000000; ret = max(sum, ret); j = K; do { sum = sum + temperatures[j] - temperatures[j - K]; ret = max(sum, ret); j++; } while (j < N); cout << ret << "\n"; }사실 변경점이 do-while문을 for문으로 바꾼 것 밖에 없는데 맞더라구요...혹시 제가 발견하지 못한 차이점이 있을까요?좋은 강의 감사합니다. ㅎㅎ
-
미해결홍정모의 따라하며 배우는 C++
전처리기 질문
#include <iostream> #include <algorithm> using namespace std; #define MY_NUMBER 333 #define MAX(a, b) (((a) > (b)) ? (a) : (b)) //#define LIKE_APPLE void doSomething() { #ifdef LIKE_APPLE cout << "Apple " << endl; #endif #ifndef LIKE_APPLE cout << "Orange" << endl; #define LIKE_APPLE doSomething(); return; #endif } int main() { doSomething(); //cout << MAX(1+3+4-3,2) << endl; //cout << std::max(1 + 3, 2) << endl; return 0; }위에서 doSomething()안에서 LIKE_APPLE이 정의되어있지 않았을 시, #define LIKE_APPLE로 정의를하고싶은데, 불가능한가요? GPT를 돌려도 원하는 답이 나오지 않아서,,,,
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
[4-A] 질문입니다
안녕하세요, 틀린 코드에서 일부를 바꿨더니 맞았는데 이해가 되지 않아 질문을 드립니다. cost <= minCost 일때 최소 비용과 선택된 항목들을 갱신할 경우 사전순으로 뒤쪽인 것이 덮어쓰기 때문에 sort가 반드시 필요하게 되지만cost < minCost일때만 갱신할 경우 앞쪽에서 같은 비용인게 먼저 나왔다면 뒤에선 갱신되지 않기 때문에 사전순으로 앞쪽인 답이 나온다고 생각했습니다. for문을 오름차순으로 돌리고 있기에 사전순이 뒤집힐 이유도 없을텐데 어디서 문제가 생기는 걸까요?http://boj.kr/c09cb2b0628143d48288d23ea6a78b82
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
dev c++ 에서 c++98 이라 for-each 구문이 적용이 안되요.
혹시 devc++ 에서는 어떻게 해결할수잇나요?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
효율적인 코드인지, 강의에서 이해되지 않는 부분이 있습니다.
안녕하세요.첫번째 링크는 해설 듣기 전 제가 작성한 코드고 두번째 링크는 큰돌님 정답 코드입니다.먼저 제가 짠 코드가 괜찮은 코드인지 의견 듣고 싶고,또 큰돌님께서 짠 코드중cnt[a - 'a]이 부분이 이해가 가지 않습니다.'a'가 아스키코드인 97로 변한다는 것은 이해했습니다. 그런데a는 타입이 char니까 baekjoon을 입력받으면 반복문으로 들어갔을땐cnt[b - 97], cnt[a - 97], cnt[e - 97]...이렇게 되야하는게 아닌가요..?실제 작동은 cnt[98 - 97], cnt[97 - 97], cnt[101 - 97]이렇게 되는데char 타입의 a가 왜 아스키코드로 변하는지 잘 모르겠습니다.감사합니다.http://boj.kr/e1b91e80fb9d4a68a4e83d27661576c5https://www.acmicpc.net/source/share/1a1898996c8542889b32b4c1b2498dd0
-
미해결홍정모의 따라하며 배우는 C++
min_score 질문
int main() { //const int num_students = 5; int scores[] = { 84,92,76,81,56 }; const int num_students = sizeof(scores) / sizeof(int); int max_score = 0; int min_score = 0; int total_score = 0; for (int i = 0; i < num_students; i++) { total_score += scores[i]; //max_score = (max_score < scores[i]) ? scores[i] : max_score; if (max_score < scores[i]) { max_score = scores[i]; } if (min_score > scores[i]) { min_score = scores[i]; } } double avg_score = static_cast<double>(total_score) / num_students; cout << max_score << endl; cout << min_score << endl; return 0; } 여기서 min_score값을 100으로 올리니까 값이 나오는데 min_score값을 왜 올려야 하는건가요??
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
BFS/DFS 학습 중에 궁금한 점
안녕하세요, 큰돌 강사님!!졸업하고 취준 기간에도 꾸준히 학습을 하면서 도움을 받고 있습니다. 지금 BFS/DFS 복습을 하면서 궁금증이 생긴 것이 있는데, 코드 상으로 void dfs(int y, int x){visited[y][x]=1;for(int i=0; i<4; i++){ if(...visited[ny][nx]) continue;}}와 visited[y][x]=1 코드 없이 그냥 dfs를 하는 것의 차이는 무엇인 가요? 2주차에서의 dfs와 3-C 인구이동에서의 dfs의 차이점이 궁금합니다~~
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
시간초과가 나옵니다
안녕하세요 좋은 강의 감사합니다.저는 _mp[세로줄][점선] 이렇게 생각해서 구현했습니다.문제에서 나온것과는 다르게 사다리가 놓을수 있는 곳을 세로로 생각해서 코드를 짰습니다. 그래서 UP DOWN이 있습니다.구현과정에서 인덱스는 0부터 시작하도록 설정했습니다.http://boj.kr/a4dda6bde3c04184b402349de75eefbc시간초과가 나서 수정해보다가 안되서 질문올립니다. 감사합니다.
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
sasm 오류
sasm 수업 아무리 다시 보고 따라 해도 처음부터 오류가 뜨는데 sasm으로 하는 수업 전부다 버리고 c++만 들어도 될까요? 11만 원 주고 강의 구매했는데 .. 그냥 버리기 너무 아까워요 ..
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
4-F질문입니다.
안녕하세요, 큰돌님아래코드의 시간 복잡도는 2^26 * 50이라고 생각해서 1초안으로 통과 된다고 생각하는데, 시간초과가 나는 이유가 궁금합니다.저의 계산법 2^26 == 10^7 10^7 * 50 = 10^81초 == 10^9통과가능https://www.acmicpc.net/source/61972721
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
4-F 질문입니다
안녕하세요, 큰돌님완전탐색을 해서 풀었습니다.제가 생각한 시간초과의 이유가 맞는지 궁금합니다.2^26으로 하면 시간복잡도는 대충 10^7? 10^8정도인데, cal연산의 시간복잡도는 어림잡아 50*15을 해서 10^3 정도여서 10^8 * 10^3 을 하면,시간복잡도는 어림잡아 10^11 정도가 되어 시간초과가 나는건가요?https://www.acmicpc.net/source/61970109
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
7-F 1로 만들기 2 질문
맞은 코드:http://boj.kr/ed84ee795122447db8c315de4b963c10틀린 코드 (시간 초과) : http://boj.kr/fb273c695c8844afb5f3d72ff539970e안녕하세요 강사님 :)해당 문제에서 시간 초과가 계속 나서 이것저것 고쳐보다가 결국 정답을 받긴 했는데.. 정답 코드와 틀린 코드가 물론 다른 코드이지만, 맞고 틀리고에 어떤 영향을 준 것인지 이해가 잘 되지 않아서 질문드립니다. 두 코드의 차이점은 간단하게 tracing을 위한 코드인 while문에서의 차이입니다. 맞은 코드는 while문을 첫 번째 정답인 dp[n]의 최솟값만큼 반복합니다. int temp = n; int repeat = dp[n]; while(repeat--) { cout << temp << ' '; temp = prev_[temp]; } cout << 1 << '\n';틀린 코드는 while문(tracing)을 1이 나올 때까지 반복합니다. int temp = n; while(1) { cout << temp << ' '; temp = prev_[temp]; if(temp == 1) break; } cout << 1 << '\n';틀린 코드는 98~99%쯤 시간 초과가 나는데 혹시 이유가 있을까요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-E 뮤탈리스크 질문있습니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요 강사님강의 잘듣고 있습니다. 3-E 뮤탈리스크 문제 관련해서 질문이 있는데요.풀이강의 듣기전에는 저런식으로 재귀함수를 생각했는데요.데미지를 계산하는 함수를 만들고 그 안에 데미지 9,3,1에 대해서 순열을 계산해서 나온 6개에 대한 재귀함수를 각각 작성해서 끊임없이 내부에서 돌다가, SCV 3개의 피가 모두 0이하가 되면 return 해서 빠져나오는걸 생각했습니다.뭐 보시다싶이...모든 케이스 다 틀리게 나오고 cnt도 1000이상씩 증가하는거보면 완전히 로직도 이상한것 같습니다만디버깅 돌려봐도 워낙 복잡해서 그런지... 어디서 잘못된거지 정확히 이해가 안가서요.혹시 로직이 어떤게 잘못된거지 봐주실수 있나요?아니면 아예 접근법 자체가 완전히 틀려서 안되는건지 궁금합니다.....#include <iostream> #include <vector> #include <algorithm> #include <queue> #include <climits> using namespace std; int cnt = 0; int ret = INT_MAX; int n,aa,bb,cc; void attack(int a, int b, int c) { cnt++; if (a <= 0 && b <= 0 && c <= 0) { ret = ret < cnt ? ret : cnt; //cout << "cnt : " << cnt << " a : " << a << " b : " << b << " c : " << c<<endl; cnt--; return; } attack(a - 9, b - 3, c - 1); attack(a - 9, b - 1, c - 3); attack(a - 3, b - 9, c - 1); attack(a - 3, b - 1, c - 9); attack(a - 1, b - 3, c - 9); attack(a - 1, b - 9, c - 3); } int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); cin >> n >> aa >> bb >> cc; attack(aa, bb, cc); cout << ret << '\n'; }
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
1-12 스택메모리 push함수
25분 쯤에 나오는 이전에 rax, rbx를 중요한 용도로 쓰고 있었을 때push rax를 하셨는데이미 중요한 용도로 rax를 쓰고 있는데 그걸 rax에 대입한다면 말이 안되고... push rax하면 rax에 쓰고 있던 중요한 값들이 어디에 저장되나요???
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
1-12. 스택 메모리 16분 주변에 나오는 "이전BP값"이 어디를 가리키는거에요??
아무리 봐도 모르겠어요
-
미해결언리얼 엔진4 입문 (C++ 기반)
mac 맥북 vscode 로 UE 5.2 버전을 열고 싶은데 지원가능한 부분인가요?
mac 에서 vscode 로 UE 5.2 버전을 열고 싶은데 지원가능한 부분인가요?여기저기 찾아봤을 땐 아직 지원이 안되는 것 같은데 혹시나 해서 질문드려봅니다 !
-
미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
90번 심바문제 질문입니다.
안녕하세요 선생님의 코드를 보면서 이해가 안가는 부분이 있습니다. 영상에서 64~66번째 줄에서 ch[i][j]=0으로 초기화를 시키는데 그 이유가 뭔지 알 수 있을까요? 제 생각엔 심바가 이동을 한 map에서만 0을 적용해서 구하면 될 거 같은 생각이 들어서 질문드립니다.