묻고 답해요
169만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
선처리 영역의 구분을 어떻게 해야할까요?
c++ 초기화 리스트 수업입니다.사진의 어셈블리 코드를 보시면,call Inventory::Inventory가 생성자의 몸체부분과 같은 중괄호로 묶여있습니다. 그렇다면 Inventory() 생성자가 선처리 영역이 아닌 몸체 내에서 호출된다고 보는게 맞는걸까요? 물론 선생님이 강의시간에 Inventory() 생성자는 선처리 영역에서 기본적으로 한번 호출된다고 하셨기때문에, 만약에 같은 중괄호에 묶여있더라도 저걸 선처리 영역으로 본다면, 그냥 몸체에 있는 첫번째 코드 int a=3;이 실행되기 전까지의 모든 어셈블리 코드는 다 선처리 영역이다! 라고 보는것이 맞을까요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
질문있습니다!
안녕하세요 큰돌님https://www.acmicpc.net/submit/5430/62168272 위 코드가 시간 초과가 납니다.다른 질문글을 봤을때, 문자열을 split에서 최악의 경우 시간 복잡도가 n^2가 된다고 하였는데 어떤 경우에서 시간 복잡도가 n^2이 되는지 궁금합니다.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-p14502 질문입니다
안녕하세요 선생님벽을 3개를 세우라고 해서 조합을 먼저 떠올렸고 영역을 구해야 한다는 부분에서 dfs를 떠올렸습니다그래서 조합과 dfs를 사용해 벽을 3개 세울때마다 dfs 및 visited배열을 매번 초기화 해주고 2차원 배열 arr을 돌면서 2(바이러스)가 나올때마다 동서남북으로 0또는 2인 곳으로 탐색해가며 영역의 크기를 구하게 해주었습니다. 예제는 분명히 다 맞는데 틀리는 이유가 뭘까요? 0또는 2로 한게 잘못된 걸까요?http://boj.kr/5d0f072fce1a471fb02deec85b4d906d
-
미해결홍정모의 따라하며 배우는 C++
복사 생성자 부분에서 질문이 있습니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 강의 9.11, 11분 21초 입니다.교수님께서 복사 생성자를 MyString(const MyString &src) { cout << "Copy constructor" << endl; m_length = src.m_length; m_data = new char[m_length]; if (src.m_data != nullptr){ for (int i = 0; i < m_length; i++) m_data[i] = src.m_data[i]; } else m_data = nullptr; } 이렇게 정의 하셨는데 해당 코드에서는 m_data의 제일 끝에 널 문자를 두지 않습니다. 제가알기로 문자열의 끝부분에는 널문자를 둔다고 기억하는데 왜 이렇게 해도 되는지 궁금합니다!
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
질문있습니다.
처음에 문제를 풀고 문제가 틀렸다고 나와서 강의까지 다봤습니다.우선순위 큐를 사용하지 않아도 풀 수 있을거 같다고 생각했고 실제로 예제도 통과 했고 다른 분이 반례가 있다고 올리셨던 것도 통과 했는데 어느 부분이 잘못되었는지 알고싶습니다.http://boj.kr/4f9206a6cf05456a8fa340a8e2fad5c4코드공유드립니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
||(or)연산자를 쓰시는 이유가 있나요?
dfs나 bfs문제를 푸실때 if(ny < 0 || ny >= n || nx < 0 || nx >= n) continue; if(a[ny][nx] == 0) continue; if(visited[ny][nx]) continue; 와 같이 or연산을 써서 조건문을 쓰시는데요. and연산자를 쓰지 않고 or연산을 쓰시는 이유가 따로 있으신가요?http://boj.kr/09a17090441545d8ad3b0b7bcac3fb4b 에서 14번 라인과 같이 and연산자로 매번 코드를 짜는데 제가 놓지고 있는게 있나 싶어 여쭈어 봅니다.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
6 - G 반례 질문
안녕하세요 선생님. 6 - G 제가 짠 코드에 대해서 질문 드립니다. 코드를 짜고나서 굉장히 놀랐는데 선생님과 코드가 거의 비슷하더라고요. 헐 내 실력이 여기까지 올랐나? 했는데 제 코드는 틀렸습니다ㅠㅠㅠ선생님 코드와 다른 점은 lo를 입력된 b+1로 한 것 밖에 없는데 왜 이거는 백준에서 3% 틀렸습니다가 나오는지 잘 이해가 안되서 질문드립니다! #include<bits/stdc++.h>using namespace std;typedef long long ll;ll x, y, ret = -1;int main(){ cin >> x >> y; ll z = (y * 100) / x; ll l = y+1, h = 1e9; ll mid; while(l <= h){ mid = (l+h)/2; if(mid * 100 / (x+mid-y) > z){ ret = mid - y; h = mid - 1; } else l = mid + 1; } cout << ret << "\n";}
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-o 시간초과
http://boj.kr/246379b4039146d9bb6c8660ce6e5dfd입력을 콘솔로바꿨을뿐인데 시간초과가납니다 무슨이유일까요
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
우선순위 큐를 사용하지 않고 그냥 제가 풀었습니다.
#include<iostream>#include <vector>#include<algorithm>#include<unordered_map>using namespace std;int n;int deadline, lamen;int main(){ ios_base::sync_with_stdio(false); cin.tie(NULL); unordered_map<int, int> check; cin >> n; vector<pair<int, int>> in(n); for (int i = 0; i < n; i++) { cin >> deadline >> lamen; in[i].first = lamen; in[i].second = deadline; } sort(in.begin(), in.end(),greater<pair<int,int>>()); for (int i = 0; i < n; i++) { int cnum = in[i].second; while (cnum >= 0) { if (check[in[i].second] >= in[i].first) { cnum--; continue; } check[cnum] = in[i].first; } } int result = 0; for (auto& a : check) { result += a.second; } cout<<result; return 0;} 이런식으로 풀어봤는데 어디가 잘못되었는지 잘 모르겠습니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
5-H: 13144 답(ret) 관련 문의
안녕하세요!5-H 13144 문제 답을 구하는 코드가 이해되지 않아 문의드립니다. ㅠㅠ 예제 : n= 5, 1 2 3 2 1 를 넣어서 값을 구해보았는데 e=3, s=0, ret=3 / e=4, s=1, ret =6 / e=5,s=2, ret=12이렇게 나오긴 하던데 ret 코드를 이해하진 못했어요..그리고 연속한 1개 이상의 수를 뽑는 경우,예제: n =5, 1 2 3 2 1 1개 뽑을 때 1,2,3 -> 3가지2개 뽑을 때 1,2 / 1,3 / 2,3 -> 3가지3개 뽑을 때 1,2,3 -> 1가지총 7가지 .. 아닌가용...ㅠㅠ그럼 시간되실 때 답변 부탁드려요.. long long s, e, cnt[100001], n, a[100001];long long ret;int main(){ scanf("%d", &n); for(int i = 0; i < n; i++){ scanf("%lld", a + i); } while(e < n){ if(!cnt[a[e]]){ cnt[a[e]]++; e++; }else{ ret += (e - s); cnt[a[s]]--; s++; } } ret += (long long)(e - s) * (e - s + 1) / 2; printf("%lld\n", ret); return 0;}
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
안녕하세요! 2 - L NBA 문제 질문이 있습니다.
안녕하세요 선생님 제가 짠 코드에 로직 상 문제가 없다고 생각이들고, 테스트 케이스에 대한 답도 정확히 나오는데 제출 시 틀렸다고 나옵니다. 혹시 제가 놓치고 있는 반례가 있는지 질문드립니다. http://boj.kr/5b06a7f086ee4f499f316de05b95f90a
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
안녕하세요. 4-B 질문 있습니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요 큰돌님 강의 잘듣고 있습니다.해당문제 관련해서 질문이 있는데요.일단 비트마스킹을 이용한 풀이법은 숙지했습니다.근데 비트마스킹을 안쓰고 풀었을때 처음에 틀렸었는데 제가 아래 올린코드에서 Reverse함수의 기저사례 단락에서 "--->이부분!" 이라고 주석표시한 부분 관련해서 궁금한게 있습니다.문제에서 동전의 뒤집기 갯수가 2보다 작을수는 없다고 해서, 전 처음에 이게 문제가 답에대한 제한조건을 걸었다고 생각해서 저렇게 2보다 큰 경우에만 min값을 갱신하도록 코드를 짰었는데요.저 부분을 없애야 정답이더라구요.큰돌님 풀이에서도 2에 대한 제한조건을 거는 부분은 없는것 같은데, 문제에서 해당 예제에관한 설명이 답의 범위에 대해서 제한을 걸어놓은게 아니라 그냥 " 뒷면갯수가 2보다 작은게 불가능하다" 라고 설명해주는 부분인데 제가 잘못이해한건가요??#include <iostream> #include <vector> #include <string> #include <thread> #include <mutex> #include <limits.h> using namespace std; int n; int coin[21][21]; int minVal=INT_MAX; void Change(int i, int j) //요소 하나 바꾸기 { if (coin[i][j] == 1) coin[i][j]= 0; else coin[i][j]= 1; } void ChangeAll(int length, char hw ,int fix) // 한줄 바꾸기('h' : 행 고정 / 'w' : 열 고정) { if (hw == 'h') for (int i = 0; i < length; ++i) Change(fix, i); if (hw == 'w') for (int i = 0; i < length; ++i) Change(i, fix); } void Reverse(int length, char fix, int fixPos) // 행 다 모든 경우의수로 다 뒤집고 열 하나씩 뒤집어보기 { if (fixPos == length) { int ret = 0; for (int i = 0; i < length; ++i) { int sum = 0; for (int j = 0; j < length; ++j){ sum += coin[j][i]; } if ((length - sum) > sum) ret += sum; else ret += (length - sum); } if(ret>=2) //------------------> 이부분! minVal = min(minVal, ret); return; } if (fix == 'h'){ for (int i = 0; i < 2; ++i){ ChangeAll(length, fix, fixPos); Reverse(length, fix, fixPos + 1); } } if (fix == 'w') { for (int i = 0; i < 2; ++i){ ChangeAll(length, fix, fixPos); Reverse(length, fix, fixPos + 1); } } } int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); cin >> n; for (int i = 0; i < n; ++i) { string s; cin >> s; for (int j = 0; j < n; ++j) { if (s[j] == 'H') coin[i][j] = 'H' - 'H' + 1; else coin[i][j] = 'T' - 'T'; } } Reverse(n, 'h', 0); cout << minVal << '\n'; }
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
5-칠무해 메모리 초과 질문
http://boj.kr/f0d087e04e7b4e30bdf6e3d226471308제한이 256MB 인데 왜 메모리 초과가 되는 건지 궁금합니다!천만 개 다 저장한다고 해도 40MB 아닌가요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
4-2 인접행렬
안녕하세요. 4-2 인접행렬 코드 관련 질문 있습니다. 우선 main 에 이중 for문을 두시고 내부에 go 라는 이름의 재귀함수를 쓰셨는데, 이중포문과 재귀함수의 역할이 동일한 것 같습니다. 아래처럼 go 함수에 재귀 부분을 지우니 똑같이 1,2,3,4 가 잘 출력되는데, 혹시 제가 놓친 부분이 있을까요?void go(int f) { visited[f] = 1; cout << f << '\n'; // for (int i = 0; i < n; i++) { // if (visited[i]) continue; // if (v[f][i]) go(i); // } } int main() { for(int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { if (v[i][j] && visited[i] == 0) go(i); } } }
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
수업질문
62187478번 소스 코드 (acmicpc.net) 선생님 제가 짜본 코드인데기존 해설에는 회의시간 끝을 사용해 sort를 하는데저는 강의 듣기 전에 일단 회의시간 시작을 사용해 코딩을 했습니다.시간복잡도는 회의시간 끝을 사용한게 훨씬 좋은거 같긴하네요.근데 제가 짠 코드가 예제들을 돌려도 맞는데어디가 틀린지 모르겠습니다.채점 시 : "틀렸습니다" 로 명시됩니다.감사합니다.
-
해결됨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