묻고 답해요
169만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-O 질문 있습니다
큰돌 선생님이 제 멘토라고 생각하고 열심히 배우는 중입니다 ㅎㅎ다음은 제 코드입니다.http://boj.kr/9f42d776453a4633b13e660610a7eb74cnt가 찾은 ret 이상이면 (제 코드에서는 mn) return하는 코를 안 적으면 왜 시간초과가 나는지 잘 모르겠습니다.문제를 풀 때 최악의 상황을 생각해서 그 최악의 상황을 돌렸을 때 제한 시간안에 돌아가야 한다고 생각합니다.만약 정답이 가로선 3개를 추가하는 것인 최악의 상황에서 이 코드가 유의미한 시간복잡도 차이를 만들어내지 못하는게 아닌가 하고 생각합니다. 이 문제 같은 경우 테스트케이스가 그러한 방식으로 짜여져있어서 통과와 시간초과라는 차이를 만드는 것인지 궁금합니다.전에 선생님께서 가르쳐주신 조합 코드를 생각해보면 한번 확인한 위치는 다시는 확인을 안 하도록 start+1을 해서 코드를 작성했던 기억이 납니다. 하지만 이 코드는 확인했던 행 - 1까지는 확인을 안하도록 here을 사용하지만 열, 즉 j는 1부터 확인함으로써 중복으로 검사하고 있습니다. 왜 무한루프가 안 생기는지 이해가 잘 되지 않습니다.
-
미해결홍정모의 따라하며 배우는 C++
46분경 전역 상수 설명에서 메모리 주소에 대해 질문드립니다
MyConstants에서 extern을 뺐을 때 main.cpp와 test.cpp에서 Constants::pi 의 주소가 다른 것은 이해가 됩니다. 근데 MyConstants에서 extern 대신에 static을 썼을 때는 프로그램 실행 시 최초에 한 번만 메모리 할당을 받기 때문에 그 주소가 같을 것이라 기대를 하였지만 다르게 나옵니다. 그 이유가 무엇일까요?
-
미해결홍정모의 따라하며 배우는 C++
선택정렬 코드리뷰 가능하신가요?
스스로 디버깅 계속해보면서 구현해내는데는 성공했습니다만 정답이라고 할 수 있는 답안인가요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
알고리즘 교안 62 페이지 관련 질문드립니다!
알고리즘 교안 에서 질문드립니다!혹시 62 페이지 타입변환시 주의할점에서 p가 어떤건지 궁금합니다!
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-O 질문있습니다
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요 큰돌님. 제 코드가 "틀렸습니다"로 뜨는 이유를 모르겠습니다..... http://boj.kr/d1dcc4d3cd2645619e493eab43591718 감사합니다:)
-
해결됨[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
Strcat함수 질문입니다
제가 군대 사지방이라 강의가 잘 안나와서 그런데 일단 혼자 만들어보면서 출력물은 똑같이 만들어지긴 했습니다만이렇게 코드를 짜보았는데 혹시 결과만 똑같으면 어떤 코드든지딱히 상관은 없는건지 궁금합니다 ex)최적화나 가독성등등
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-E 기저조건 질문있습니다
안녕하세요 선생님 🙂함수에 있는 기저조건과 4가지 숫자가 같을 경우에 리턴 값으로 string(1, a[y][x])를 주셨는데요, 1 또는 0이라고 말씀해주셨지만 이해가 가지 않습니다. string 키워드로 교안과 구글을 찾아봤고, xstring으로 타고 들어가 분석해보려고도 했지만 마땅한 답을 찾지 못하였습니다.string함수 관한 설명이나 참고할 수 있는 교안의 목차를 알려주신다면 정말 감사하겠습니다 🙂 추가로, 함수 안에 있는 string ret = "";를 전역으로 빼면 값이 이상해지더라구요. 이유를 잘 모르겠어서 질문드립니다.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-P 연구소 solve()>fill() 함수에서 전역변수 vector<> v가 초기화 될 수 있나요?
제가 코드안되는 부분 찾다가 solve()>fill(visited) 함수에서 전역변수 vector<> v의 크기가 0으로 초기화 되는 문제를 겪었습니다https://www.acmicpc.net/source/78783272상세한 문제는 위 코드링크에 주석 달아놓았습니다무언가 잘못한 거같은데 모르겠네요// 개요 vector<pair<int, int>> v; int solve(){ // 여기서 visited 아니라 v가 초기화됨 fill(&visited,,) } int main(){ max(ret,solve()); }
-
미해결홍정모의 따라하며 배우는 C++
[10:25] AutoPtr 포인터의 메모리 위치 질문
AutoPtr을 사용 시, 함수?가 끝나게 되면 자동으로 delete를 해주는 것은 이해했습니다. 그렇다면 res1이라는 포인터는 스택 메모리에 저장이 되어 있다고 생각하면 될까요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
5 - B 질문입니다!
#include <bits/stdc++.h> using namespace std; string str, fire_str; string ret=""; int main() { cin >> str >> fire_str; for (char i:str){ ret+=i; if (i==fire_str[fire_str.size()-1]){ if (ret.size()-fire_str.size()<0) continue; else if (ret.substr(ret.size()-fire_str.size(),fire_str.size())==fire_str){ ret.erase(ret.size()-fire_str.size(),fire_str.size()); } } } if (ret=="") cout << "FRULA"; else cout << ret; }out of range 제출하게 되면 out of range 에러가 뜨는데 이유를 모르겠습니다. 어디서 나는 건가요??
-
해결됨홍정모의 따라하며 배우는 C++
캐스팅에 대해 질문이 있습니다.
18:30 즈음부터 명시적 형변환에 대한 설명이 나옵니다. 내용은 아래와 같습니다.// C 스타일 캐스팅 (int)4.0; // CPP 스타일 캐스팅 int(4.0);그런데 따로 알아보니 강의 내용과 좀 맞지 않는 부분이 있는 것 같았습니다. 아래 링크를 간략하게 설명하면,https://en.cppreference.com/w/cpp/language/explicit_cast(int)4.0 과 같은 C-style cast를 컴파일러가 만나게 되면 아래 순서에서 맨 처음으로 해당 캐스팅의 조건을 만족하는 것이 선택되어 수행된다고 합니다. (컴파일 될 수 없더라도!)const_caststatic_caststatic_cast 다음 const_castreinterpret_castreinterpret_cast 다음 const_cast즉, C-style cast를 사용하면 위 캐스팅 종류 중 어떤 것이 사용되었는지 명확히 알 수 없다는 것을 의미합니다.여기에 추가적으로, 클래스 간 상속관계에서 private와 protected가 public으로 간주될 수도 있는 등의 예외도 존재하기 때문에 최근에는 C-style cast가 권장되지 않는 것으로 보입니다. 19:10에는 C-style cast와 나머지 캐스팅 방식 간에 기능성 차이가 없다고 나오는데, 차이가 충분히 있는 것 같습니다. 아래 Stackoverflow 글에도 관련 내용이 있습니다.https://stackoverflow.com/questions/27359961/c-difference-between-reinterpret-cast-and-c-style-cast 그리고 위에 있던 cppreference 링크의 functional-style cast 부분을 살펴보면, CPP 스타일 캐스팅이라고 소개된 int(4.0)는 사실상 C-style인 것을 알 수 있습니다.If there is exactly one expression in parentheses, this cast expression is exactly equivalent to the corresponding C-style cast expression.그래서 const_cast, static_cast, reinterpret_cast가 CPP 스타일 캐스팅이라고 소개되는 것이 옳지 않나 생각합니다.
-
미해결코딩테스트 실전 모의고사(with C++) : 대기업 대비
BFS 코드 중에 이해가 안되는 부분이 있습니다.
import java.io.*; import java.util.*; class Solution { static BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); static StringBuilder sb = new StringBuilder(); public static void main(String[] args) throws IOException { n = Integer.parseInt(br.readLine()); arr = new int[n][n]; check = new int[n][n]; check2 = new int[n][n]; Queue<Point> q = new LinkedList<>(); for(int i=0; i<n; i++){ String[] input = br.readLine().split(" "); for(int j=0; j<n; j++){ arr[i][j] = Integer.parseInt(input[j]); if(arr[i][j]==2) { q.add(new Point(i, j, 0)); check2[i][j] = 1; } } } /** * 3번 5번 케이스에서 하나씩 크게 결과가 나온다 * * while (!q.isEmpty()){ * Point poll = q.poll(); * * if(check[poll.x][poll.y] == 0){ * check[poll.x][poll.y] = 1; * for(int j=0; j<4; j++){ * int nx = dx[j] + poll.x; * int ny = dy[j] + poll.y; * if(nx>=0 && ny>=0 && nx<n && ny<n && check[nx][ny] == 0 && arr[nx][ny] == 0){ * q.add(new Point(nx,ny, poll.cnt+1)); * res = Math.max(res, poll.cnt+1); * } * } * } * } */ while (!q.isEmpty()){ Point poll = q.poll(); for(int j=0; j<4; j++){ int nx = dx[j] + poll.x; int ny = dy[j] + poll.y; if(nx>=0 && ny>=0 && nx<n && ny<n && check2[nx][ny] == 0 && arr[nx][ny] == 0){ check2[nx][ny] = 1; q.add(new Point(nx,ny, poll.cnt+1)); res = Math.max(res, poll.cnt+1); } } } System.out.println(res); } static int dx[]= {-1,1,0,0}, dy[]= {0,0,-1,1}; static int res = 0, n; static int arr[][], check[][], check2[][]; static class Point{ int x, y, cnt; Point(int a, int b, int c){ x=a; y=b; cnt=c; } } } 주석 코드로 BFS를 돌리면 3번과 5번 케이스에서 실패합니다. 선생님의 코드를 참고해서 check 배열을 이용하는 검증부분만 순서를 바꿔서 해결했는데요. 결국 이해는 못해서 두가지 코드 모두 동일한 알고리즘으로 보입니다 ㅠㅠ 명쾌한 답변 가능할까요
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-J 주난의 난 이 코드는 어떤가요??
안녕하세요 ㅎㅎ 처음으로 3주차 문제를 혼자 힘으로 풀 수 있어서 너무 기뻤는데, 선생님과 다르게 풀어서 혹시 비효율적인 코드는 아닐까하고 여쭤보러 왔습니다! 얼마 전까지 실버도 못 풀던 제가 골드를 혼자 힘으로 맞출 수 있게 해주셔서 너무 감사합니다 ㅠㅠㅠ http://boj.kr/106cce4c523c4f4c8e18e73d413433e4
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
플로이드 워셜 관련 질문
플로이드 문제에서 가령 입력값이 아래와 같다고 할 때, 541 3 103 2 11 5 15 3 1 d[1][2] 의 값은 K = 3 일 때 d[1][2] = d[1][3] + d[3][2] = 11 그런데 d[1][3]은 이후에 K가 5일 때 연산을 통해d[1][3] = d[1][5] + d[5][3] = 2 근데 작아진 d[1][3]의 값이 반영되려면 K가 5일 때, d[1][5] + d[5][3] 연산을 한 '이후에' K가 3일 때d[1][2] =d[1][3] + d[3][2] 연산을 통해 d[1][2] 의 값이 바뀌어야 한다고 생각이 드는데 점점 증가해야 하는 K값이 값자기 작아질수는 없으니 그건 불가능합니다. d[1][2]의 값이 3이 되는데 필요한 어떤 연산을 제가 놓친건지 모르겠습니다...
-
미해결[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
단일쓰레드로 어디까지 커버가 될까요?
루키스님 강의 잘 듣고 여러가지 연동을 시도해서 컨텐츠를 만드는 중인데요 지금은 데이터나 오브젝트들이 많지 않아서 별 문제가 없는데 나중에 3d 포폴도 이걸 기반으로 만들고 싶어서 멀티쓰레드를 사용해야할 정도는 어느정도 되야하는지가 궁긍합니다. 그리고 마지막에 aws 에 서버 올리시는 부분을 잠깐 언급해주셨는데 c++서버강의엔 그런부분이 없는것 같아 그부분 강의 예정이 있는지도, 아니면 관련 자료나 공부를 어떻게 해야하는지도 궁급합니다
-
미해결[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
Static UserManager um을 포인터로 만들어서 리턴 하면 안되는 이유가 궁금합니다.
아래의 코드와 같이 포인터로 변수를 만들어줘서 넘겨주면 AddUser() 함수를 부를때 '_userCount' 올려주는 변수에서 '액세스 위반 this가 nullptr 입니다.' 라고 뜹니다.그 이유가 객체를 생성해 주지 않았기 때문에 'nullptr'이 생성 되는 건가요? 이해가 잘 되지 않는 부분이 static 함수를 부를 때 변수를 초기화 되어 전역 변수로 사용되는데, 포인터는 객체가 생성되지 않는 것 같더라구요.그래서 new UserManager( ) 를 통해 동적 할당을 하니 객체가 하나씩 생기는 문제가 발생하고, static 메모리와 동적 할당 되는 메모리 위치(?), 특성(?)이 달라서 생기는 문제인가 싶습니다.public: UserManager() :_userCount(0) {} static UserManager* GetInstance() { static UserManager* um = new UserManager(); um->_userCount = 0; return um; } 주저리 주저리 궁금한 내용을 적다보니 제대로 설명했는지 모르겠네요... ㅡㅜ 답변해 주신다면 감사하겠습니다. 혹시 몰라 _userCount를 생성자로 초기화 시켜줬습니다.class UserManager { public: UserManager() :_userCount(0) {} static UserManager* GetInstance() { static UserManager* um = nullptr; return um; } public: void AddUser() { _userCount++; } int GetUserCount() { return _userCount; } private: int _userCount = 0; };
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
dp를 이차원 배열로 만들어서 풀어봤는데, 틀립니다.
http://boj.kr/7c9fc1fdb4894c518c897537de03f02b선생님, 안녕하세요~dp를 이차원 배열로 만들어서 n번째 인덱스까지 돈m을 썼을때의 최대 칼로리 양을 저장하게 했습니다. int dp[5004][10004]; // n번째 인덱스까지 돈m을 썼을때 최대 칼로리양그 후 나머지 부분은, 동전문제에서 했던 것과 비슷하게, 단지 이차원 배열이니깐 dp[i][j]를 비교할 때, 가격이 이전 인덱스가 더 큰지, 아니면 이번 인덱스에서 가격만큼을 빼고 칼로리만큼을 더한게 더 큰지 비교해주도록 했는데요.for (int i = 1; i <= n; i++) { for (int j = 1 * 100; j <= m * 100; j++) { if (price[i] > j) { dp[i][j] = dp[i - 1][j]; } else { dp[i][j] = max(dp[i - 1][j], dp[i][j - price[i]] + cal[i]); } mx = max(mx, dp[i][j]); } }지금 제가 생각하기에, 코드를 이렇게 짰을때, 일차원배열과 이차원배열이 큰 차이가 있나 싶기도하고, 다른 냅색문제에서 이렇게해서 통과하는 경우가 있었기에, 어떤 차이가 있을까, 반례가 뭐가있을까 질문드리고 싶습니다.
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
함수 기초 질문입니다!
반환타입은 무조건 있어야 하고 매개변수는 사용해도, 안해도 상관이 없다고 하셨는데, 혹시 그 이유에 대해서 여쭤볼 수 있을까요? (반환타입을 무조건 사용해야하는 이유와 매개변수를 사용해도 안해도 상관없는 이유)반환타입이 void 일 경우, return은 사용해도 안해도 된다고 하셨습니다. 만약, 반환타입이 int, float, char 등일 경우에는 무조건 return을 사용해야 할까요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
6-J ret-1 관련 질문 드립니다.
큰돌님 안녕하세요? http://boj.kr/bf56f9dfa3334722b3c4d22ac01f67da저는6-J 해당 문제에서ret=60000000004로 설정하고이분탐색에서ret = min(ret, mid);으로 최적의 ret을 찾는 방법을 사용하고 싶은데요,강의의 ret-1이 저는 아직 이해가 안가서 질문 드립니다. Q1. 해설에서는 ret=0;으로 설정하고 이분탐색에서ret=mid;로 min()함수 없이 사용하셨는데 상관 없는건가요? Q2.강의 8:16초 28명과 35명 중에서 35명를 찾는 과정을 먼저 한다고 하셨는데최적의 ret(mid)인 35 찾는건 이해했는데ret-1코드로 인해 (해설 코드 26 line, 또는 강의 7분 54초 부분)28부터 시작하는게 아니라 34(35-1은 34이므로)부터 하는것 아닌가요?이부분 궁금해서 질문 드립니다. 답변 미리 감사합니다.수강자 올림.
-
미해결[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
리소스 파일 경로
강사님 혹시 제 코드와 강사님 코드를 비교하려고 파일을 다운받았는데요 리소스파일 이미지 경로가 틀려서 확인을 못하는데 혹시 어디서 변경할 수 있는지 알 수 있을까요? 오류는 계속 이렇게 뜹니다.