묻고 답해요
169만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨홍정모의 따라하며 배우는 C++
정적 변수 관련 질문
정적변수 a로 정의되어 있으면, 다른 파일에서 a로 접근이 불가능하다고 하셨는데이 두가지 코드는 한 파일에서만 놓고 보면 동일한 결과이지만,첫번째 코드는 static으로 정의되어 있기 때문에 다른 cpp파일에서 a로 접근이 불가능하고, 두번째 코드는 전역변수로 정의되어 있기 때문에 다른 cpp파일에서 a로 접근이 가능한 것이라 보면 되는걸까요? // static 사용한 경우 #include <iostream> using namespace std; void doSomething() { static int a = 1; ++a; cout << a << endl; } int main() { doSomething(); // 2 doSomething(); // 3 doSomething(); // 4 doSomething(); // 5 return 0; }// static 사용 안했지만 static 사용한 것과 동일한 결과 #include <iostream> using namespace std; int a = 1; void doSomething() { ++a; cout << a << endl; } int main() { doSomething(); // 2 doSomething(); // 3 doSomething(); // 4 doSomething(); // 5 return 0; }
-
미해결C++20 훑어보기
내부 버퍼에 있는 값을 변수로 받을 수는 없나요?
안녕하세요.Hi ! ~~ 의 구문을 string 같은 변수로 받아서 활용할 수 있는 방법은 없는지 궁금합니다. 오직 출력만 가능한가요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
7-C 질문
안녕하세요 큰돌 선생님 좋은 강의 감사합니다 문제를 복습하다 질문이 생겼는데요, int &ret = d[y][x]; if (ret) return ret; check[y][x] = 1;이 부분에서 check[y][x] = 1; 이 코드가 위의 두 줄의 코드보다 먼저 나오면 왜 틀리는건가요?제가 처음 코드를 작성했을때 check[y][x] = 1; int &ret = d[y][x]; if (ret) return ret;이런식으로 작성했다가 바로틀렸다고 나와서, 고민하다가 선생님 코드와 비교해보니 이 부분에 차이가 있어서 고쳐서 맞았습니다. 해당 y, x 지점에 dp의 값이 있다하더라도 그 값을 사용하는것 맞지만 방문하는것도 맞으니 상관없다고 생각했는데 혹시 어떤 부분이 잘못된 생각인가요?
-
해결됨[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
강의를 듣고 필기를 하였는데 블로그에 업로드가 가능한가요?
강의 총 2번듣고 개인적으로 노트에 루카스님이 설명하시는걸 필기 했는데블로그에 정리한 필기를 올려도 될까요? 프로그래밍 이란? 적절한 데이터를 저장하고 가공 / 데이터 + 로직데이터에는 rodata 영역 -> readonly datadata 영역 -> 0이 아닌 초기화 값이 있을 경우bss 영역 -> 초기 값이 0이거나 초기값이 없는 변수일 경우char -> 1바이트, short -> 2바이트 int -> 4바이트 , <언리얼엔진 경우 int32> __int64 -> 8바이트1Bit -- 최소 단위 , 8비트 -> 1바이트자료형별 숫자 범위char (-128 ~ 127) , short(-32768 ~ 32767) , int (-21.4억 ~ 21.4억)콘솔/모바일 게임 메모리가 늘 부족하여 바이트 단위로 관리가 필수예) 온라인 게임 4만명이 플레이 할시에 4바이트 * 4만명 데이터정수 오버 플로우, 정수 언더 플로우 -> 범위 초과시 생기는 오류char 의 경우 128을 입력할시에 정수 오버 플로우로 -127이 저장되는 현상이 발생함boolean -> 1,0을 가지는 1바이트 정수 어셈블리에는 bool이라는 것이 없다.연산의 최소 단위는 1바이트이다. 실수의 경우 프로그래밍에서는 실수값은 "근사값"이라 (==를 되도록 사용하지 말자)수가 커질수록 오차범위가 커진다!문자Char -> 알파벳 / 숫자 문자 / wchar_t 유니코드아스키 코드 : 숫자와 알파멧을 매핑함 (1,2,3,4,a,b,c,d,) 97=a유니코드 : 전세계 모든 문자에 대해 유일코드 매핑, 한국/중국어 = 가장많은 번호UTF8 : 알파벳, 숫자 1바이트 / 유럽문자 2바이트 / 한글, 한자 3바이트UTF16: 대부분 문자 2바이트, 고대문자 4바이트문자열: 문자들이 열을 지어서 모여있는것 (정수 1~8바이트 고정길이)문자열의 끝은 NULL(0) ('\0")정리 내용은 이런식의 제가 이해한 바탕으로 개인적인 필기 글로 작성해보고자 합니다괜찮을까요?
-
해결됨[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
함수 포인터, 함수 객체에 대한 질문입니다!
공부하다가 생긴 궁금증입니다. 함수 객체가 함수 포인터의 모든 기능을 대체할 수 있나요?함수 포인터를 매개변수로 받아주는 라이브러리를 사용하는 것을 제외하고c++에서 함수 객체 말고 함수 포인터를 사용해야만 하는 경우가 있나요?함수 객체의 기능이 매우 뛰어난데, std::functional을 이용해서 callable 을 따로 관리하는 기능이 있는 이유는 무엇이고 이점은 무엇인가요? 가장 궁금한 것은 std::functional 을 사용하는 이유입니다!
-
미해결홍정모의 따라하며 배우는 C++
빈칸 채우기 반복문 예제 리뷰 부탁드립니다
#include <iostream> using namespace std; int main() { int outer_count; cin >> outer_count; cout << endl; int outer_count_storeage = outer_count; // 처음 입력값 while (outer_count >= 1) // 처음 입력값만큼 반복 { int inner_count = outer_count_storeage; while (inner_count >= outer_count) // 숫자 반복을 위한 반복문 { cout << inner_count-- << " "; } int save; save = outer_count; while (outer_count >= 2) // 문자 반복을 위한 반복문 { cout << "*" << " "; --outer_count; } outer_count = save; --outer_count; cout << endl; } return 0; }숫자를 입력받아 역순으로 출력하며 빈칸에 *를 넣고자 짠 코드입니다. outer_count_storeage와 save 변수를 통해 값들을 저장하여 코드를 작성하였는데 이와같이 코드를 짜는게 괜찮은지 더 나은 방향이 있었는지 궁금합니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
맥북 m1 세팅 질문드립니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 오류가 뜨면 다음과 같이 진행하라고 하셨는데 정확하게 어디에 a.cpp를 삽입해야하는지 이해가 잘 되지 않습니다. 해당 경로로 이동 후 파일을 만들면 되는걸까요?(mkdir a.cpp)
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-L 질문
저는 Combination을 썼을때 이중 반복문을 사용해야되니까 시간복잡도가 클거라 생각해서 two sum 을 재귀함수를 통해 구현해서 문제를 풀었습니다. 백준에 문제를 제출했을때 8ms 가 나오긴했는데 일반적으로 어떤 방법이 더 효율적인지 여쭤보고 싶습니다.
-
미해결[게임 프로그래머 도약반] DirectX11 입문
강사님 강의자료를 pptx 파일 말고 다른 포멧으로 주실수 없나요
집에서 공부하는데 워드 프로그램이 없으니 고통스럽네요 볼려면 돈내야 하고 그냥 pdf나 그런것로 되어있으면 좋을텐데 다향한 포멧으로 배포 해주시면 감사 감사 할것 같습니다. 그럼 행복하세요
-
미해결홍정모의 따라하며 배우는 C++
구조체 안의 구조체
#include <iostream> #include <string> using namespace std; struct Person { double height; float weight; int age; string name; void print() { cout << height << " " << weight << " " << age << " " << name; cout << endl; } }; struct Family { Person me, mom, dad; }; int main() { Family fm1; Person fm1.me = { 2.0,100.0,20,"Jack Jack" }; fm1.me.age = 4.0; fm1.me.print(); return 0; }여기에서 Person fm1.me = { 2.0,100.0,20,"Jack Jack" };Error expected a ';' E0065가 뜹니다. fm1 안에 정의된 me를 초기화하고 age만을 바꾸어서 출력하고 싶은데 어떻게 해야 되나요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
[2468번] segmentation fault
// Online C++ compiler to run C++ program online #include <bits/stdc++.h> using namespace std; // 많은 비가 내렸을 때 물에 잠기지 않는 안전한 영역이 최대로 몇 개가 만들어 지는 지를 조사하려고 한다. 이때, 문제를 간단하게 하기 위하여, 장마철에 내리는 비의 양에 따라 일정한 높이 이하의 모든 지점은 물에 잠긴다고 가정한다. // 어떤 지역의 높이 정보가 주어졌을 때, 장마철에 물에 잠기지 않는 안전한 영역의 최대 개수를 계산하는 프로그램을 작성하시오. ////입력 : // 1. 첫째 줄에는 어떤 지역을 나타내는 2차원 배열의 행과 열의 개수를 나타내는 수 N (N은 2 이상 100 이하의 정수) // 2. 둘째 줄부터 N개의 각 줄에는 2차원 배열의 첫 번째 행부터 N번째 행까지 순서대로 한 행씩 높이 정보가 입력된다. // 3. 높이는 1이상 100 이하의 정수이다. ////출력 : //첫째 줄에 장마철에 물에 잠기지 않는 안전한 영역의 최대 개수를 출력한다. int n; int arr[100][100]; int visited[100][100]; int dx[4] = {0,0,1,-1}; int dy[4] = {1,-1,0,0}; priority_queue<int> safeAreas; void dfs(int y, int x, int height){ //방문처리 visited[y][x] = true; //4방향 탐색 for(int i=0; i<4; i++){ int nx = x + dx[i]; int ny = y + dy[i]; //탐색 x 조건 if( y < 0 || x < 0 || y >= n || x >= n ) continue; // out of bound if( visited[ny][nx] ) continue; if( arr[ny][nx] <= height ) continue; //물에 잠긴 지역 // 방문 dfs(ny,nx,height); } } // find connected graphs int getSafeAreaCnt(int height){ memset(visited, 0, sizeof(visited)); int connected = 0; for(int i=0; i<n; i++){ for(int j=0; j<n; j++){ if(!visited[j][i] && arr[j][i] > height ){// 방문하지 않았고, safe area dfs(j,i, height); connected++; } } } return connected; } int main() { //입력 cin >> n; string input; int maxHeight=0; for(int i=0; i<n; i++){ for(int j=0; j<n; j++){ cin >> arr[j][i]; maxHeight = max( maxHeight , arr[j][i] ); // 1. 높이의 max 값을 구한다. } } for(int height=0; height <= maxHeight; height++){ safeAreas.push( getSafeAreaCnt( height ) ); } cout << safeAreas.top() << '\n'; } https://www.acmicpc.net/problem/2468안녕하세요 큰돌님. segmentation fault 나는데 어디서 나는지 잘 모르겠습니다 ㅠ priority queue 때문인 거 같은데 한 번 더 확인 해보겠습니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
시간초과
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요 큰돌쌤! 현재 알고리즘을 공부하고 있는 학생입니다. 이 문제에서 ios_base::sync_with_stdio(false);cin.tie(NULL); cout.tie(NULL) '\n' 을 쓰지 않으면 시간초과가 나던데 이런거에 집중하는 거보다 이런 아이디어만 챙겨가면 되겠죠...? 몇몇 문제들이 이런 경우가 있던데 어떻게 공부하면 좋을지 조언을 받으려 게시판에 올립니다!
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-I 17071번 숨바꼭질 5 질문있습니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요 큰돌님,3-I 해설을 보다가 이해가 안가는것이 있어 질문드립니다.수빈이가 3초에 도착하고 동생이 5초에 도착하면 +1,-1 로 만날수 있다 하셨는데해당 코드에서 어떻게 구현된건지 이해가 안갑니다.turn이 시간이고 홀수짝수로 visited에 도착한 시간을 나누는데 turn이 3이면 visited[1][수빈이 위치]에 저장이 되고 nx==b에 의해 바로 break 걸려 출력이 되는것 아닌가요...?이해가 안가 횡설수설 죄송합니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-J 다른 풀이 방법 질문드립니다.
제가 처음에 접근했던 방법은 옷의 개수가 3가지라면 3C0 + 3C1 + 3C2 + 3C3으로 입을 수 있는 모든 경우의 수를 구한 후, 같은 종류의 옷을 입은 경우의 수를 구해 빼는 방식이였는데void combi(int start, vector b){ if(b.size() == k){ print(b); return; } for(int i = start + 1; i < n; i++){ b.push_back(i); combi(i, b); b.pop_back(); } return; }이 함수를 사용해서 map<string,string>mp을 선언하고 옷의 이름과 종류 모두 입력 받아서 같은 종류의 옷을 입은 경우를 판별하여 구할 수는 없는지 여쭤보고 싶습니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
6 - F
http://boj.kr/798b9379c3254770abccef965fd8ee87몬스터 때리는 부분을 제외하면 작성해주신 정답 코드랑 유사해보이는데 어디가 잘못됐는지 잘 모르겠습니다.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-H 질문있습니다
if(isVowel(idx)) mcnt++, scnt = 0, is_include_v = 1;else scnt++, mcnt = 0;if(mcnt == 3 || scnt == 3) flag = 1;이 부분이 제가 이해하고 있는 것이 맞는지 궁금합니다.예제 입력에 ptoui를 예를 들어보겠습니다.for문에서 ptoui라는 문자열을 알파벳 하나하나 받아주면서p -> vcnt++, lcnt = 0 => vcnt = 1, lcnt = 0t -> vcnt++, lcnt = 0 => vcnt = 2, lcnt = 0o -> lcnt++, vcnt = 0 => vcnt = 0, lcnt = 1u -> lcnt++, vcnt = 0 => vcnt = 0, lcnt = 2i -> lcnt++, vcnt = 0 => vcnt = 0, lcnt = 3 다음 if문에서 lcnt == 3이므로 flag = 1이 되고,flag = 1일 때는 not acceptable 출력.이게 맞나요???
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
배열 대신 벡터 사용 해도 괜찮나요?
int cnt[26]; 대신에 vector <int> answer (26); 를 사용했는데어떤 문제 이든지 배열 대신 벡터를 사용 했을 때 문제될 여지가 있을까요?
-
미해결[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
SetConsoleTextAttribute 함수 특수문자 겹침 현상..
위와 같은 현상이 왜일어나는지 아시나요?같은 색으로 하면 괜찮습니다..색은 변경할때 반칸씩 밀려 겹쳐 보이네요..간단한 코딩 아래첨부합니다..#include <iostream>int main(){ int temp = 0; for (int y = 0; y < 25; y++) { for (int x = 0; x < 25; x++) { temp++; //단일색 안밀림.. //SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 1); //색변경시 밀림.. SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), temp % 3 == 0 ? 1 : 2); cout << "■"; } cout << endl; }} 환경은 윈도우 11입니다.
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
exercise8 질문입니다!
안녕하세요! 좋은 강의 덕분에 많이 배우고 있습니다 ㅎㅎ8번 문제를 그냥 실행했을 때, crash가 나야하는데소리만 나고 출력, 호출 스택, IDE에 crash 표시도 생기지가 않습니다..!제가 Mac M1에서 가상 머신으로 띄운 Window의 Visual Studio를 사용하고 있는데, 환경의 문제일까요?원인을 모르겠어서 어떤 문제인지 서치하기가 어렵네요 ㅠArcher의 소멸자 delete pet;에 중단점을 찍고 실행 전 후 사진입니다!
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
4-F 질문입니다.
http://boj.kr/ffa390ab1d0145a8a863f6733fdf21f0k가 주어졌을 때, a n t i c은 무조건 배워야하니까 21개 중 k-5개를 뽑는 경우의 수에서 기저사례에서 최댓값을 갱신하는 방법으로 코드를 짰는데요..제 코드 시간 복잡도를 계산해보면 21C(k-5)*50*15로 계산했습니다(50은 단어의 최대개수,15는 k의 최대 범위). 궁금한 점은 1.저의 코드의 시간복잡도 계산을 저렇게 하는게 맞는지 2. 왜 시간초과가 나는지 모르겠습니다.