묻고 답해요
169만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨객체지향 개념에 바탕을 둔 Modern C++프로그래밍
공지
강좌 운영이나 강의 내용에 관해 궁금한 점이 있으면 자유롭게 나누어주세요.교수자, 수강생 누구나 글쓰기와 댓글 쓰기가 가능합니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-H 질문있습니다
http://boj.kr/a2bc8496dc1046a495a22dd0185ad515여기 제 코드입니다.a만큼의 크기를 가진 배열 arr을 사용해서가장 최근의 a일의 온도를 저장합니다.최근 a일간의 온도의 최대값은 결국 새로 들어온 값이 가장 오래된 날짜보다 높다면 최대값이 변경되는것이니해당 부분을 if문으로 처리해서 sum값을 변경시켰는데오답이 나옵니다.구간마다 sum을 계산하여 max값을 비교한다면 맞다고 하는데제 방식이 왜 틀렸는지 이해가 가질 않습니다.
-
해결됨C++ 프로그래밍
공지
강좌 운영이나 강의 내용에 관해 궁금한 점이 있으면 자유롭게 나누어주세요.교수자, 수강생 누구나 글쓰기와 댓글 쓰기가 가능합니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
주난의 난 질문
저는 bfs와 dfs를 혼용하는 방식으로 코드를 짯는데 이렇게 짜면 단점이 어떤게 있을지 궁금합니다.큰돌님 항상 강의 잘 듣고 있습니다 감사합니다.#include <iostream> #include <vector> #include <algorithm> #include <queue> #include <stack> using namespace std; int dx[4] = {0, 0, 1, -1}; int dy[4] = { 1, -1, 0, 0 }; int N, M, startX, startY, endX, endY; char board[300][300] = { 0 }; int visit[300][300] = { 0 }; queue<pair<int, int>> q; void print() { for (int i = 0; i < N; i++) { for (int j = 0; j < M; j++) { cout << board[i][j] << " "; } cout << "\n"; } cout << "\n"; } void print2() { for (int i = 0; i < N; i++) { for (int j = 0; j < M; j++) { cout << visit[i][j] << " "; } cout << "\n"; } cout << "\n"; } void dfs(int x, int y, int a) { //print2(); visit[y][x] = a; for (int i = 0; i < 4; i++) { int nx = x + dx[i]; int ny = y + dy[i]; if (nx <0 || nx > M || ny <0 || ny > N) continue; if (!visit[ny][nx] && board[ny][nx] == '0') { dfs(nx, ny, a); } else if (!visit[ny][nx] && (board[ny][nx] == '1'|| board[ny][nx] == '#')) { board[ny][nx] = '0'; visit[ny][nx] = a; q.push({ nx, ny }); } } } void bfs() { q.push({ startX-1, startY-1 }); visit[startY-1][startX-1] = 1; while (!q.empty()) { //print2(); int x = q.front().first; int y = q.front().second; q.pop(); for (int i = 0; i < 4; i++) { int nx = x + dx[i]; int ny = y + dy[i]; if (nx <0 || nx > M || ny <0 || ny > N) continue; if (!visit[ny][nx] && board[ny][nx] == '1') { q.push({ nx, ny }); visit[ny][nx] = visit[y][x] + 1; board[ny][nx] = '0'; } else if (!visit[ny][nx] && board[ny][nx] == '0') { dfs(nx, ny, visit[y][x] + 1); if (visit[endY-1][endX-1]) return; } else if (!visit[ny][nx] && board[ny][nx] == '#') { visit[ny][nx] = visit[y][x] + 1; return; } } } } int main() { char symbol; cin >> N >> M; cin >> startY >> startX >> endY >> endX; for (int i = 0; i < N; i++) { for (int j = 0; j < M; j++) { cin >> symbol; board[i][j] = symbol; } } bfs(); cout << visit[endY - 1][endX - 1]-1; }
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
7-W [2342] 문제 질문입니다.
안녕하세요 큰돌님. 항상 좋은 강의 감사드립니다.7-W에 제가 생각했을때 같은 논리인것 같은데 1%에서 오답으로 떠 질문 드립니다 ㅜㅜ 아래는 제 코드입니다.#include<bits/stdc++.h> using namespace std; int a[100001]; int n; int dp[100001][5][5]; int go(int idx,int left, int right){ if(idx == n) return 0; int &ret = dp[idx][left][right]; if(ret!=-1) return ret; ret = 987654321; int num = a[idx]; //Left if(left == 0) ret = min(ret,go(idx+1,num,right)+2); if(num == left) ret = min(ret,go(idx+1,left,right)+1); if(abs(left-num)==2) ret = min(ret, go(idx+1,num,right)+4); if((num+1)%4 == left || (num!=1 && num-1 ==left) || (num==1 && left ==4))ret = min(ret,go(idx+1,num,right)+3); //Right if(right == 0) ret = min(ret,go(idx+1,left,num)+2); if(num == right) ret = min(ret,go(idx+1,left,right)+1); if(abs(right-num)==2) ret = min(ret,go(idx+1,left,num)+4); if((num+1)%4 == right || (num!=1 && num-1 ==right) || (num==1 && right ==4)) ret = min(ret,go(idx+1,left,num)+3); return ret; } int main(){ while(true){ int num = 0; cin>>num; if(num==0) break; a[n]=num; ++n; } memset(dp,-1,sizeof(dp)); cout<<go(0,0,0)<<"\n"; } 현재 코드에서//Left if(left == 0) ret = min(ret,go(idx+1,num,right)+2); if(num == left) ret = min(ret,go(idx+1,left,right)+1); if(abs(left-num)==2) ret = min(ret, go(idx+1,num,right)+4); if((num+1)%4 == left || (num!=1 && num-1 ==left) || (num==1 && left ==4))ret = min(ret,go(idx+1,num,right)+3); //Right if(right == 0) ret = min(ret,go(idx+1,left,num)+2); if(num == right) ret = min(ret,go(idx+1,left,right)+1); if(abs(right-num)==2) ret = min(ret,go(idx+1,left,num)+4); if((num+1)%4 == right || (num!=1 && num-1 ==right) || (num==1 && right ==4)) ret = min(ret,go(idx+1,left,num)+3);부분만 강의코드와 비슷하게 아래와 같이 바꾸면ret = min(ret, go(idx+1,a[idx],right)+check(left,a[idx])); ret = min(ret, go(idx+1,left,a[idx])+check(right,a[idx]));통과가 됩니다... 다른 많은 예제들도 넣어봤는데 잘 돌아가는데 어디서 잘못 짚은걸까요?? ㅠㅠ
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
c++ 교안
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.c++ 교안 보면서 익히고있는데요 C++ 학습중인데 어디까지 직접 보면서 공부해야하죠?강의는 언제부터 보면되나요??
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
백준 문제 미리 모아둔거 없나요???
강의를 틀기전에 먼저 풀어보려하는데 혹시 강의에 사용되는 문제목록 모아져있는건 없을까요
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-G 코드 질문드립니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.예시입출력 다 맞고,로직상 무조건 맞다고 생각하는데3%에서 틀리다고 나옵니다.도대체 뭐가 잘못된건지 모르겠습니다.. 도와주십쇼http://boj.kr/82e12b941d914352baab934b52c8a04b
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-B 유기농 배추 질문
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.bfs를 활용해서 문제를 풀었습니다.근데 계속 메모리초과가 나는데그 이유를 알려주시면 감사하겠습니다..http://boj.kr/b024bff359c64a679143f2c6633ea8c3
-
미해결[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
질문드립니다.
강의에 혹시 다이렉트x 내용도 있을까요?없다면 다른 강의 중에 다룬 게 있을까요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
안녕하세요 큰돌님 암기왕 문제 질문 드립니당
https://www.acmicpc.net/source/80071421일단 제 코드입니다. 입력 계수에 대해서 이진탐색을 모두 해보는 풀이를 생각 했습니다. 입력: N 탐색 시간: logN이 걸리니까 NlogN 시간이 걸리고 N은 백만이니, 1000000*20=2000000(이천만)이고 시간제한은 2초니까 가능하지 않나요? 시간초과가 나와서 왜 틀렸는지 피드백을 받고 싶습니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-G 질문입니다.
안녕하세요..제가 이문제를 다시 푸는 과정에서reverse함수를 사용해서풀어보았는데요예제는 다 맞는데 왜틀리는지 모르겠습니다...답변 부탁드립니다.http://boj.kr/ee37f6b6daa14f158949673b90e65815 #include <iostream> #include <algorithm> #include <vector> using namespace std; vector<string> solution(const int N, const string& str, const vector<string>& v) { vector<string> answer; size_t pos = str.find('*'); string pre = str.substr(0, pos); string suf = str.substr(pos + 1); reverse(suf.begin(), suf.end()); // cout << "pre = " << pre << ", suf = " << suf << '\n'; // test for (const string& s : v) { string rs(s); reverse(rs.begin(), rs.end()); if (s.find(pre) == 0 && rs.find(suf) == 0) answer.push_back("DA"); else answer.push_back("NE"); // cout << "str = " << s << "\nrstr = " << rs << '\n'; // cout << "answer = " << answer.back() << "\n\n"; } return answer; } int main() { int N; string str; cin >> N >> str; vector<string> arr(N); for (string &s : arr) cin >> s; vector<string> answer = solution(N, str, arr); for (string& s : answer) cout << s << '\n'; return 0; }
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
5-B 질문있습니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. http://boj.kr/38bfd119659f450f9f4c86153c28d25d저는 처음에 stack을 생각하고 다시 해당 stack에 존재하는 요소들을 순서대로 string에 추가하는게 힘들다고 판단되어 deque로 하였습니다. 근데 메모리 초과로 틀려서 ㅠㅠ 어떤 부분이 문제인지 궁금합니다. 항상 감사합니다.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-T 질문있습니다 :)
안녕하세요 선생님 🙂선생님께서 알려주신대로 무식하게 풀 수 있는 방법부터 생각하는건 되기 시작했는데요, 아직 시간복잡도까지 고려하는 수준은 아닌가 봅니다 ㅠㅠ 강의를 듣고 아래의 방식의 시간복잡도가 굉장히 커진다는 것은 이해를 했습니다. 그래도 출력 값이 정답이라고 생각을 했는데요, 디버깅을 해보니 2중 for문을 사용하는 부분에서 i가 1인 경우를 인식하지 못하고 바로 i가 2인 경우로 넘어가지더라구요. 그러다보니 첫 번째 테스트케이스는 올바른 답으로 출력이 되지만, 두 번째 테스트케이스는 오답이 나오고 있습니다. 한참을 봐도 제가 무엇을 실수한건지 잘 모르겠습니다..ㅠ 조언 부탁 드립니다 :) https://www.acmicpc.net/source/share/65830377ec624e879c48d979af5762d4
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
칠무해 문제를 왜 틀렸는지 모르겠습니다..
https://www.acmicpc.net/submit/14729/80035550제 코드의 링크입니다.. 79퍼에서 멈추는데 왜 틀렸는지 모르겠습니다.. 입력의 크기, 실수 오차까지 생각 했는데 제가 놓친게 있을까요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-G 질문 있습니다!
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.안녕하세요 큰돌님 강의 잘 보고 있습니다! 다름이 아니라 코드 중에 이해가 잘 안되는 부분이 있어서 질문드립니다!if (!visited[next]) { q.push(next); visited[next] = visited[now] + 1; cnt[next] += cnt[now]; } else if (visited[next] == visited[now] + 1) { cnt[next] += cnt[now]; }위와 동일하 코드가 있는데 if(!visited[next])코드는 한번도 방문한 정점이 아니라 처음 방문할 때가 해당 정점을 방문할 최소 시간이라는 것이라는 것은 알겠는데,else if (visited[next] == visited[now] + 1) 이 부분이 어떻게 해당 정점에 방문한 최소 시간이 되는 것을 알 수 있고 그걸 문제를 풀면서 어떻게 도출할 수 있는걸까요?
-
해결됨[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
typedef<T> iterator; 부분 관련 질문입니다
32:08 Iterator<T> 를 iterator로 재정의 해주고, begin()과 end()의 반환타입을 iterator로 바꿔준후main의 for(Vector<int>::iterator it = v.begin(); it != v.end(); ++it){}을 돌릴때, iterator는 Iterator<T> 를 재정의한 것일뿐 동일하니까 Vector<int>::Iterator<int> it =v.begin();이렇게 바꾼다면 왜 컴파일 에러가 뜨는지 궁금합니다.
-
미해결[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
LoadTexture로 텍스처를 출력할 때 궁금한것이 있습니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.강의자료에 있는 bmp이미지 파일은 정상적으로 잘 출력이 됩니다. 다만, 다른 bmp파일로 출력을 할 경우 이미지로드에 실패합니다.파일을 보니 출력되지 않는 bmp파일의 경우 비트심도가 32이고 강의자료에있는 bmp파일의 경우 24인 것을 확인하고 비트심도를 동일하게 24로 변경했는데도 출력이 되지않습니다. 정확한 원인이 궁금하여 질문드립니다. 항상 좋은 강의 감사드립니다.
-
미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
시간초과가 나요
선생님 강의 설명 듣고 저 혼자서 구현해봤는데 구현한 방법은 비슷한 것 같은데 채점돌려보니까 마지막 문제가 시간초과가 걸리네요... 어디가 문제인걸까요? 문제에 대한 정답은 제대로 나오네요.#include <bits/stdc++.h> using namespace std; const int INF = 1e9; int a[704][704], d[704][704], n, m, ret, w, h; int cal(int x, int y) { return d[x][y] - (d[x - h][y] + d[x][y - w] - d[x - h][y - w]); } int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin >> n >> m; for (int i = 1; i <= n; i++) { for (int j = 1; j <= m; j++) { cin >> a[i][j]; d[i][j] = d[i - 1][j] + d[i][j - 1] - d[i - 1][j - 1] + a[i][j]; } } cin >> h >> w; for (int i = h; i <=n; i++) { for (int j = w; j <= m; j++) { ret = max(ret, cal(i, j)); } } cout << ret; return 0; }
-
미해결[게임 프로그래머 도약반] DirectX11 입문
pch 에 문제가 생긴 것 같습니다!!!!!
미리 컴파일된 헤더로 설정해 놓은 pch.h 파일에서 유독 #include "Transform.h" 를 못 받아들이는 것 같습니다. 계속해서 "'Transform': 선언되지 않은 식별자입니다." 라는 오류가 발생하고 신기한 건 #include "Transform.h"의 위치를 윗줄로 옮기면 그 밑에서 include 해주는 헤더파일도 동일하게 못받아들이고 "선언되지 않은 식별자입니다" 라고 에러를 뱉고 있습니다. 이런 경우는 어떤 해결 방법이 있을까요?ㅜㅜㅜㅜㅜㅜㅜㅜㅜ