int main() { fill(&a[0], &a[10], 100); for(int i = 0; i < 10; i++){ cout << a[i] << " "; } cout << '\n'; fill(&b[0][0], &b[9][10], 2); for(int i = 0; i < 10; i++) { for(int j = 0; j < 10; j++){ cout << b[i][j] << " "; } cout << '\n'; } return 0; 이 코드에서 fill(&a[0], &a[10], 100); 이 부분과 교안에 설명된 부분을 보면 알 수 있듯이 마지막에 쓰이는 인덱스는 포함되지 않아 실제로 a[9]까지 초기화가 가능한 것으로 이해를 하였습니다 그런데 왜 밑에 2차배열을 초기화하는 fill(&b[0][0], &b[9][10], 2);에서는 b[10][10]이 아닌 b[9][10]인지 궁금합니다. 또 b[9][9]로 수정하여 실행해본 결과가 b[9][10]으로 수행한 결과와 같은 이유도 궁금합니다! 긴 질문 죄송합니다!
안녕하세요 ! 채점 프로그램 관련 문의가 있어서 글을 작성하게 되었습니다. 전에 풀었던 문제들을 다시 풀어보는 과정에서 전에 100점이 나왔던 문제들을 다시 한번 채점 프로그램을 돌리니 wrong_answer이라고 나와서(기존의 AA파일을 돌림) 답안 소스로 테스트를 해보았는데 똑같이 wrong_answer 라고 계속 나오는 문제가 발생해서 글을 작성하게 되었습니다. 감사합니다.
안녕하세요 큰돌님 1학년 문제를 풀었는데, dp배열 초기화의 유무에 따라 답이 갈립니다. 저는 0이라는 값도 결과값이 될 수 있는 값 중 하나라고 생각하여 dp배열을 -1로 초기화했습니다. 그런데 이런 경우 답이 틀렸다고 나옵니다. 오히려, fill을 이용한 별도의 초기화 없이 기본적은 0으로 상태를 두면 맞다고 나옵니다. 제가 어떤 점을 잘못 생각한건가요? 감사합니다. 소스코드 : http://boj.kr/aaa7dca582ec4827803e5b5826b6cdb5
구현하고 예제 및 반례를 넣어보고 디버깅도 나름 해봤는데 도저히 틀린 점을 못 찾겠습니다. 강의와 접근 방식이 조금 다르지만 비슷한 것 같은데 어떤 점에서 틀린 건지 알려주시면 감사할 것 같습니다 ㅠㅠ #include <bits/stdc++.h> using namespace std; int N, M, K, mp[51][51], temp_mp[51][51], ret=INT_MAX; vector<vector<int>> v; vector<int> choose_v; int visitied[10]={0,}; int dy[4]={1,0,-1,0}, dx[4]={0,1,0,-1}; void rotate(int y,int x,int sz){ for (int i=1;i<=sz;i++){ int start_y=y-i; int start_x=x-i; int start_val=temp_mp[start_y][start_x]; int temp_y=start_y; int temp_x=start_x; for (int j=0;j<4;j++){ int rotate_flag=i*2; while(rotate_flag--){ // printf("%d,%d ",temp_y,temp_x); temp_mp[temp_y][temp_x]=temp_mp[temp_y+dy[j]][temp_x+dx[j]]; temp_y+=dy[j]; temp_x+=dx[j]; } //printf("\n"); } temp_mp[start_y][start_x+1]=start_val; } } void choose(int sz,vector<int> &_choose_v){ // printf("sz: %d\n",sz); // for (int&i:_choose_v){ // printf("%d ",i); // } // printf("\n"); // printf("%d %d\n",visitied[0],visitied[1]); if (sz==K){ for (int i=1;i<=N;i++){ for (int j=1;j<=M;j++){ temp_mp[i][j]=mp[i][j]; } } for (int i=0;i<10;i++){ visitied[i]=0; } for (int&i:_choose_v){ rotate(v[i][0],v[i][1],v[i][2]); for (int j=1;j<=N;j++){ int sum=0; for (int k=1;k<=M;k++){ sum+=temp_mp[j][k]; } if (sum<ret){ ret=sum; } } } //printf("\n"); return; } for (int i=0;i<K;i++){ if (find(_choose_v.begin(),_choose_v.end(),i)==_choose_v.end()){ _choose_v.push_back(i); visitied[i]=1; choose(sz+1,_choose_v); visitied[i]=0; _choose_v.pop_back(); } } } int main() { cin >> N >> M >> K; for (int i=1;i<N+1;i++){ for (int j=1;j<M+1;j++){ cin >> mp[i][j]; } } for (int i=0;i<K;i++){ vector<int> temp_v; for (int j=0;j<3;j++){ int temp; cin >> temp; temp_v.push_back(temp); } v.push_back(temp_v); } choose(0,choose_v); // for (int i=1;i<N+1;i++){ // for (int j=1;j<M+1;j++){ // printf("%d ",temp_mp[i][j]); // } // printf("\n"); // } cout << ret; } choose()함수를 통해 순열을 만들고 choose()의 인자인 sz가 K가 되면, 순열의 순서에 맞게 rotate한 후 최솟값을 찾을 수 있도록 작성했습니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. https://www.acmicpc.net/source/share/f81085fda0c842898c7f440cecb12d4e 안녕하세요. 선생님 제가 선생님 풀이를 보기전에는 이렇게 2차원 배열을 통해서 구간별 누적합을 저장했는데 메모리 초과가 나와서 의문이였습니다. 무엇이 문제였을까요
안녕하세요 탱크 모델에서 렌더링 할때는 주어진 vertex 위치가 로컬기준이라 root 기준으로 바꾸지 위해서 bonetransformation 을 곱해줬잖아요 카츄진을 애니메이션 렌더링 할때 셰이더에서 (글로벌에서 로컬로 invGlobal) * (변환1 변환 2 변환3..) 이런식으로 곱해주는데 제가 이해하기로는 이러면 주어진 vertex가 글로벌 기준 버텍스인듯 한데 보통 이런 t자 모형의 skeletalmesh 는 주어지는 vertex position이 global 기준인가요? 감사합니다.
안녕하세요 선생님 강의 잘 보고있습니다 수업중 질문이 있는데요, 해당문제는 기저사례가 if (k < 0) 과 if (index == 26) 이렇게 두부분이라고 이해했습니다. 제가 여기서 가지는 질문은 총 두가지 인데 첫번째 질문은 왜 if (k < 0)일때 0을 반환하는지 이해하지 못하겠습니다. 더이상 배울게 없는 경우에는 지금까지 만들어 놓은 mask 매개변수를 이용하여 count 함수를 호출을해서 ret 을 최대값으로 갱신해야하는것이 아닌가요? 두번째 질문은 배우지 않고 넘아가는 경우에 ret 을 max 값으로갱신하는데 왜 이때 값을 갱신하는지 이해하지 못하겠습니다. 우선 함수를 int 형을 반환하는것이 아닌 void형으로 반환하는것으로 수정하여 제출하였습니다. 이렇게 하면 이해가 가는데, 혹시 위의 내용들을 조금더 깊게 설명해주실수 있으실까요? http://boj.kr/4925cb61cc264f87998b901fe8800e63
안녕하세요 16분 경 해당 캡처사진 코드 관련 질문드립니다. 18번째 줄의 생성자의 매개변수를 둘다 초기화 하시고 int main 함수에서 Fraction one_third (); 라고 쓰면 안된다고 하셨습니다 '파라미터(매개변수)가 없기 때문에 괄호를 삭제해주어야한다' 라고 하셨는데 이 경우는 생성자의 매개변수가 없는 것이 아니라 보내는 인자값이 없는 것 아닌가요? 생성자에는 매개변수가 2개가 존재하는데..헷갈리네요 감사합니다.
안녕하십니까 큰돌님 강의 영상 보고 해설 코드를 이해한 다음 스스로 살짝 바꿔서 작성해봤는데 거의 유사한데 제대로 실행이 안 되는데 어디가 잘못 됐을까요 ?? 그리고 백준에서는 먼저 메모리 초과라고 뜨네요ㅜ http://boj.kr/4e41e999182545c7bbe392897d16055d
4-E 직접 코딩한 링크입니다. http://boj.kr/1f336e6542f1478a96a0c31745c1196d 저는 비트연산자를 이용하긴 했는데 입력 받으면서 1). 각 단어별 쓰인 알파벳 +1 ( 중복 x ) 2). 각 단어별 비트로 표현 으로 전처리를 해준 후 sort를 통해 가장 많이 이용한 알파벳 K 개 선정 sort 된 알파벳으로 max_word 라는 K개 비트를 사용한 숫자를 만들고 (word[i]&max_word)==word[i] 와 같을 경우 ret을 하나씩 올려줬습니다. 예제 및 추가 예제들은 다 맞는데 어디에서 틀린지 감이 안오는 것 같습니다. 감사합니다.
마지막 값 출력 때 '\n'을 빼먹고 안해서 1시간 정도 헤맸습니다... 문제에서 요구한 사항이 아닌 거 같아서 딱히 하진 않았는데 다른 문제를 풀 때에도 명시돼 있지 않더라도 혹시 모르니 하는 것이 나을까요?? 또한 문제에 명시돼 있진 않으나 이진트리라고 가정하고 풀긴 했는데 이런 것도 혹시 문제의 예시를 보고 추정하면 될까요??
안녕하세요 하기 코드 질문드립니다 int sumTo(int sumto) { if (sumto <= 0) return 0; else if (sumto <= 1) return 1; else return sumTo(sumto - 1) + sumto; } 에서 굵게 표시한 if(sumto < = 1) return 1; 이 굳이 필요한 부분인가요? ~return 0은 재귀함수 중단을 위해 꼭 필요한 것이란 걸 알겠습니다만 ~return 1은 어떤 이유에서 추가하셨는지 궁금해서 여쭤봅니다. 미리 답변 감사드립니다.
end()가 문자열의 마지막 요소 그 다음을 가리키는 거라고 하셨는데 그럼 P.42에서 reverse()할 때도 reverse(a.begin(), a.end())가 아닌 reverse( a.begin(), (a.end()-1) )로 써도 문자열이 완전히 뒤집어 질 수 있지 않나요?
DIrectX 학습하면서 이 부분이 되게 충격적으로 다가왔습니다. 편리성이 엄청난데 이 pass 라이브러리는 "FX11/Effects11d.lib"에서 기능이 제공이 되어 있는건가요? 아니면 루키스님이 직접 만드신 방법인가요? 그리고 실제 엔진개발에서 많이 사용되는 라이브러리 인가요? 마지막으로 hlsl과 fx의 차이를 검색해서 알아보니 fx는 조명효과 같은 곳에 사용한다는데 hlsl과 차이가 무엇인가요? 항상 강의 감사하게 듣고있습니다 감사합니다!
http://boj.kr/2c94d34c79944ea3a6c763ef440ac650 예제는 맞는 것 같은데 (visited배열 출력해서 확인함) 제출 하면 틀렸다고 나오네요.. 왜그런지 잘 모르겠어요 ㅜㅜ 저는 다음과 같이 코드를 짰습니다. 입력받고 gohome 함수에서 cnt가 k와 같으면 ret++하고 return ny와 nx정의해서 범위 벗어나는지 확인, 방문했는지 확인, 입력받은 배열 값이 T인지 확인, cnt==k인데도 도착지가 집이 아닌지 확인 위 조건들을 통과하면 방문하고 재귀함수 호출 , 방문기록 삭제 도움 많이 받고있습니다 선생님 감사합니다!