안녕하세요 선생님! 저는 3-D (4179) 문제를 다른 방식으로 풀었어요. 불이 확산되는 속도 vs 사람이 빠져나가는 속도를 비교한게 아니라, 매 loop마다 불을 먼저 확산시키고, 그다음 사람을 움직여보면서 탈출 가능여부를 체크했어요. 또한, index를 0이 아닌 1부터 사용하도록 구현해두어 그에 맞게 조건문들도 구현해두었고요. 제가 만든 테스트 케이스, gpt가 만들어준 테스트 케이스는 전부 통과하는데 백준에서는 계속 틀렸다고 나오네요. 어떤 테스트 케이스에서 걸리는건지 도통 모르겠는데, 도와주실 수 있으신가요? http://boj.kr/fafb46e051fc462fb1c2e8c1f12c403f
안녕하세요! 지금 알고리즘 책을 보면서 공부 중인데, 사소한 의문이 생겨 질문드립니다. 책에서는 구간합 배열을 저장하는 S 벡터와 나머지 카운트를 저장하는 C 벡터의 자료형을 long 으로 사용하고, 정답을 누적하는 answer 는 long long 으로 선언하셨습니다. 조건을 보면 구간합 배열의 원소가 최대 101510^{15}1015까지 커질 가능성이 있어, long long 을 쓰는 것이 안전해 보입니다. 그런데 책에서는 S 와 C 에 long 을 사용한 것이 의아했습니다. 조사를 해보니, 백준 온라인 저지의 채점 환경은 64비트 Linux 라서 long 이 8바이트로 long long 과 동일한 크기라는 것을 알았습니다. 그런데 answer 는 굳이 long long 으로 선언한 특별한 이유가 있는지 궁금합니다. 혹시 제가 놓친 자료형 선택의 의도가 있을까요?
http://boj.kr/08916a4be30641928e5ee933aa6ccc62 해당 문제풀이에서 뭐가 잘못됬는지 잘 모르겠습니다. 테스트 코드는 잘 돌아가는데 어떤 부분에서 논리적오류가 발생했는지 알수있을까요 풀이 로직은 1과 2의 스코어가 같을때 이전에 이기고 있던 사람이 있다면 ret에 더해주기 이고 승부가 갈리는 시점만 시간을 기록해둔다 입니다/. 그래서 s1-s2==1이고 이전에 비기고 있던 상태 즉 winner==0이라면 해당 시점의 승자를 1로 세팅하고 시간을 기록하고요 s1==s2로 같이지고 이기고 있던 winner가 존재한다면 해당 시점의 시간을 정수로 저장하려합니다.
현재 RPG게임을 제작 중입니다. 캐릭터 사망 시 게임을 재시작하는 로직을 만들려고 하는데 기존에는 OpenLevel로 레벨을 다시 로드하는 방법으로 충분했지만 Lyra프로젝트의 경우 Experience를 비활성화 후 다시 활성화 하는 과정을 거쳐야 할 것 같은데 맞나요? Experience를 재시작한다면 로비에서 포탈을 탈 때 UserFacingExperienceDefinition을 통해 게임을 시작하듯이 재시작하는 방법이 가장 좋을까요?
안녕하세요! 쿼드트리 문제를 풀던 중, 도저히 감이 잡히지 않아서 4구역으로 나누어 문제를 해결해야 한다는 힌트를 얻고, 문제를 풀었습니다. 예제로 테스트 완료 후에 큰돌님 해설과 비교하는 과정에서 제 코드와 조금 다른 점을 발견했습니다. 아래 링크는 제가 작성한 코드입니다. http://boj.kr/ba004714b82449848c1e7cafc9afb6f7 go라는 함수에서 bool 값을 통해 그냥 값을 내보낼지, 괄호 안에 다시 4구역의 값을 구해 넣을지를 다음 단계에서 수행하도록 했는데, 웬만한 테스트케이스에서는 잘 통과함에도 불구하고 틀렸다는 결과가 나오더라구요 4구역으로 나누어 다시 재귀함수를 호출하는 부분이 꼭 이중for문 내부에 있어야만 하는 건가요? 틀린 이유를 찾고 싶어서 질문 드립니다 ㅜㅜ
섹션6. DirectX 11 3D 입문 강의부터 렌더링이 안됩니다. 해당 강의의 삼각형이 렌더링되지 않습니다. 혹시 제 실수일까 하여 강의 자료를 다운받아 시행해봐도, 렌더링이 되지 않네요.. (이전까지의 강의들에서는 잘 됐습니다) 해당 강의부터 파이프라인을 직접 만들어사용하지 않고, effects11.lib 을 사용하는데, 그부분에서 특정 GPU 가 읽어드리지 못하는 것이 아닌가 생각을 하고 있지만 확실하지가 않네요.. 혹시 이 문제를 해결하셨거나 원인을 찾으신 분이 계시다면, 답변 부탁드리겠습니다..
안녕하세요 강사님 강의 매우 잘 듣고 있습니다! 제 방식대로 하다가 잘 안된 부분들은 강사님 로직을 참고해서 구현해봤는데요 예시 문제는 올바르게 값이 나왔습니다. 하지만 채점을 돌리면 3%쯤에서 오답으로 나오는데... 어느 로직에서 잘못됐을까요...? 질문하기 게시판의 반례 예시는 다 맞았습니다..! http://boj.kr/43dc36e6e08c4f1985b78c9d306f4bf5
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요 항상 좋은 강의 감사드립니다! 해당 문제를 풀면서 생겼던 문제 관련해서 문의드리고자 합니다. 제가 처음 풀었던 방식은 기존 탑다운 방식과 유사하게 (초기메롱) 방식으로 풀이를 진행하였으나 아래와 같이 시간 초과가 떴습니다. https://www.acmicpc.net/submit/2294/97783160 이로 인해 재귀 방식으로 인한 시간초과인가? 바텀업 방식을 써야되구나라고 생각은 하였으나 아래와 같이 초기값을 -1로 초기화하고 진행하였을 때는 바텀업(반복문)방식보다는 조금 느렸지만 통과하였습니다. https://www.acmicpc.net/submit/2294/97784123 두 코드의 차이가 어디서 발생하는지 와닿지 않아 이렇게 문의드립니다. 감사합니다!
안녕하세요 선생님. 제가 이 문제를 재귀함수를 이용하여 스스로 풀어보았는데 , 주어진 문제의 public test case 중에서는 3 54 18 6 을 제외하고는 모두 잘 출력이 되는데 위와 같이 주어지는 csv의 체력이 커서 경우의 수가 많이 늘어나는 경우에는 한참을 기다려도 출력이 안나옵니다. 제가 생각하기에는 분명 백준 사이트에서 시간 초과로 문제를 틀릴 수 는 있지만, 내 개인적으로 돌리는 vsstudio 내에서는 그래도 어느 일정시간이 지나면 답이 출력되긴 해야할 거 같은데 ,계속 무한루프를 돌게되는 이유가 무엇인지 궁금합니다. 그리고 저런 test case 경우에 어떤 식으로 시간복잡도를 예측하고 들어가면 좋을지 문의드립니다. 항상 강의 잘 듣고 있습니다. 감사합니다. http://boj.kr/8e0b513f68164e089f604cc0d00cf216
#include <bits/stdc++.h> using namespace std; int n, m; int a[100004]; int ret = 1e6; bool check(int e) { int sum = 0; int cnt = 0; for (int i = 0; i < n; i++) { if (sum + a[i] > e) { cnt++; sum = a[i]; } else { sum += a[i]; } } if (sum != 0)cnt++; return cnt <= m; } int main() { cin >> n >> m; int l = 0; int r = 0; for (int i = 0; i < n; i++) { cin >> a[i]; r += a[i]; } while (l <= r) { int mid = (l + r) / 2; if (check(mid)) { ret = min(ret, mid); r = mid - 1; } else { l = mid + 1; } } cout << ret; } 이 코드로 제출했을때 계속 중간에서 막혔습니다. 해서 범위가 잘못됬나 싶어서 #include <bits/stdc++.h> using namespace std; int n, m; long long a[100004]; long long ret = 1e9; bool check(long long e) { int sum = 0; int cnt = 0; for (int i = 0; i < n; i++) { if (sum + a[i] > e) { cnt++; sum = a[i]; } else { sum += a[i]; } } if (sum != 0)cnt++; return cnt <= m; } int main() { cin >> n >> m; long long l = 0; long long r = 0; for (int i = 0; i < n; i++) { cin >> a[i]; l = max(l, a[i]); r += a[i]; } while (l <= r) { long long mid = (l + r) / 2; if (check(mid)) { ret = min(ret, mid); r = mid - 1; } else { l = mid + 1; } } cout << ret; } longlong 으로 바꿔서 실행한 결과 통과가 됬습니다. 하지만 int 형으로는 왜 풀리지 않는지 이해가 가지 않아서 질문드립니다. 충분히 int로도 풀려야 하는거 아닌가요? 이해가 가질 않아서 질문드립니다. 하다보니 벌써 6주차네요. 항상 좋은 강의 감사합니다. ㅎㅎ
안녕하세요 항상 강의 잘 듣고 있고 유튜브도 재밌게 잘 보고 있습니다. 제가 4주차까지 진도를 나가면서 개념 강의를 보면 이해가 되는 것 같으면서도 막상 문제를 풀려고 하면 막막합니다. (3주차부터 약간 벽느끼고 있습니다) 스스로 풀 수 있는 문제가 거의 없고 1시간 이상 시도만 하다가 해설 강의를 보는 편인데 그 마저도 고민한 해결법과 다른 경우가 많네요 아무래도 알고리즘적인 사고가 덜 잡힌 것 같아요... 진도를 계속 나가는게 좋을지, 1주차부터 돌아가서 못풀었던 문제를 다시 푸는게 좋을지 고민이 됩니다. 조언해주시면 감사하겠습니다!