묻고 답해요
169만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-F, 11655번 소문자의 경우 출력값 깨짐
// 정답코드 else if(S[i]>='a' && S[i]<='z'){ if (S[i] + 13 > 'z'){ S[i] = S[i]-26+13; } else{ S[i] = S[i] + 13; } } // 입력: Baekjoon Online Judge // 출력: Onrxwbba Bayvar Whqtr // 오류 코드 else if(S[i]>='a' and S[i]<='z'){ S[i] = S[i] + 13; if (S[i] > 'z'){ S[i] = S[i]-26; } } // 입력: Baekjoon Online Judge // 출력: Onrxwbba Bayvar W굌tr문자를 if문에서 비교하기전에 13을 더하면 Judge의 ud부분이 깨지는데 정답코드와 왜 다른건지 궁금합니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
x와 hi에 대해
안녕하세요이전에도 비슷한 질문이 있었지만 그래도 이해가 잘 가지 않아 질문남깁니다. 문제에서형택이는 앞으로 게임을 다 이긴다하지만 형택이의 게임 기록은 지울 수 없다게임 기록은 이렇다게임 횟수 x : 1~10억이긴 게임 y : 0~X이렇게 되면 게임 횟수 x는 여태까지 진행한 게임 횟수이지 앞으로 할 수 있는 게임의 횟수는 아닌 것 아닌가하는 의문이 생깁니다.강의의 계산식에서도 게임 횟수를 여태까지 진행한 횟수라고 상정하고 초기 z의 계산이 진행되어 있습니다.고민하는 동안 앞으로 몇 판의 게임을 최대값으로 두고 게임을 진행해야하는지 알 수 없기 때문에 이분탐색으로 계산을 진행할 수 없었습니다.수학적인 부분이 약해서 수학적으로 선행된 게임의 횟수가 x라면 추가로 x번 진행하면서 x번 전부 승리했을 때 확률이 바뀌지 않는다면 해당 확률은 변할 수 없다라는 식으로 처리되는 것인지는 잘 모르겠네요 단순히 x가 최대 10억이기 때문에 hi도 10억까지로 잡는다고 하는 부분이 이해가 잘 가지 않아서 질문글을 남깁니다.감사합니다.
-
미해결C++ Let's Make Games
TextRpg 상속 첫번쨰 강의에서 그대로 따라 친거같은데 value.h의 data가 초기화 되지 않았다고하는데 초기화 했었나요?
제목이 질문입니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
5-S 질문있습니다!
안녕하세요 큰돌 강사님 코드에 대해 질문있습니다공유 코드입니다http://boj.kr/6afa87cbba6042c59e5314d9cd919887문자형 백터에 연산자를 모두 넣고 연산자 인덱스를 백트레킹하여 순열을 구한 뒤 백터에 대입해서 풀었습니다.해설에 있는 코드와 실행시간 차이가 꽤 많이 나는데 두 코드가 어떤 부분에서 효율성의 차이가 나는지 궁금하여 질문 남깁니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-I 시간초과
아래 코드가 시간초과가 나는데 이유를 모르겠습니다. https://www.acmicpc.net/source/62130856ekjongh@gmail.com
-
해결됨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%쯤 시간 초과가 나는데 혹시 이유가 있을까요?