// Online C++ compiler to run C++ program online #include <bits/stdc++.h> using namespace std; // 입력의 첫째 줄에는 공백으로 구분된 두 정수 R과 C가 주어진다. 단, 1 ≤ R, C ≤ 1000 이다. R은 미로 행의 개수, C는 열의 개수이다. typedef pair<int,int> pp; int R,C; int visited[1004][1004]; char cmap[1004][1004]; int fmap[1004][1004]; int dx[4] = {0,0,1,-1}; int dy[4] = {-1,1,0,0}; //pp start; queue<pp> q; queue<pp> fq; bool outOfBound(int y, int x){ return (y < 0 || x < 0 || y >= R || x >= C ); } bool isExit(int y, int x){//탈출구 return (y == 0 || x == 0 || y == R - 1 || x == C -1); } bool isWall(int y, int x){ return cmap[y][x] == '#'; } void input(){ // 초기화 fill(&fmap[0][0],&fmap[0][0] + 1004 * 1004 , INT_MAX ); cin >>R>>C; for(int i=0;i<R;i++) for(int j=0;j<C;j++){ cin >> cmap[i][j]; if(cmap[i][j] == 'F'){//fire then fmap[i][j] = 1; fq.push({i,j}); } if(cmap[i][j] == 'J'){//출발 지점 q.push({i,j}); visited[i][j] = 1; } } } //bfs int solution(){ int y,x; int ny,nx; //bfs fire while(!fq.empty()){ tie(y,x) = fq.front(); fq.pop(); for(int i=0; i<4; i++){ ny = y + dy[i]; nx = x + dx[i]; if( fmap[ny][nx] != INT_MAX ) continue; //visited if(isWall(ny,nx) || outOfBound(ny,nx)) continue; fq.push({ny,nx}); fmap[ny][nx] = fmap[y][x] + 1; } } //bfs person while(!q.empty()){ tie(y,x) = q.front(); q.pop(); if(isExit(y,x)){ return visited[y][x]; } for(int i=0; i<4; i++){ ny = y + dy[i]; nx = x + dx[i]; if(visited[ny][nx] || isWall(ny,nx) || outOfBound(ny,nx)) continue; if(fmap[ny][nx] <= visited[x][y] + 1) continue; //이미 불이 있는 지역 q.push({ny,nx}); visited[ny][nx] = visited[y][x] + 1; } } return -1; } //solve void solve(){ input(); int result = solution(); if(result == -1) cout << "IMPOSSIBLE"; else cout << result; } int main() { ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); solve(); } bool outOfBound(int y, int x){ return (y < 0 || x < 0 || y >= R || x >= C ); } bool isExit(int y, int x){//탈출구 return (y == 0 || x == 0 || y == R - 1 || x == C -1); } bool isWall(int y, int x){ return cmap[y][x] == '#'; } 2% 오답 처리가 나는데 도저히 모르겠습니다. ㅠㅠ 위로 뺀 bool 컨디션 체크에서 문제가 생겼을 수도 있을 거 같은데.. 로직 구조가 해답과 거의 유사해서 어디서 문제가 생겼는지 디버깅 해도 안 보이네요 ㅠㅠ.. 그리고 ##### #J#F# ##..# #...# #...# 원본 반례 찾아보다가 시험 해본 케이슨데 해설지 답에서 걸러내지 못하는 것 같습니다. 코테 너무 어려워요 ㅠㅠㅠ 4179번: 불! (acmicpc.net)
강의 중 아래 코드를 작성하고 난 후, 코드를 변형해 보다가 의문의 생겨 질문드립니다. class Something { public: string m_value = "default"; const string& getValue() const { cout << "const version" << endl; return m_value; } string& getValue() { cout << "non-const version" << endl; return m_value; } }; 영상에서 const member function 은 함수 내에서 멤버 변수를 수정하지 않겠다는 의미라고 나왔습니다. 그런데 해당 함수의 반환 타입에 해당하는 const 를 지우자 에러가 발생합니다. const member function이 아닌 getValue() 와 하는 작업이 같은데도 불구하구요.(둘 다 함수 내부에서 값을 변경하지 않음) string& getValue() const { cout << "const version" << endl; return m_value; // 오류 발생 } 오류문을 검색하여 유사한 질문을 찾을 수 있었습니다. https://stackoverflow.com/questions/30146562/error-qualifiers-dropped-in-binding-reference-of-type-x-to-initializer-of-type 링크의 답변을 읽고 제가 이해한 바는 다음과 같습니다 : 함수의 반환형이 참조형이라면 잠재적으로 접근하여 값을 변경할 가능성이 있는데, 본 함수는 const member function 라서 함수의 멤버 변수가 변하지 않아야 하기에 이를 보장하기 위하여 수정하도록 에러를 발생시킨다고 보면 될까요? 오류가 발생하던 함수의 형태에서 & 와 const 둘 중 하나를 지웠을 때 에러가 사라지는 것을 보면 맞는 것 같긴 한데, 정확한 설명을 듣고 싶습니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. a.cpp 파일을 visual studio code 에서 만들었는데 다음과 같이 오류가 발생합니다. 수업 자료처럼 open in intergrated terminal을 눌러서 컴파일명령어 실행한 상태입니다.
std::function<bool(const int&)> fcnptr = isEven; cout << fcnptr << endl; 이 방식의 초기화에서는 오류가 뜨고 bool(*fcnptr)(const int&) = isEven; cout << fcnptr << endl; 이 초기화에서는 오류가 안 뜨는 이유가 궁금합니다. 뜨는 에러 : E0349 no operator matches these operands
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. a.cpp 파일을 visual studio code로 만들면 되는걸까요?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. http://boj.kr/783d87e6fdf94af598c1204fe09a8c3b 반례주시면 감사하겠습니다.. 왜 오답인지 모르겠습니다..
http://boj.kr/ac9c5032616d42d3b9599642e583fdcb 더 효율적인 방법을 제시해 주셨는데 이 방식도 알아내고 싶어 질문 드립니다. 이 방식대로 풀어내면 정렬하는 곳에서 문제가 생기는데 1 4 10 1 4 6 이렇게 정렬되어 사전순 정렬이 불가능한데.. 백터<string>에 담긴 "1 4 10", "1 4 6" 를 정렬하려면 어떡하면 좋을까요? 뭔가.. split을 잘 사용하면 될 것 같은 느낌이 있는데 과부하가 걸렸는지 사고가 안되네요 ㅎㅎㅜ
앞부분과 뒷부분을 비교해서 DA로 출력하는 조건문에서 조건의 뒷부분을 비교하는 조건에 대해서 이해가 되지 않습니다.string f; (ab * ab 중 앞 ab)string e; (ab * ab 중 뒤 ab) 문제로 제시된 문자열의 사이즈에서 뒷부분의 사이즈를 빼면 조건의 뒷 문자에 대한 조건이 완성되는 이유가 궁금합니다. if(f == s.substr(0,f.size()) && e == s.substr(s.size() - e.size()))
[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part5: UE5 & IOCP 서버 연동
안녕하세요. 06.+마무리.zip을 다운받아 풀고 S1.sln 파일을 실행시키면 VS에서 프로젝트 내 파일들을 읽어오질 못합니다. 그래서 S1.uproject에서 Generate Cisual Studio Project File을 해주고 솔루션을 실행시키면 프로젝트 내 파일들이 잘 나옵니다. 근데 빌드를 하면 다음과 같은 에러가 납니다. 1>[18/23] Compile [x64] S1Player.cpp cancelled 1>[19/23] Compile [x64] S1GameInstance.gen.cpp cancelled 1>[20/23] Compile [x64] S1Player.gen.cpp cancelled 1>[21/23] Compile [x64] ClientPacketHandler.cpp cancelled 1>[22/23] Compile [x64] S1.init.gen.cpp cancelled 1>[23/23] Compile [x64] BufferReader.cpp cancelled 1>C:\Program Files\Microsoft Visual Studio\2022\Professional\MSBuild\Microsoft\VC\v170\Microsoft.MakeFile.Targets(44,5): error MSB3073: The command ""D:\Epic Games\UE_5.2\Engine\Build\BatchFiles\Build.bat" S1Editor Win64 Development -Project="C:\Users\yesun\Downloads\06.+마무리\MMO\S1\S1.uproject" -WaitMutex -FromMsBuild" exited with code 6. 1>Done building project "S1.vcxproj" -- FAILED. ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ========== ========== Build started at 5:33 PM and took 01.657 seconds ========== 마지막 5.3버전 예제도 마찬가지로 압축푼 프로젝트파일을 실행하면 VS 에서 파일이 제대로 안나옵니다. 하지만 06. +마무리.zi p 과는 다르게 S1.uproject에서 Generate Cisual Studio Project File을 해주고 다시 VS 오픈해서 빌드하면 에러없이 언리얼 에디터가 잘 실행됩니다. 제가 뭘 잘못 실행한건지 뭔가 세팅을 제대로 안한건지 왜 이런 현상이 일어나는지 알수 있을까요?
7.3강 16초 부분과 관련해 질문 드립니다. void foo(int* &ptr) { cout << ptr << " " << &ptr << endl; } int main() { int x = 5; int *ptr = &x; cout << ptr << " " << &ptr << endl; foo(ptr); return 0; } 여기서 foo함수의 매개변수 부분에 왜 int* ptr 이 아닌 int* &ptr 로 쓰는지 궁금합니다. 그리고 int* &ptr 부분에서 &가 의미하는 것이 주소를 말하는 것인지, 참조를 말하는 것인지 헷갈리는데 어떤게 맞는지 궁금합니다. 감사합니다.
[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
안녕하세요 루키스님 항상 양질의 강의 감사합니다. 제가 현재 이 강의에서 서버 제외한 부분만 전부 수강을 했고 이제 서버부분을 들으려고 하는데 [C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버 이 강의도 소지하고 있어서 위 강의를 먼저 수강 후 현재 강의를 듣는게 나을지 아니면 이 강의를 완독 후 Part4 강의를 듣는게 나을지 질문드립니다. PS: part5도 구매예정입니다