묻고 답해요
169만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
구조체 선언 위치에 따른 시간초과
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요. 해당 정답 코드를 보며 다시 풀어보고 있는데,구조체를 선언 하는 위치만 아래 코드 처럼 바꾸었는데 시간초과가나네요.. 원인을 모르겠습니다.#include <bits/stdc++.h> #define max_n 100 using namespace std; const int dx[] = {0, 0, 1, -1 }; const int dy[] = {-1, 1, 0, 0 }; int shark[max_n][max_n], R, C, M, ret, temp[max_n][max_n]; struct Shark { int y, x, s, dir, z, death; }a[max_n*max_n];84063864번 소스 코드 (acmicpc.net)
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-D 질문 있습니다.
이코드에서 DFS를 재귀적으로 호출하면 cnt 매번 1로 초기화 되서 결국은 1이 출력 되지 않나요??int DFS(int y, int x){ int cnt = 1; visited[y][x] = 1; for(int i=0; i < 4; i++){ int nx = x + dx[i]; int ny = y + dy[i]; if(nx < 0 || ny < 0 || nx >= w || ny >= h || a[ny][nx] == 0) continue; if(visited[ny][nx]) continue; cnt += DFS(ny,nx); } cout << y << " : " << x << " : " << cnt << "\n"; return cnt; }
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-I 질문 있습니다
안녕하세요 큰돌님 3-I 문제에서 왜 visited를 2차원으로 구현해야 하는 지 이해가 잘 안갑니다.. ㅠㅠ 저는 수빈이는 visited1 , 동생은 visited2 로 따로 visited배열을 만들고 각각 거리를 구해놓은 뒤에 두 개가 같은 경우 , 수빈이가 먼저 도착하고 동생이 짝수 시간 뒤에 도착하는 경우 이렇게 두 가지 경우로 해서 결과를 찾았습니다. 문제 예제는 다 통과하는 거 같긴 한데 제출하면 틀리다고 뜹니다 ㅜㅜ 그래서 궁금한 것은 1.왜 꼭 visited배열을 2차원으로 해야 하는지 제 코드대로 했을 때 예제는 통과하지만 제출하면 틀리는 이유는 무엇인지, 어떻게 수정해야 하는지 궁금합니다!!http://boj.kr/6caf1eeb09f842659601eb08eede7197
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1940번 주몽 / 배열 변수를 중간에 선언해도 되나요?
http://boj.kr/774f2ad1e5d94c7ba7b0f6273e6f4caa안녕하세요.배열변수를 int a[15001] 이렇게 잡으셨는데제 코드처럼 중간에 선언해도 되는건가요? 차이점 없나요?
-
미해결[게임 프로그래머 도약반] DirectX11 입문
타입변환해도되나요+알파
[질문1]deviceContext->DrawIndexed(indices.size(), 0, 0);이런 에러가 떴는데요1>C:\Work\Programming\DX11\BasicFramework-uv\BasicFramework\Game.cpp(60,44): warning C4267: 'argument': conversion from 'size_t' to 'UINT', possible loss of data 이렇게 바꿔도되나요?deviceContext->DrawIndexed(staticcast<UINT>(_indices.size()), 0, 0); [질문2]우여곡절끝에(첨엔 TEXCOORD스펠링틀려서,두번째는 이미지파일을 프로젝트폴더밖에 둬서) 드디어 출력은 됬는데, 알파가 안빠집니다!뭘 고쳐야할까요? (한시간째 찾는중 ㅠㅠ)(이게 정상) ---------------------(추가)그리고,쌤... 수강전질문에 답변을 강의구매후,수강완료 한참후에 달아주셨어요 ㅋ담부턴 좀 빨리 ㅋㅋㅋ 3. [해결] 이 함수를 써서 해결했습니다. 알파. 근데,,쌤은 안써도됬는데, 왜 전 이거 써야한걸까요...??? void Game::SetBlendState(){ D3D11_BLEND_DESC blendDesc; ZeroMemory(&blendDesc, sizeof(blendDesc)); // 알파 블렌딩 활성화 blendDesc.RenderTarget[0].BlendEnable = TRUE; blendDesc.RenderTarget[0].SrcBlend = D3D11_BLEND_SRC_ALPHA; blendDesc.RenderTarget[0].DestBlend = D3D11_BLEND_INV_SRC_ALPHA; blendDesc.RenderTarget[0].BlendOp = D3D11_BLEND_OP_ADD; blendDesc.RenderTarget[0].SrcBlendAlpha = D3D11_BLEND_ONE; blendDesc.RenderTarget[0].DestBlendAlpha = D3D11_BLEND_ZERO; blendDesc.RenderTarget[0].BlendOpAlpha = D3D11_BLEND_OP_ADD; blendDesc.RenderTarget[0].RenderTargetWriteMask = D3D11_COLOR_WRITE_ENABLE_ALL; ID3D11BlendState* blendState; HRESULT hr = _device->CreateBlendState(&blendDesc, &blendState); CHECK(hr); // 블렌드 상태를 파이프라인에 설정 _deviceContext->OMSetBlendState(blendState, nullptr, 0xffffffff);}
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-I 왜 틀렸는지 모르겠습니다.
vector를 string으로 풀었다가 int로도 풀어보고 싶어 약간의 수정을 하여 제출하였는데 틀렸습니다. 다만 아무리 생각해도 반례가 떠오르지 않아 왜 틀렸는지 모르겠어서 여쭤봅니다. tc는 모두 통과했습니다.vector<int> 썼다가 틀린 코드 링크http://boj.kr/5d5a3056a5804d5daf25be09844dccfcvector<string> 써서 맞춘 코드http://boj.kr/82a463f3c16545f0990aeb8d2eadb2c7 + 고민해보던 중 각 줄의 최대 글자 수가 100자인데 정수(int. long long)로 할 경우 최대 100자의 값을 받을 수가 없어서 틀렸다고 생각이 들었습니다. 혹시 맞을까요?ㅎ-I2-I
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
bfs 문제 dfs 로 풀 수 있나요?
안녕하세요. 그래프 문제만 나오면 dfs로 풀려고 합니다.ㅜㅜ 둘 중에 어떤 것으로 풀어야 하는 지 구분하는 방법이 있나요? 그리고 2589문제에서 <dfs로 짜고 기저 사례로 부터 1을 반환 시켜서 더해 나가는 방식> 또는 <dfs에 거리 파라미터를 추가하고 함수 호출할 때마다 1씩 증가시켜서 기저 사례에서 vector에 넣는 방식> 으로 풀어도 될까요?
-
미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
해당 강의에서 C언어로만 진행하는 강의 문의 건
안녕하십니까해당 강의에서 진행하는 강의 중에 C++이 아닌 C언어로만 하는 강의는 몇 번 몇 번인지 혹시 파악이 가능할까요?
-
미해결C++로 만들면서 배우는 게임 개발과 알고리즘 with Windows API
소리 크기 조정 문의
안녕하세요. 앞으로 강의가 많이 기대가 됩니다.다름이 아니라 강의 소리가 매우 작은데, 조만간 개선 계획이 있으시다면 꼭 반영 해 주셨으면 합니다.자막을 키지 않고는 수강이 어려울 정도입니다. 앞으로도 좋은 강의 잘 부탁드립니다.감사합니다.명절 잘 보내세요 ㅎㅎ
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
7-J 질문있습니다 :)
안녕하세요 선생님 🙂 이 문제를 처음봤을 때 DP방식도 떠오르긴 했지만 1개씩만 사용하는 문제다보니 그리디 방식도 떠오르더라구요. 하지만 이 문제는 K라는 무게 제한이 있다보니 그리디가 조금 빡셀 수도 있겠다 싶더라구요. 질문은 아래와 같습니다. 그리디로 설계할 수 있는 문제인지설계할 수 있다면 간단하게 가능한지, 빡센 문제인지 즐거운 명절 보내세요 ^^
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
for문 초기값 설정 방식에 대한 시간 초과 질문 있습니다.
for문의 i값의 설정 방식만 다르게 했을 뿐인데 시간 초과가 나는 점이 이해가 가지 않아 질문 드립니다.A 코드 (시간 초과가 나지 않는 코드)int solution(int n) { int answer = 0; int t = 1; while(t <= n) { int test = 0; for(int i=t; i<=n; i++){ test += i; if(test == n) { answer++; break; } if(test > n){ break; } } t++; } return answer; }B 코드 (시간 초과가 발생하는 코드)int solution(int n) { int answer = 0; int t = 0; while(t <= n) { int test = 0; for(int i=t+1; i<=n; i++){ test += i; if(test == n) { answer++; break; } if(test > n){ break; } } t++; } return answer; }해당 코드들은 프로그래머스 숫자의 표현에 대한 코드 입니다.강의와 관련없는 문제에 대해 질문 드리는 점 정말 죄송합니다.하지만 아무리 원인을 파악하려해도 파악되지 않아 부득이하게 질문 드립니다.해당 코딩 테스트 문제는 프로그래머스 숫자의 표현(하단 링크) 입니다.https://school.programmers.co.kr/learn/courses/30/lessons/12924
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
해설 코드 질문있습니다
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요, 큰돌님 강의 정말 잘 수강하고 있습니다.다름이 아니라 해당문제에서 아래 go함수가 기존의 완탐 유형인 방문처리 / go / 방문처리 해제와는 조금 다르게 max가 중간에 들어가게 되어 헷갈리는 부분이 있어서 질문드립니다. 제가 이해한바로는 각 단계에서 가능한 모든 말을 이동시키고, 각 말이 도착한 위치에서 얻을 수 있는 점수를 계산.그 중에서 최대 점수를 선택한 후, 다음 단계로 넘어가며 또다시 최대 점수를 선택하는 과정을 반복.이렇게 마지막 주사위까지 처리된 후, 각 단계에서의 최대 점수를 더한 값이 최종적으로 출력.되는 로직으로 이해하였는데, 혹시 제가 이해한대로 실행되는게 맞는지 궁금합니다.int go(int here){ if(here == n) return 0; int ret = 0; for(int i = 0; i < 4; i++){ int temp_idx = mal[i]; int mal_idx = move(temp_idx, a[here]); if(isMal(mal_idx, i)) continue; mal[i] = mal_idx; ret = max(ret, go(here + 1) + v[mal_idx]); mal[i] = temp_idx; } //cout << "RET : " << ret << "\n"; return ret; }
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
4-O 반례나 어디가 문제인지 알 수 있을까요?
#include <iostream> using namespace std; string s; int n, ans, skip; int main(void) { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin >> n >> s; for (int i = 0; i < n; ++i) { int temp = 0; int flag = 1; for (int j = i; j < n; ++j) { char c = s[j]; if ((flag == 1 && c == ')') || (j == n - 1 && c == '(')) { break; } if (c == '(') flag <<= 1; else flag >>= 1; temp++; if (flag == 1) { ans = max(ans, temp); skip = (temp - 1); } } i += skip; skip = 0; } cout << ans << '\n'; }계속 1%에서 틀렸다고 나오네요..강의를 보고 다른 방법으로 풀었으나 처음 풀었던 방식에서 어디가 문제인지 알고 싶어 질문드립니다!커뮤니티, 백준 질문 게시판에 있는 반례들을 전부 통과했습니다..
-
미해결[Rookiss University] UE5 Lyra 클론 코딩 (Haker&Liu)
lyra 프로젝트 빌드 후 실행시 문제발생
lyra 프로젝트를 다운 받고 빌드 후에 실행했는데, 아래와 같은 로그가 뜨면서 실행되지 않았습니다. 5.4.4가 깔려있는 상태에서 이전에 다른 프로젝트가 5.1이어서 이 문제일 수도 있겠다 싶어서 5.1을 지우고 다시 Generate Project를 했음에도 동일한 에러가 발생합니다. 실행환경은 12700h, 32gb Ram, 3050 laptop(4gb)입니다.다른 실행환경에서 실행이 정상적으로 되면 이 글을 업데이트하겠습니다. [2024.09.15-05.56.30:429][ 0]LogShaderCompilers: Warning: 1 Shader compiler errors compiling global shaders for platform PCD3D_SM6: C:/Users/mrs04/Documents/UE_5.4/Engine/Shaders/Private/Lumen/Radiosity/LumenRadiosity.usf(): Shader FLumenRadiosityDistanceFieldTracingCS, Permutation 7, VF None: Internal Error! Global/FLumenRadiosityDistanceFieldTracingCS/7:/Engine/Private/Lumen/Radiosity/LumenRadiosity.usf|LumenRadiosityDistanceFieldTracingCS Type 'FLumenRadiosityDistanceFieldTracingCS' '/Engine/Private/Lumen/Radiosity/LumenRadiosity.usf' Entry 'LumenRadiosityDistanceFieldTracingCS' Permutation 7 [2024.09.15-05.56.30:551][ 0]LogShaders: Error: C:/Users/mrs04/Documents/UE_5.4/Engine/Shaders/Private/Lumen/Radiosity/LumenRadiosity.usf(): Shader FLumenRadiosityDistanceFieldTracingCS, Permutation 7, VF None: Internal Error! Global/FLumenRadiosityDistanceFieldTracingCS/7:/Engine/Private/Lumen/Radiosity/LumenRadiosity.usf|LumenRadiosityDistanceFieldTracingCS Type 'FLumenRadiosityDistanceFieldTracingCS' '/Engine/Private/Lumen/Radiosity/LumenRadiosity.usf' Entry 'LumenRadiosityDistanceFieldTracingCS' Permutation 7 Fatal error: [File:D:\build\++UE5\Sync\Engine\Source\Runtime\Engine\Private\ShaderCompiler\ShaderCompiler.cpp] [Line: 10560] 플랫폼 PCD3D_SM6에 대한 글로벌 셰이더를 컴파일하는 동안 1개의 셰이더 컴파일러가 오류가 발생했습니다. Enable 'r.ShaderDevelopmentMode' in ConsoleVariables.ini for retries. A breakpoint instruction (__debugbreak() statement or a similar call) was executed in UnrealEditor.exe. A breakpoint instruction (__debugbreak() statement or a similar call) was executed in UnrealEditor.exe. [2024.09.15-05.56.40:549][ 0]LogWindows: Error: appError called: Fatal error: [File:D:\build\++UE5\Sync\Engine\Source\Runtime\Engine\Private\ShaderCompiler\ShaderCompiler.cpp] [Line: 10560] 플랫폼 PCD3D_SM6에 대한 글로벌 셰이더를 컴파일하는 동안 1개의 셰이더 컴파일러가 오류가 발생했습니다. Enable 'r.ShaderDevelopmentMode' in ConsoleVariables.ini for retries. [2024.09.15-05.56.40:549][ 0]LogWindows: Windows GetLastError: 작업을 완료했습니다. (0) [2024.09.15-05.56.40:550][ 0]LogWindows: Error: === Critical error: === [2024.09.15-05.56.40:551][ 0]LogWindows: Error: [2024.09.15-05.56.40:551][ 0]LogWindows: Error: Fatal error: [File:D:\build\++UE5\Sync\Engine\Source\Runtime\Engine\Private\ShaderCompiler\ShaderCompiler.cpp] [Line: 10560] [2024.09.15-05.56.40:551][ 0]LogWindows: Error: 플랫폼 PCD3D_SM6에 대한 글로벌 셰이더를 컴파일하는 동안 1개의 셰이더 컴파일러가 오류가 발생했습니다. Enable 'r.ShaderDevelopmentMode' in ConsoleVariables.ini for retries. [2024.09.15-05.56.40:552][ 0]LogWindows: Error: [2024.09.15-05.56.40:552][ 0]LogWindows: Error: [2024.09.15-05.56.40:552][ 0]LogWindows: Error:
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-L 질문드립니다.
안녕하세요 선생님. 먼저 해피추석 보내십쇼!!http://boj.kr/7fdb0fc2859a40888f5c0cd3583076ab 제가 궁금한 것은 두가지 입니다.위 방식대로 접근한것이 괜찮은지31번째 줄에서의 문제 31번째 줄에서 절대값을 이용했더니 답이 틀렸습니다.제출된 코드는 정답으로 나오는데 두 수의 차이에서 절대값을 넣었을 때 왜 틀리는지 모르겠습니다.// 틀림 auto it = find(start, numbers.end(), abs(numbers[i] - m)); // 맞음 auto it = find(start, numbers.end(), m - numbers[i]);
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
문제 접근 방법
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 이번 문제를 제가 처음 접했을 때 완탐으로 먼저 생각했습니다. 제가 생각했을 때 격자 마다 5가지 경우의 수가 있다고 생각해서 대략 5^100이라고 생각했습니다. 아무리 색종이가 각 5개라는 조건이 있다해도 5^100 자체가 너무 커서 줄어들어도 시간초과가 날거라고 생각해서 다음 알고리즘으로 dp, 그리디 여러 방법을 도전했는데 실패했습니다.. 그런데 완탐, 백트래킹으로 가능했었다라니 어느 부분에서 그렇게 판단하신건지 궁금하여 커뮤니티를 보았는데 다른 여러 분이 이미 질문을 많이 하셨고 큰돌님께서 답변을 달아주셨습니다. 그런데 그 답변에서 이해가 안되는게 있습니다. --큰돌님 답변얼핏보면 100개의 격자점에서 상태값은 총 5개이기 때문에 5^100이라고 생각할 수 있습니다.그러나 문제 조건을 보시면. 1×1, 2×2, 3×3, 4×4, 5×5로 총 다섯 종류가 있으며, 각 종류의 색종이는 5개씩 가지고 있다.색종의 갯수의 제한이 있습니다.자 그러면.이렇게 생각할 수 있습니다.100개의 격자점에서 25개의 상태값을 순서와 상관없이 놓는 경우의 수죠.100C25라고 생각이 듭니다.근데 이것또한 큰 수입니다.242,519,269,720,337,121,015,504 이죠. 그러나 꼭 이래야만 할까요?5x5 짜리 색종이 4개면 100개의 격자점은 모두 채워지게 됩니다. 그리고 이 경우의 수는 한개밖에 없죠.자 그러면...100개의 격자점을 대충 4x4로 감싼다고 했을 때 거의 다 채워지기 때문에 4개정도가 들어가기 때문에100C4이면 -> 격자점이 다 채워지는 구나 -> 100 C4는 3,921,225(400만) 수준이고 -> 물론 그 외의 격자점을 다른 색종이로 채워야 하겠지만.. -> 400만이면 충분하지 않을까?그리고...사실 이것보다는 더 작을 수 있겠다. 라고 생각하고 들어간 것입니다.격자점은 0과 1로 이루어져있으며. (즉, 매번 100이 아니다.)5x5로 채울 수 있는 경우의 수들또한 있으니까요.그리고 100개의 격자점에 4x4가 아니라 사실은 4x4가 채워지면 채울 수 있는 영역 자체가 제한되기 때문에 더 적을 것이라고 생각했습니다.처음에는 저도 5^100이라고 생각을 했습니다.그러나 문제 조건을 보았을 때 10x10, 색종이의 갯수제한 5개를 보고 좀 더 작을 것이다. 라고 판단하고 어느정도 유추하고 -> 완탐 -> 줄일 수 있는 것은 줄여보자 -> 휴리스틱 -> 백트래킹 -> 이거 안되면 그리디로 해보자.라고 했을 때 백트래킹 단계에서 푼 것 같습니다. 이렇게 답변을 하셨는데요 여기서 의문점은 2가지 입니다.100개의 격자점에서 25개의 상태값을 순서와 상관없이 놓는 경우의 수죠. 이 말씀이 이해가 되지 않습니다. 저도 조건이 색종이가 각 5개라 25개이고 100개의 격자점에서 25개를 골라서 100C25 그 후에 11111,22222,33333,44444,55555 를 나열해서 가능한지 아닌지 판단해야하기 때문에 100C5* 25!/(5!*5!*5!*5!*5!) 이런 경우의 수가 나온다고 생각했습니다. 25!/(5!*5!*5!*5!*5!) 이거는 저렇게 중복된 숫자가 있을 때 나열하는 경우의 수 입니다. 왜 100개의 격자점에서 25개의 상태값을 순서와 상관없이 놓는 경우의 수인지 이해가 잘 되지 않습니다 -> 경우의 수가 이해가 안되는 거지 결론적으로는 너무 크다라는 결론은 이해했습니다.100개의 격자점을 대충 4x4로 감싼다고 했을 때 거의 다 채워지기 때문에 4개정도가 들어가기 때문에 이 문장이 이해가 가지 않습니다. 4*4로 총 5개까지 들어갈 수 있는거 아닌가요..? 100C5가 아니라 100C4 인지 이해가 되지 않습니다. 100C5라고 생각해서 약 7천만 정도가 나오고 남은 격자도 다른 색종이로 채운다고 생각해서 아마 처음 문제 푼 상태에서 여기까지 생각하더라도 7천만*a(다른 색종이로 채우는 경우의 수) 너무 많구나.. 생각하고 다시 풀어도 백트래킹까진 생각할 자신이 없네요 ㅠㅠ 마지막으로 큰돌님은 어느 정도 경우의수가 나올때 백트래킹으로 시간을 줄여서 성공할 수 있겠구나 라고 생각하시나요..? 일단 도전하고 안되면 빠르게 다음 알고리즘으로 생각을 전환하시는건지 아니면 본인만의 기준이 있으신건지도 궁금합니다!!
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
5-P 질문입니다.
https://www.acmicpc.net/source/83888932비트마스킹으로 이 문제를 접근했습니다.각 톱니바퀴 회전 사이클을 처리할때 ,입력 톱니바퀴 idx기준 좌측과 우측으로 나눠회전 여부 및 방향을 rot배열에 저장하고 모든 탐색이 끝나면 rot배열을 참조해 회전을 하도록 만들었습니다.실행했을 때 원하는 값이 나오지 나오지 않는데 잘못된 로직이나 조건이 뭔지 찾기가 힘듭니다.답변 부탁드립니다, 선생님.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
누적합 인덱스 1부터 질문
안녕하세요.누적합 psum 배열을 만들 때 인덱스 1부터 시작하라고 하셨는데요.그럼 누적합을 만들 원본배열 a같은 경우도 인덱스 1부터 시작해야하는건가요? int a[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; int psum[11] = {0}; for(int i=1; i<11; i++) { psum[i] = psum[i-1] + a[i]; }이렇게하면 알려주신 공식과 다른 값이 나와서요
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-H 질문입니다.
http://boj.kr/19576287b7eb4247940b1b8e63b459f2 안녕하세요.어디가 틀렸는지 모르겠네요. ㅠㅠ선생님 풀이와 로직은 비슷한거같은데 반례를 못찾겠습니다.혹시 반례를 찾는 팁도 알려주시면 감사하겠습니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
7-e 코드 질문 있습니다!
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.dp의 첫 인덱스에 알약 복용한 일차 / 두번째에는 0일시, 해당 일차에 1/2 꺼냈을 때 / 1일 시 해당 일차에 1 꺼냈을 때 이렇게 세팅하였는데, 결과가 잘 안나옵니다. 혹시 제 코드에 어떤 문제점이 있는지 알 수 있을까요?#include <bits/stdc++.h> using namespace std; int dp[64][2]; // dp[day][0] -> 남은 반쪽 약의 개수, dp[day][1] -> 남은 하나 약의 개수 int c; int move(int day, int tA, int tB) { if (tA <= 0 && tB <= 0) return 0; // 기저 조건 if (dp[day][0] != -1 && dp[day][1] != -1) return dp[day][0] + dp[day][1]; // 이미 계산된 상태 반환 int ret1 = 0; int ret2 = 0; // 반쪽 약을 먹는 경우 if (tA > 0) { ret1 += move(day + 1, tA - 1, tB); } // 하나짜리 약을 꺼내서 반쪽 약을 추가하는 경우 if (tB > 0) { ret2 += move(day + 1, tA + 1, tB - 1); } // dp 배열에 결과 저장 dp[day][0] = ret1; dp[day][1] = ret2; return ret1 + ret2; } int main() { cin >> c; memset(dp, -1, sizeof(dp)); // dp 배열 초기화 dp[1][0]=1; dp[1][1]=c-1; // 하나를 쪼개서 반이 된 상태임 // 첫째날은 반쪽 약 1개, 하나 약 c-1개로 시작 cout << move(1, 1, c - 1) << "\n"; return 0; }