묻고 답해요
169만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
5-L 문제가 이해가 안됩니다 ㅠ
안녕하세요 선생님 🙂 문제가 이해가 안되어서 질문 드립니다. N = 4일 경우, 팀에 2명씩 속하기 때문에 arr[i][j] + arr[j][i] 차이의 최소값을 구하면 간단하게 풀어지는데요, N = 6일 경우, 팀에 3명씩 속해야 하는데, 배열만 봤을 때 팀이 이루어질 수 있는 경우의 수가 무엇인지 도통 모르겠습니다.. ㅠㅠ 문제의 힌트를 봐도 모르겠네요.. 도움 부탁드립니다 :)
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-O 문자열 질문드립니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요 ! 강의 도중에 강의 정답에서 입력받은 문자의 끝을 . 로 구분하는 코드가 getline(cin,s) 로 받아서 if (s==".")break; 로 되어 있는데 .일때 break 되면 while 문 박으로 나가게 되는거 아닌가요? 또 "." 로 할때와 '.' 으로 할때의 차이가 궁금합니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
5-E 시작시간 기준으로 풀어보았는데 왜 틀린지 모르겠습니다.
안녕하세요!강의 잘 듣고 있습니다.제 공부 스타일은 먼저 풀어보고 강의를 듣습니다!일단 강의의 내용은 잘 이해가 되었습니다.하지만 저는 시작을 기준으로 잡고 풀었는데 제 생각에는 예외처리를 잘 해서 문제가 없다고 생각하는데 혹시 뭐가 문제인지 알 수 있을까요?백준 질문게시판에 있는 반례도 다 통과합니다..ㅠㅠhttp://boj.kr/97290f63c432442f952ce3c865ada540
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
5-F 질문있습니다 :)
안녕하세요 선생님 🙂 while문을 for문으로 변형해서 풀이해봤는데요, 어느 부분에서 잘못된건지 모르겠어서 질문드립니다.. 항상 감사합니다 :) http://boj.kr/15d96af12b3f4a27bd41562bc6cf4042
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-J 질문 있습니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요! 질문 드립니다! 정답코드 중while (a[i][j + 1] == -1){ a[i][j + 1] = cnt++; j++; }이 부분에서 a[i][j] 배열의 크기를 100으로 했을때 예제는 통과하지만 제출시 틀렸습니다로 확인되고 배열의 크기를 101 로 하게 되면 맞췄습니다로 나옵니다. j+1 이 101로 접근해서 문제가 생기는 것 같은데 배열의 크기를 늘리지 않고 a[i][j] 의 크기는 a[100][100] 으로 하고 방어 코드로 예외 처리하는 방법은 없을까요? if(j+1>100){ break; } while (a[i][j + 1] == -1){ a[i][j + 1] = cnt++; j++; }요렇게 했을 때는 틀렸다고 나옵니다!
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
재귀함수 질문있습니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 이거 재귀함수를 외우라고 하셨는데 swap 함수 부분이 이해가 잘 안갑니다ㅜ 이게 배열 내에 있는 원소들을 하나씩 스왑하고 makePermutation하고 다시 원위치로 스왑하는건가요? void makePermutation(int n, int r, int depth){ if(r == depth) { //solve(); print(); return; } for(int i = depth; i < n; ++i) { swap(a[i], a[depth]); makePermutation(n, r, depth +1); swap(a[i], a[depth]); }}
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
진법변환 코드 질문
10진수 n을 b진법으로 변환하는 코드에서 while(n > 1){ v.push_back(n % b); n /= b; } if(n == 1)v.push_back(1); 이 코드를 while(n >= 1){ v.push_back(n % b); n /= b; } 으로 써도 결과는 같은데 if 조건이 따로 붙은 이유가 궁금합니다!
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-L 코드가 왜 틀렸는지 모르겠습니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.아래 코드가 테스트 케이스를 다 통과하는데 왜 틀렸는지 모르겠어요..#include <bits/stdc++.h> using namespace std; int ret, r, c, result; int dy[] = { -1, 0, 1, 0 }; int dx[] = { 0, 1, 0, -1 }; int visited[30][30]; char a[30][30]; int t[30]; void dfs(int sy, int sx) { visited[sy][sx] = 1; t[a[sy][sx]] = 1; ret++; result = max(result, ret); for (int i = 0; i < 4; i++) { int ny = sy + dy[i]; int nx = sx + dx[i]; if (ny < 0 || ny >= r || nx < 0 || nx >= c || visited[ny][nx]) continue; if (t[a[ny][nx]]) continue; dfs(ny, nx); visited[ny][nx] = 0; t[a[ny][nx]] = 0; ret--; } } int main() { cin >> r >> c; for (int i = 0; i < r; i++) { for (int j = 0; j < c; j++) { cin >> a[i][j]; } } dfs(0, 0); cout << result; }
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
5-D 질문드립니다 :)
안녕하세요 선생님 🙂 별거 아닌 문제지만 조금 더 늘여서 한번 풀어봤는데요, 출력값도 맞고 디버깅을 해봐도 문제가 없는데 이 풀이가 왜 틀렸다고 하는지 잘 모르겠습니다. 한번 봐주시면 감사하겠습니다 :) http://boj.kr/94a55f29a4664feb89f8929cf5a3a518
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
히든 퀘스트
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요 큰돌 강사님! 문제 자체에 대한 질문은 아니고 히든 퀘스트(카카오 문제)를 모두 풀었는데 평균적으로 1문제당 1시간씩 해결했습니다. 이 정도 난이도 문제를 만났을 때 보통 문제 푸는데 얼만큼 시간을 쓸지 목표를 어떻게 잡고 푸는게 좋을까요? 코딩테스트를 한번도 보지 않아서 제 푸는 속도가 너무 느린건지 감이 안오네요.. 프로그래머스에서는 히든 퀘스트 들의 난이도가 level 2,3 수준이던데 이 수준이 어느 정도인지 모르겠습니다. 간단히 이 정도 난이도 문제가 나왔을 때 얼만큼 시간을 투자를 목표를 잡고 공부를 해야하는지 알 수 있을까요?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
9375번 질문있습니다.
http://boj.kr/89d59db313824c96be294e13de2e146e 의상을 1개부터 n개까지 뽑는데 의상의 종류가 n가지일 때내가 뽑으려는 의상의 수 > n 이라면 이미 그 전 로직에 뽑혔을 것이라고 생각하고 1~의상 가짓수까지 조합을 돌렸습니다만 시간 초과가 뜹니다. 그래서 시간 복잡도를 생각해봤는데 해당 로직의 시간 복잡도는 n의 n제곱이 되기 때문에 시간 초과가 나는 걸까요?
-
미해결[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
상속 관계에서 스마트 포인터 this 키워드 사용법 질문
안녕하세요. Rookiss 선생님게임 프로그래머 입문 올인원 강의 중 '스마트 포인터'강의를 보고 질문이 있습니다. 34분 경에 설명하시는 내용 중에 스마트 포인터를 사용할때 this키워드를 사용하면 안되고,해당 클래스에 enable_shared_from_this<클래스>이름을 상속받고shared_from_this()함수를 사용해야 한다고 하셨습니다. 해당 강의에서는 부모가 없는 Knight클래스에 enable_shared_from_this<Knight>를상속해서 설명하셨는데, 여기서 제가 궁금한 부분은만약 Knight라는 클래스가 Creature라는 클래스를 상속받은 상태에서부모와 자식 둘다 this키워드를 사용하려면(Knight에서 this키워드, Creature에서 this키워드)enable_shared_from_this를 어떤 식으로 상속받아서 사용해야 하는지 잘 모르겠습니다. 아래는 상속관계에서 스마트 포인터 shared_from_this함수를 테스트한 코드입니다.#include <iostream> using namespace std; class SharedPtrCreature :public enable_shared_from_this<SharedPtrCreature> { public: void Attack(){ cout<<"SharedPtrCreature::Attack()"<<endl; } void Swing() { auto val = shared_from_this(); val->Attack(); } }; class SharedPtrKnight :public SharedPtrCreature { public: void Attack() { cout<< "SharedPtrKnight::Attack()" << endl; } void Swing(){ auto val = shared_from_this(); // 저는 this키워드로 SharedPtrKnight::Attack을 호출하고 싶은데, // SharedPtrCreature::Attack이 호출됩니다. val->Attack(); } }; class Creature { public: void Attack() { cout << "Creature::Attack()" << endl; } void Swing() { auto val = this; val->Attack(); } }; class Knight :public Creature { public: void Attack() { cout << "Knight::Attack()" << endl; } void Swing() { auto val = this; val->Attack(); } }; int main() { cout << "------shared_ptr version------" << endl; shared_ptr<SharedPtrCreature> sharedPtrCreature = make_shared<SharedPtrCreature>(); sharedPtrCreature->Swing(); shared_ptr<SharedPtrKnight> sharedPtrKnight = make_shared<SharedPtrKnight>(); sharedPtrKnight->Swing(); cout<< "" << endl; // 기존 포인터 버전에서는 제 의도대로 호출됨. cout<<"------pointer version------"<<endl; Creature* creature = new Creature(); creature->Swing(); Knight* knight = new Knight(); knight->Swing(); return 0; } <결과>
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
선생님 근데 이해가 좀 안되는게 있습니다.
수빈이가 갈 수 있는 경로가 중간에 *2 때문에 20만으로 잡았다고 하셨는데 그러면 숨바꼭질 2문제에서도 조건이 똑같은데 왜 10만으로 하셨는지 여쭤보고 싶습니다.언제나 노고에 감사드립니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
질문이 있습니다. Array Index
http://boj.kr/13f2050aabfb4c559d01e1ec1ca4603b 안녕하세요 선생님.매번 코드를 보면 4만큼 여유를 더 주시던데 이유를 여쭤볼 수 있을까요? 막상 그만큼 여유를 안주면 틀리는 문제들도 있더라구요.if (next < 0 || next > V) continue;어차피 여기서 이렇게 예외를 막는데 왜 + 4를 해줘야 문제를 pass하는지 모르겠습니다. ㅠㅠ
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
9996번 질문있습니다.
안녕하세요 선생님. 강의 재밌게 잘 보고 있습니다. 틀린 코드http://boj.kr/7087c3d2add44ef5af31cfac7d207cd0 정답 코드http://boj.kr/377c3dd4ad1d4b0eb85986efa78476ba 위 코드에서 틀린 코드를 사용했을 때 틀리는 이유결국 파싱해낸 접두사 / 접미사의 위치가들어오는 문자열의 처음 / 마지막이 아닐 수 있어서 인가요? 해당 상황 예시) [~ [접두사] * ~[접미사][접두사 ~ * [접미사]~][~[접두사] * [접미사] ~] 문제에서 [각각의 파일 이름이 패턴과 일치하는지 아닌지를 구하는 프로그램을 작성하시오]라고 했기 때문에 [접두사*접미사] 형태의 패턴이 입력 문자열의 부분 문자열이 되는 경우에는 파일 이름과 동일하지 않게 되는거고, 만약 문제가[접두사*접미사] 형태의 문자열이 파일 이름 내에 존재하는가?를 묻는다면 위의 로직은 옳게 작동한다고 말할 수 있을까요?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
개념에 대한 질문입니다.
#include "bits/stdc++.h"using namespace std;constexpr int V = 3;int DamageSequence[6][3] = { { 9, 3, 1 }, { 9, 1, 3 }, { 3, 9, 1 }, { 3, 1, 9 }, { 1, 9, 3 }, { 1, 3, 9 } };int visited[64][64][64], scv[3], n;queue<tuple<int, int, int>> q;int BFS(int param1, int param2, int _param3){ visited[_param1][_param2][_param3] = 1; q.push({ param1, param2, _param3 }); while (!q.empty()) { int first = get<0>(q.front()); int second = get<1>(q.front()); int third = get<2>(q.front()); q.pop(); if (visited[0][0][0]) break; for (int i = 0; i < 6; i++) { int nextFirst = max(0, first - DamageSequence[i][0]); int nextSecond = max(0, second - DamageSequence[i][1]); int nextThird = max(0, third - DamageSequence[i][2]); if (visited[nextFirst][nextSecond][nextThird]) continue; visited[nextFirst][nextSecond][nextThird] = visited[first][second][third] + 1; q.push({ nextFirst, nextSecond, nextThird }); } } return visited[0][0][0] - 1;}int main(){ ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); cin >> n; for (int i = 0; i < n; i++) cin >> scv[i]; cout << BFS(scv[0], scv[1], scv[2]) << "\n"; return 0;}1번째 질문은 일단 이해가 좀 가질 않는 부분은 BFS()를 호출해줄 때 각 SCV의 체력을 인덱스로 하는 지점에서 시작하는부분이 좀 이해가 가질 않습니다.체력을 기준으로 0, 0, 0에서 시작한다고 생각을 했는데 왜 배열의 중간부분부터 탐색을 해나가는지 궁금합니다.2번 째 질문입니다.만약 그게 좌표의 개념이라면 모두가 0이 되는 점 까지의 거리라서 BFS를 진행한 후에 visited의 0,0,0의 값에서 빼 주는 것인지. 좀 추상적으로 이해가 된 것 같아 여쭤봅니다. 오늘도 감사합니다
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-A 완탐 시간초과 질문
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.http://boj.kr/32d8365f752d4ea7a3ec61b9ad94f90c안녕하세요 큰돌님. 저의 풀이는 combi 함수가 아닌 원복을 하며 완전탐색으로 풀이를 진행했습니다.하지만 시간초과가 발생하여 어느 부분에서 시간 초과가 발생하는지, 그리고 시간초과가 발생하지 않을 라면 저의 코드에서 어떤 부분을 수정해야 하는지 알 수 있을까요??항상 좋은 강의 해주셔서 감사드립니다 :)
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
9996번 질문있습니다
#include<bits/stdc++.h>using namespace std;int N; //string input, contrast; //입력할 문자, 대조할 패턴bool YN[104]; //일치 유무string forward_str, back_str; //앞부분 문자열, 뒷부분 문자열int main() { cin >> N; cin >> contrast;; back_str = contrast.substr(contrast.find('*') + 1); forward_str = contrast.substr(0, contrast.find('*')); for (int i = 0; i < N; i++) { cin >> input; if (forward_str == input.substr(0, forward_str.length()) && back_str == input.substr(input.length()- back_str.length(), input.length() - 1)) { YN[i] = 1; } else YN[i] = 0; } for (int i = 0; i < N; i++) { if (YN[i]==1)cout << "DA" << '\n'; else cout << "NE" << '\n'; } return 0;}이렇게 작성하여 컴파일했을때 분명 다 맞게 나왔지만 백준에 제출하면 런타임 에러가 납니다. 무엇이 문제인가요?
-
미해결[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
IOCP 멀티 게임에서 Collsion 충돌 처리는 어떻게 구현하나요?
본 강의에서는 제가 못찾고 있는지는 모르겠지만 멀티 게임 구현시 타일맵을 이용한 충돌 구현만 있는 것 같습니다. (혹시 만약 있다면 어디에서 언급되는지 모르겠네요..) 얼핏 기억하기로는 충돌 처리는 서버에서 해야 한다고 했던 기억이 있습니다. 그러면 클라이언트에 있는 CollisionManager, Collison클래스와 같이 충돌과 관련된 클래스를 서버 쪽에도 복붙하여 충돌 처리를 하는 방향이 맞을까요? 만약 그렇다면 현재까지는 클라이언트에서 Collision 범위를 네모 박스와 같은 형태로 그려서 눈으로 직관적으로 확인 가능하니까 쉽게 디버깅할 수 있었는데, 서버에서 충돌을 구현하면 눈에 보이지 않는거 아닌가요? (그렇다면 디버깅이 굉장히 어렵겠네요...) 서버에서 충돌을 구현하면 클라이언트에서는 충돌 처리를 안하니까 클라이언트의 Bullet과 벽은 Collision은 제거하면 될까요? 멀티 게임에서 충돌을 어떻게 처리해야 할지 방향을 잘 모르겠습니다. 그리고 강의 너무 잘 보고 있습니다!
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-G(9996번) 문제 질문있습니다.
안녕하세요 선생님, 9996번문제 질문 있습니다. 예제는 잘 작동하는데 자꾸 틀립니다. 반례를 최대한 찾으려 했으나 혹시 놓친 반례가 있거나 혹은 로직에서 틀린 부분이 있는지 질문 드립니다.-http://boj.kr/ea0ca29ea51f405e99d1dd110593a3e3