묻고 답해요
169만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
12100번 구조체를 사용하지 않는 코드가 가능할까요?
안녕하세요 강사님~해당 문제를 처음 풀 때 애초에 구조체를 사용할 생각을 떠올리지 못 해서 구조체 없이 강사님 코드의 rotate90 메서드와 move메서드 아이디어만 활용해서 코드를 작성해보려고 했는데 막혔습니다 ㅜ제가 생각한 접근법은 완탐으로 5번을 이동시킬 수 있는 모든 경우의 수를 체크해보려했습니다. 근데 기존 완탐 문제들과는 다르게 단순 visited = 0;하는 원복 패턴이 아니라 원복은 불가능해보이고, 원복없이 배열을 90도 회전 -> move(이동하기)까지 마치고 복사 배열을 다음 재귀함수에 넘겨주려고 했는데 그럼 move 메서드에서 배열을 변환 후 복사 배열을 리턴해줘야 되지 않나요? array는 리턴이 되는건지 검색해봐도 처음보는 코드들만 난무해서..강사님 코드는 애초에 구조체 내부 각 메서드 마지막에 memcpy를 사용하여 변환된 a 배열을 잘 보존시키는데 구조체 방식이 아니라면 이 문제를 해결할 방법이 없을까요?이렇게 아예 접근조차 못 하는 문제들은 그냥 강사님 코드보며 외우고 넘어가야하는지 이러면 실력이 느는 것인지 고민되네요 ㅜ마지막으로 해당 강의에서 move함수가 ⬆️(윗방향)으로 블록이동한다고 설명하시는데 코드는 ⬅️ 방향으로 블록이동인 것 같은데 제가 이해한 게 맞을까요?
-
미해결[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
해당 강의에서 원활한 수강을 위해선 운영체제가 window여야 한다고 올려놨는데혹시 운영체제를 ubunto로 해도 문제가 없을련지요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
재귀함수를 통한 순열 구현이 잘 이해가 가지 않습니다
순열을을 도식화 했을때swap(0, 0) swap(1 , 0) , swap(2 , 0)하고 다음과정에 permutation함수가 재귀 호출 되는데요제가 이해하기론permutation(3 , 3 , 1)permuatation(3, 3, 2)permutation(3 , 3, 3) 이 맞는거 같은데 왜permutation(3 , 3 , 1)permuatation(3, 3, 1)permutation(3 , 3, 1)이렇게 되는지 이해가 되지 않습니다 ㅠㅠ
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
[5-B] 메모리 초과
split를 활용했는데 47%까지 가다 메모리 초과가 발생하는데 혹시 이유가 뭔지 궁금합니다 ㅠㅠ어느 부분이 공간 복잡도를 많이 잡나요?? 재귀적으로 함수를 호출해서 그런가요?? #include <bits/stdc++.h> using namespace std; string S, bS; vector<string> split(string input, string delimiter){ vector<string> ret; long long pos = 0; string token = ""; while ((pos = input.find(delimiter))!=string::npos) { token = input.substr(0, pos); ret.push_back(token); input.erase(0, pos+delimiter.length()); } ret.push_back(input); return ret; } void go(string inputs){ if(inputs==""){cout << "FRULA"; return;} vector<string> new_str_v = split(inputs, bS); if(!new_str_v.empty()){ if(new_str_v[0] == inputs){ cout << inputs; return; }else{ string new_str = ""; for(auto i : new_str_v) new_str+=i; new_str_v.clear(); go(new_str); } } return; } int main(){ ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); cin >> S >> bS; go(S); }
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-H 질문합니다.
안녕하세요. 선생님강의 항상 잘 보고 있습니다.http://boj.kr/748c1be340784788af3183283cd97163배열로 prev 하신 부분을 강의 듣기전에 map으로 풀었는데 왜 틀렸는지 잘 모르겠습니다.
-
미해결[하루 10분|C++] 누구나 쉽게 배우는 C++ 프로그래밍 입문
똑같이 만든 것 같은데 출력이 안돼요..
(사진)
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-H 질문
안녕하세요 강사님 모범답안에서 몇가지 질문드립니다1. if(isVowel(idx)){ lcnt++, vcnt = 0, is_include_v = 1; }else{ vcnt++, lcnt = 0; }여기서 카운트하는 변수를 서로 바꿔도 상관 없는거죠? 밑의 코드처럼요!if(isVowel(idx)){ vcnt++, lcnt = 0, is_include_v = 1; }else{ lcnt++, vcnt = 0; }2. 위에서 int prev = -1; 선언했고 밑에 if문에서 if(i >= 1 && (prev == idx) && (idx != 'e' && idx != 'o'))이렇게 prev를 사용하셨는데요 두 코드 사이에 prev값이 증가하는 코드가 따로 없는거같은데 -1이었던 prev가 어떻게 idx값이랑 같을수가있나요? 이전값prev와 현재값idx가 같으면 동일한 문자 2개가 연속되는것이다 라는 의도는 알겠는데 어떻게 같을수가있는지 (prev == idx) 이 코드 이해가 안됩니다ㅠ
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
알고리즘 교안을 어떻게 공부해야하는지 질문드립니다.
안녕하세요. 대학교 알고리즘 대회 준비중인 고3입니다.강의에 제공하는 교안을 다운받아서 5월 초부터 지금까지 64쪽까지 하기는 했습니다 그런데앞쪽에 나오는 개념들이 아직 배우지 않았는 뒤쪽에 그 개념 설명이 있는 경우에는 제가 어떻게 공부해야 해야하는지 모르겠습니다.예를 들어 64쪽에 이터레이터 예제코드에는 push_back()이 있고 이거는 88쪽에 개념이 설명되어있습니다.또 42쪽의 split에는 백터 개념이 사용되는데 이거는 그 앞에서 배우지 않았던 거라서 이게 뭐지? 하게 되구요..이런식으로 뒤쪽에 개념 설명이 있는 것들이 앞쪽에 코드예제에 사용될 때가 있는데 이럴때는 이떻게 공부해야할까요?? 혹시나 제가 잘못 공부하고 있는게 아닌지 걱정됩니다. ㅜㅜ8월달이 대회이고, 저는 php를 조금 했고 이 강의를 처음 시작할땐 c++은 거의 몰랐었습니다.아, 그리고 글을 읽어보니 부트캠프 코딩테스트는 5주차 정도면 쉽게 하실 수 있을거라는 댓글을 보았는데 혹사 대학교 알고리즘 대회도 동일할까요? 국민대 알고리즘 대회를 준비하고 있습니다.감사합니다!!
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
좌표를 2차원 배열로 나타낼때
cin >> m >> n >> k;저는 이런식으로 큰돌님과 거꾸로 해서 풀었는데요. fill(&a[0][0], &a[100][101], 1); for (int i = 0; i < k; i++) { cin >> sx >> sy; cin >> ex >> ey; ey -= 1; ex -= 1; a[sy][sx] = 0; //2,0 a[ey][ex] = 0;// 3,3 for (int j = sy; j <= ey; j++) { for (int p = sx; p <= ex; p++) { a[j][p] = 0; } } 아래 큰돌님 소스가 더 간단한 것 같아서 이해를 하려고 하는데 머리에서 쥐가나네요.. for(int i = 0; i < k; i++){ cin >> x1 >> y1 >> x2 >> y2; for(int x = x1; x < x2; x++){ for(int y = y1; y < y2; y++){ a[y][x] = 1; } } 0대신 1로 표기하는 것은 이해햇으나, 이중포문의 순서나 a[][] 에서 x,y가 어느순서로 들어가는지 사고과정을 좀 알려주시면 감사하겠습니다. } }
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
atoi를 이용한 코드가 틀린 이유
http://boj.kr/216b077f0cbc47fabca1436ebcabad2b선생님 이 문제를 atoi를 이용해서 풀 면 틀렸다고 뜨는데 그 이유가 atoi함수 자체가 string을 int로 바꾸는거라 string의 길이 제한을 넘어가기 때문에 틀렸다고 뜨는 건가요??
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-F 문제 이해가 되질 않습니다.
예제 입력 1에 왜 출력이 6이 나오는지 이해가 되질 않습니다.1 -> 3 -> 3 -> 5 순으로 사과를 받게 되면 최소 거리가 4라고 생각합니다.
-
미해결홍정모의 따라하며 배우는 C++
2.5 연습문제 추가질문
선생님께서 연습문제로 주신 것 중에 이것들을 과학적 표기법을 이용해서 바꿔보라고 하신 게 있습니다.0.0010000.0000000001234560000.000질문 도우미 선생님께서1.000e-31.0e-102.3456e8이렇게 바꿔주셨습니다.그런데 관련해서 몇 가지 질문이 있습니다ㅠ1.000e-3을 출력해보면 0.001이 나오는데 이러면 0.001 뒤에 있는 000이 안 나오는데 혹시 뒤의 000도 나오게 하는 방법이 있나요 아님 선생님께서 다른 의도를 갖고 0.001000으로 적으신 걸까요?이상하게도 1.0e-10을 적고 출력해보면 1.0e-10이 나옵니다... 1e-10도 적고 출력해보면 그대로 나옵니다... setprecision(11)을 설정하고 출력했는데도 그대로입니다... 이유가 뭘까요?ㅠ혹시 1e-10이랑 1.0e-10 중에 올바른 표기법이 있나요 아님 둘 다 상관 없나요?2.3456e8 도 출력해보면 234560000로 나오는데 선생님께서 주신 문제처럼 234560000.000로 출력하는 방법이 따로 있나요 아님 이렇게 출력하게 하는 과학적 표기법이 따로 있나요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-F 맞왜틀 질문
http://boj.kr/21f627bbbf1542a3b18476f88f391725안녕하세요 강사님 어디가 틀린건지 도저히 모르겠습니다간단한 코드라서 틀릴만한 건덕지가 아마..바구니 위치 초기값을 강사님과 다르게 왼 오 각각 지정해줬고, 바구니가 이동될때마다 이동하는 칸만큼 왼 오 각각에다가 더하거나 빼준 부분밖에 없어보이는데, 이거 이렇게 해도 논리 맞는거 아닌가요..?ㅜㅜ
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
list iterator 크래시 내고싶습니다.
stl에서 제공하는 list는iterator가 header를 가리키고 있을때 it++을 해서 첫번째 노드로 접근하거나, 첫번째 노드에서 it--를 해서 header노드로 접근하면 크래시(런타임에러)가 발생하잖아요?Q)근데 list#3 수업에서 우리가 구현한 list는 저렇게 해도 크래시가 안나고 정상작동 합니다. stl에서는 이걸 크래시 내기 위해서 어떤식으로 코드를 짰을까요?
-
해결됨홍정모의 따라하며 배우는 C++
2.7 글자가 3개인데 출력을 4번 하려고 하는 경우
char c1(65); cin >> c1; cout << c1 << " " << static_cast<int>(c1) << endl; cin >> c1; cout << c1 << " " << static_cast<int>(c1) << endl; cin >> c1; cout << c1 << " " << static_cast<int>(c1) << endl; cin >> c1; cout << c1 << " " << static_cast<int>(c1) << endl; 이런 상황에서 선생님께서 글자가 3개인데 출력을 4번 하려고 하면 어떻게 되는지 복습하면서 알아보라고 하셔서 해보았습니다.abc를 입력했더니 1, 2, 3번째 c1(a, b, c)이 순서대로 출력되고 4번째 글자의 입력을 기다리는 상태가 됩니다. 혹시 제대로 된 게 맞을까요?
-
해결됨홍정모의 따라하며 배우는 C++
2.7 char type과 int type
5분 5초 정도에 선생님께서 c1, c2는 정수형에 포함되고 실제로 integer를 저장할 때 사용된다 고 하셨습니다. 이 부분이 잘 이해가 안 가는데, c1, c2 자체가 정수형을 나타낼 때 자주 쓰는 변수라는 뜻인건지 잘 모르겠습니다...ㅠ 물론 1byte짜리 아주 작은 integer를 저장하는 type이 char type 외에 없기에 char type을 integer처럼 사용하는 경우가 존재한다는 것은 확실하게 인지하고 있습니다. 근데 이것이 선생님께서 말씀하신 c1, c2는 정수형에 포함된다는 것과 관련이 있는지는 잘 모르겠습니다...
-
해결됨홍정모의 따라하며 배우는 C++
2.5 연습문제
3.14159231.410.001000123.00020.0000000001234560000.000선생님께서 이것들을 과학적 표기법으로 사용해서 바꿔보라고 하셨습니다.3141592e-63141e-21000e-61230002e-41e-10234560000000e-3이렇게 바꿔보았는데 선생님께서 원하시는 게 이런 방식인지 궁금합니다... 혹시 체크 부탁드릴 수 있을까요?0.001000 와 234560000.000 의 경우 어떻게 바꿔야 할 지 헷갈리는지 어떻게 나타내는 게 좋을까요?ㅠ
-
해결됨홍정모의 따라하며 배우는 C++
2.5 소수점 뒤가 0일 때
안녕하세요?이상하게도, 어떤 변수의 type을 double이나 float로 설정하고 5.0으로 초기화해준 후 변수를 출력시키면 소수점 뒤가 잘리고 5가 출력됩니다...하지만 5.5 이런 식으로 초기화한 후 출력시키면 5.5로 잘 출력됩니다..왜 소수점 뒤의 0은 생략되는 것일까요?ㅠㅠ
-
해결됨홍정모의 따라하며 배우는 C++
2.5 유효숫자란?
선생님께서 후반에float f(123456789.0f) 속에는 유효숫자(significant digit)이 10개 있다고 하셨습니다.유효 숫자가 정확히 뭔지 모르겠습니다ㅠ인터넷에도 검색해보았는데 명확한 해설이 나오지 않는 느낌입니다...혹시 유효 숫자의 의미랑 이것이 가지는 중요성을 여쭤볼 수 있을까요?ㅠ
-
미해결홍정모의 따라하며 배우는 C++
2.5 literal이 float로 간주되는 경우
12분 30초 정도에 선생님께서int main() {using namespace std;float f(3.141592f);double d;long double ld;return 0; } 에서여기서 float면 3.141592뒤에 꼭 f를 붙여야 하는데 f를 안 붙이면 안의 literal은 double인데 C언어 또는 C++에서는 double을 float로 강제로 바꾼다 라고 하셨습니다.여기서 좀 헷갈립니다...저는 지금까지 float면 f를 확실하게 붙여야 하고, 붙이지 않으면 double로 간주된다고 알고 있었습니다.그런데 선생님 말씀대로라면, 앞의 type를 float로 적은 상황에서, 뒤의 수는 f를 붙이지 않아도 C++에서 자동으로 float로 바꾼다고 하셨으니 f가 있든 없든 float로 컴파일되는 게 아닌가요?ㅠ 뒤의 literal이 double이 되려면, 앞의 type을 double d(3.141592) 이런 식으로 적지 않는 이상 방법이 없다는 걸로 이해하면 될까요?ㅠ