묻고 답해요
169만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
모범 답안을 활용한 공부방법 질문
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.안녕하세요 현재 1주차 문제를 풀고 있는 학생입니다.선생님 말씀대로 문제를 푼 후 강의를 보고 있습니다.강의의 모범답안의 접근 방법을 이해하고 한번씩 쳐보고 있는데, 모범 답안을 암기하는 것도 효율적인 공부 방법인지 질문드립니다.감사합니다.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
8-P 문제 질문
안녕하세요 큰돌선생님 매번 좋은 강의 감사합니다해당문제를 강의 시청전에 먼저 풀어보았는데 15%에서 오답처리를 받아서 질문드립니다저는 이동 비용은 + 로 처리하였고, 얻을수 있는 금액은 - 로 처리하였습니다. 거꾸로 처리하였습니다. 또한 선생님처럼 벨만포드 알고리즘을 이용하여 문제를 풀었는데 어느부분이 잘못된것인지 잘 모르겠습니다.마지막 출력은 bfs를 이용하지 않고 사이클이 있는데 이동가능한 경우(돈 무한), 이동 가능한경우(최대의 돈), 이동할 수 없는 경우(gg) 이렇게 3가지로 나누어 출력하였습니다. http://boj.kr/40828aec1df94d10a50538040db954c3
-
미해결홍정모의 따라하며 배우는 C++
@26:20 static 관련 질문
@26:20 에 "일단 이 static 은 문법상 이 전역변수가 다른 cpp 파일에서 사용될 수 없도록 막아주는 역할을 해요" 의 의미가 링킹시, namespace 혹은 class 내부에 static 이 정의 되어있지 않으면 다른 cpp 파일에서 접근할수 없기 때문인게 맞을까요? 접근 제한자의 느낌은 아닌것같고, extern variable 과 비교하기 위해서 설명을 저렇게 하신건지 궁금합니다. !
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-E 질문있습니다!
왜 메모리 초과가 나는지 잘 모르겠습니다 ㅠㅠhttp://boj.kr/3f4ea7f3a10b47edae0daa68dd2cf90d그리고 선생님 코드와 무슨차이인지도 잘 모르겠습니다...결국엔 6개의 경우의 수가 계속 추가 되는데겹치는게 있을시 6개보다 적은 경우의 수가 들어간다인데...도저히 모르겠어요 ㅠㅠㅠ#include <iostream> #include <algorithm> #include <queue> #include <set> #include <vector> using namespace std; int N, ret; vector<int> scv; queue<pair<vector<int>, int>> q; set<vector<int>> visited; vector<int> Damage(vector<int> v) { int divide = 1; for (int i = 0; i < v.size(); i++) { v[i] -= 9 / divide; divide *= 3; } return v; } void Mutalisk() { while (q.size()) { vector<int> v = q.front().first; int cnt = q.front().second; q.pop(); v = Damage(v); sort(v.begin(), v.end(), greater<int>()); for (int i = (int)v.size() - 1; i >= 0; i--) if (v[i] <= 0) v.pop_back(); if (v.size() == 0) { ret = cnt + 1; return; } do { q.push({ v, cnt + 1 }); auto it = visited.insert(v); if (it.second == false) continue; } while (prev_permutation(v.begin(), v.end())); } } int main() { cin >> N; for (int i = 0; i < N; i++) { scv.push_back(0); cin >> scv[i]; } sort(scv.begin(), scv.end(), greater<int>()); do { q.push({ scv, 0 }); } while (prev_permutation(scv.begin(),scv.end())); Mutalisk(); cout << ret; return 0; }
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
5-A 그림 질문
5분 50초에 그려져 있는 그림에서 벡터를 오름차순 정리 했으니 비용도 오름차순으로 정렬되게 그려야하는 것 아닌가요?일정이 짧은 순서대로 정렬되고 비용 또한 오름차순 정리되면 아래 그림처럼 그리는것이 맞을까요? 수업 듣다가 헷갈려서 여쭤봅니다 ㅎㅎ
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
7-B 강의 질문
안녕하세요 큰돌 선생님!강의를 여러번 보고서도 이해가 되지 않아서 질문 남깁니다. Q. 이 문제는 왜 DP로 접근해야 하는지 보충 설명을 추가해주시면 감사하겠습니다... 브루트포스 느낌인건 알겟는데 경우의 수를 계산하기 위해서 식을 어떻게 세워야 할 지 논리적으로 맞는지를 잘 모르겠습니다... 도와주시면 감사하겠습니다!
-
미해결홍정모의 따라하며 배우는 C++
맥에서 Makfefile 사용하지 않고, vscode를 사용하여 헤더파일 포함해 실행시키는 법
답변들이 외부 링크만 알려주고 불친절하다고 생각해 직접 찾아보고 적어봅니다. 시작한지 1주차라 많이 틀릴수도있습니당일단 이건 제 폴더 화면이구요 ch1.cpp가 메인함수이고, 리소스에 add함수(헤더파일 및 바디)를 넣었습니다. 이제 각각에 main.cpp(저는 ch1.cpp라고함) , add.cpp , add.h입니다. 여기서 명령어를 보통 g++ -std=c++14 -Wall ch1.cpp -o test.out 이렇게 치실텐데 이러면 오류나면서 실행이 되지않죠 왜 안될까요? 링커라는게 각각의 cpp파일들을 컴파일한 후에 obj파일로 만들고 이것들을 실행이 가능한 하나의 exe파일 만드는 과정중에 하나인데 우리는 지금 main함수 cpp파일 하나만 컴파일 해놓은 겁니다. 즉 컴파일러가 exe파일로 만들려는데 main.cpp이 main.o로 만들어진거는 확인이 되었는데 add.cpp파일이 컴파일 안되어있으니까 이 링커과정에 문제가 생기는거죠. 해결방법은 간단합니다 add.cpp파일도 컴파일 해주면 대여g++ -std=c++14 -Wall ch1.cpp add.cpp -o test.out -> 해석하면 g++컴파일러 사용해서 ch1.cpp 파일 컴파일하고 add.cpp파일도 컴파일해서 test.out이라는 실행파일 만들어줘 입니다. 이러면 이제 정상적으로 실행이됩니다. cpp배운지 일주일차라 틀린 부분이 있을수도 있어요. 그래도 실행되죠?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
시간초과
우선 순위 큐를 쓰는 대신에 보석을 넣는 벡터(J)에서 erase로 가방에 넣을 수 있는 보석은 바로 제거하는 알고리즘으로 작성하였는데 시간초과가 뜨네요.. erase를 사용해서 시간복잡도가 높아진 것일까요? 이런 방법으로는 문제를 풀 수 없을까요?http://boj.kr/2136c28d9e844ba1b1d04a5e369dada0 또한 j를 초기화 할 때 for문 안에서 초기화 해야하는 것 아닌가요? 가방 크기가 작아 못 들어간 보석도 다시 처음부터 탐색해야하니까요. 근데 for 문안에서 j를 초기화 하면 메모리 초과가 뜨네용 ㅜㅜ #include<bits/stdc++.h>using namespace std; typedef long long ll;ll n, k, ret, temp1, temp;int main(){ ios_base::sync_with_stdio(false);cin.tie(NULL); cout.tie(NULL); cin >> n >> k; vector<pair<ll,ll>> v(n); vector<ll> vv(k); for(int i = 0; i < n; i++){ cin >> v[i].first >> v[i].second; } for(int i = 0; i < k; i++) cin >> vv[i]; sort(v.begin(), v.end()); sort(vv.begin(), vv.end()); priority_queue<ll> pq; // 여기 자리에 있던 int j = 0;를 아래로 옮겼습니다. for(int i = 0; i < k; i++){ int j = 0; while(j < n && v[j].first <= vv[i]) pq.push(v[j++].second); if(pq.size()){ ret += pq.top(); pq.pop(); } } cout << ret << "\n"; return 0;}
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-K 메모리 초과 질문입니다.
항상 강의 잘 듣고 있습니다.큰돌 선생님 강의 듣고 다시 풀어서 제출을 해봤는데 메모리 초과가 뜨더라고요. 그래서 원인을 분석해본 결과 y, x를 moveSwan 함수와 waterMelt 함수에서 지역 변수로 선언할 때 메모리 초과가 뜨는 것 같습니다. 반복문 안에서 변수 선언을 하게 되면 메모리에 부하가 생기는 건가요? 메모리초과 코드http://boj.kr/69f8be6483e4422ca6c664262980c394맞은 코드https://www.acmicpc.net/source/share/4807660d703449afa8092bcb3f32552f
-
미해결[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
좌표 출력 뒤 배경에 bmp 파일 출력
마우스 좌표 출력 뒤에 red.bmp 파일을 출력하도록 바꿔 봤는데요, 이상하게 마우스를 움직여도 좌표 출력값이 업데이트가 안되네요 창을 내렸다가 올리면 그때 출력값이 최신화가 됩니다 어디가 잘못된 걸까요?
-
미해결[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
버튼을 누르지 않았는데도 if 문을 실행하네요
Left 버튼을 누르지 않았는데도 _playerPos.x 구문으로 넘어가서 실행 시 계속 원을 좌측으로 보내 버리네요 코드를 다시 보고 있는데 어디가 잘못되었는지 잘 안보이네요..
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
4-A_19942 인덱스 질문
http://boj.kr/40440de5cbbb48f59125df1e7e30c453질문 3개가 있습니다.1.모든 경우의 수를 찾는 아래의 코드에서 i=0이 아닌 1부터 시작하는 이유는 식재료를 아무것도 고르지 않는 경우의 수는 없기 때문인가요?(최소 1개 이상 식재료를 골라야 하기 때문인가요?) 그러면 그냥 0부터 시작해도 어차피 결과에 영향을 주지는 않으니 그냥 0부터 시작해도 문제는 없겠죠?for (int i=1; i< (1<<n); i++) map은 key-value 쌍으로 알고 있습니다. 그렇다면 아래 코드에서 ret_v의 형태는 (key, value)쌍 으로 (최소 ret 비용, {{1,2,3}, {2,4,5}})이런식으로 들어가 있는건가요? map<int, vector<vector<int>>> ret_v;...if(b>=mp && c>=mf && d>=ms && e>=mv){ if(ret>=sum){ ret=sum; ret_v[ret].push_back(v) 3.처음에 key를 생성할때 insert로 집어 넣어야하는걸로 알고 있는데 그러면 ret_v[ret].push_back(v)말고 ret_v.insert({ret, {v});이런식으로 넣어도 될까요?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
소수 check 함수
아래는 소수 판단 여부를 알려주는 함수입니다! 여기서 if(n%2==0) return 0; 이 부분이 모듈러 연산에 이미 포함되어 있는 내용 아닌가요? (n%2==0) 이 조건도 따로 서술해줘야하는지 궁금합니다. bool check(int n){ if(n<=1) return 0; if(n==2) return 1; if(n%2==0) return 0; <-이건 이미 for (int i =2; i*i <=n; i++){ <-모듈러 연산에 포함되어 있는 것 아닌가요? if (n%i==0) return 0; } return 1; }
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-H 시간초과
https://www.acmicpc.net/source/share/71ef58daaf4144a5bf9ab254f862398a3-H 숨바꼭질4 문제에서 정점을 방문하면서 방문한 정점을 벡터에 담고 그 벡터를 큐로 넘겨주어서 k에 도착했을때 벡터를 출력하도록 로직을 짰습니다. 하지만 시간초과가 나오는데 원인을 잘 모르겠어서 질문드립니다. 그리고 추가로 c++에서는 벡터나 배열의 일부분을 잘라서 이용하는 로직은 잘 사용하지 않는지 궁금합니다. JS로 알고리즘을 풀때는 splice 나 slice등으로 배열을 자르고 복사하는 방식을 자주 사용했었는데 지금까지 큰돌님의 강의를 들으면서 그 와 같은 방식은 잘 못 본 것 같아서 질문드립니다.
-
해결됨[게임 프로그래머 도약반] DirectX11 입문
Reflection은 어떤 식으로 구현하나요?
수업 내용과는 관련이 없을 수도 있을 것 같은데, 개인적으로 dx 포폴에 리플렉션을 구현해 보고 싶어서 궁금해서 찾아보다가 해결이 안 되어서 질문 남깁니다.금속이나 물, 거울 등 반사되어 렌더링 하는 물체는 카메라의 높이나 각도에 따라 실시간으로 새로 그려지는데 이건 어떤 식으로 구현하나요? 1주차에 배운 samplerstate의 mirror를 활용하게 되는건지..제가 고민해 본 방법은 주변 환경을 실시간으로 캡처해서 캐시로 만들고 큐브맵으로 텍스처를 재가공해서 사용하면 될까 싶은데 어렴풋이 떠올리는 방법이랑 실제 구현의 갭은 너무 크네요 ㅜㅜ리플렉션 종류가 많고 해서 너무 광범위한 질문일 거 같은데 디테일하게 질문할 실력이 안되어서 죄송합니다. 참고할만한 책이나 자료라도 추천해주시면 감사하겠습니다.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
5-K 공기청정기가 (y,x) 0,0이나 n-1,0에 걸쳐 있는 경우
이 경우는 제외되나요? 아니면 한쪽 v에는 아무것도 안들어가지고 다른 한쪽만 공기청정 되는건가요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
5-J 질문
지금 해설 코드가 7:40에서 2번으로 푸신 거죠? 1번으로 푸신게 아니라? 해설 코드 에 1,2번이 다 있나요? 저는 1번으로 생각했는데 지금 해설 코드가 2번으로 푸신 거 같고 2번도 로직은 이해가 가는데 해설 코드는 이해가 안되서 질문드립니다 ㅠㅠ
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
4-F word && (word & mask) == word 의 의미
공유 소스 보기 (acmicpc.net)if문이 true인 경우는 (word 가 0이 아님 당연한거 아닌가?) (그리고 and &&) (word&mask==word 둘이 같음) 걸로 봤는데 이런 의미가 아닌가요? word && 이부분을 빼보니까 답이 제대로 안 나오긴 하네요 그러니까 질문은 word &&~ 이 부분이 무슨 의미인지 모르겠네요
-
미해결[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
플레이어 이동에서 Vector 클래스 질문
미로 생성 까진 완료 했고플레이어 넣어서 이동하는 코드 작성 중에 추가된 벡터 클래스 코드 파일 받을 수 있을까요? 수업 대로 코드 작성하고 실행하는데 계속 오류나서 실행이 안 됩니다
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
5-L 해당 문제 조합으로 풀이 삭제하신 의도가 있으실까요?
큰돌님 안녕하세요?어쩌다보니 구형 / 신형 교안 섞여서 갖고 있는데구형교안에는 5-L이 bitmask와 combination 두개의 풀이가 있는것을 보았습니다.신형으로 넘어오면서 combination풀이는 삭제된 것을 알 수 있었는데, 어떤 의도가 있어서 삭제 하셨을거 같아서 문의 드립니다.답변 미리 감사합니다.수강자 드림.