묻고 답해요
169만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-H 질문있습니다!
안녕하세요 선생님 :) 문제풀이 중 이해가 안가는 부분이 하나있어서 질문드립니다.선생님의 문제풀이 중 아래와 같은 부분이 있는데요,if(i >= 1 && (prev == idx) && (idx != 'e' && idx != 'o')){ flag = 1; i >= 1이라는 조건을 넣어주신 이유를 잘 모르겠습니다. 실제로 저 부분을 지워도 정답으로 인정이 되더라구요. 알려주시면 감사하겠습니다!
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-D 질문 있습니다
http://boj.kr/e94fb8e43b714794a0950505c0091594 아래의 dfs 함수에서 a[ny][nx] == 1일때 왜 continue 하는 것 인가요?int dfs(int y, int x){ visited[y][x] = 1; int ret = 1; for (int i = 0; i < 4; i++) { int ny = y + dy[i]; int nx = x + dx[i]; if (ny < 0 || nx < 0 || ny >= m || nx >= n || visited[ny][nx] == 1) { continue; } if (a[ny][nx] == 1) { continue; } ret += dfs(ny, nx); } return ret; }
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
그리디로 풀린다는 판단히 명확하게 서지 않습니다.
31883번: FA수의 진 (acmicpc.net)백준의 31883 문제를 DP로 풀면 깔끔하게 풀릴 수 있다고 생각해서 DP로 풀었습니다. 하지만 풀고나서 문제 카테고리가 그리디로 있는 걸 확인하고 그리디로 풀으니 더 코드가 깔끔하게 풀리는 경험을 했습니다. 그리디로 풀린다는 판단은 이 문제에서 어떻게 생각해야 되는 걸까요? 그리고 그리디 문제다 하는 판단 근거 유추를 어떻게 해야 하는지 강의에 있는 내용 외로 보충 설명 해주시면 감사하겠습니다. 아래는 DP로 풀은 코드 입니다.import sys input = sys.stdin.readline N = int(input()) times = [list(map(int, input().split())) for _ in range(N)] memo = [[0] * 2 for _ in range(N)] memo[0][0] = times[0][0] memo[0][1] = times[0][1] for i in range(1, N): t1 = memo[i-1][0] tmp = t1 % (times[i][2] + times[i][3]) if tmp >= times[i][2]: t1 += times[i][2] + times[i][3] - tmp t1 += times[i][0] t2 = memo[i-1][1] tmp = t2 % (times[i][2] + times[i][3]) if tmp >= times[i][2]: t2 += times[i][2] + times[i][3] - tmp t2 += times[i][0] cross1 = min(t1, t2) t3 = times[i][1] + memo[i-1][0] t4 = times[i][1] + memo[i-1][1] cross2 = min(t3, t4) memo[i][0] = cross1 memo[i][1] = cross2 print(min(memo[N-1]))
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
스택프레임 질문
복습하려고 제 코드를 디스어셈블리어로 분석하는 도중 위 강의에선 main함수의 a,b의 값을 전달하기위해 컴파일러가 eax,ebx 레지스터에 그 값을 복사하고 그것들을 push를 통해 스택의 공간을 더 사용하지않습니까? push를 통한 것이니 esp(스택 포인터, 저는 x64라 rsp긴 합니다.)의 값도 감소(공간이 늘어난것) 하게 되는걸로 알고있습니다. 하지만 제 코드에선 컴파일러가 push를 통해 매개변수를 할당한것이아닌 esp+1h 라는 주소에 mov를 통해 직접 값을 넣었습니다. 제 생각에는 main에서 esp를 sub를 통해 확보한 스택프레임의 크기에 공간이 남아서 그 빈공간에 매개변수를 할당한것같은데 이건 그저 컴파일러가 판단해서 한게 맞는건지 궁금합니다. int PrintNumber(int a,int b){ 00007FF6506918D0 mov dword ptr [rsp+10h],edx 00007FF6506918D4 mov dword ptr [rsp+8],ecx 00007FF6506918D8 push rbp 00007FF6506918D9 push rdi 00007FF6506918DA sub rsp,108h 00007FF6506918E1 lea rbp,[rsp+20h] 00007FF6506918E6 lea rcx,[__0D5E813E_CPP_STUDY_8@cpp (07FF6506A3066h)] 00007FF6506918ED call __CheckForDebuggerJustMyCode (07FF6506913FCh) 00007FF6506918F2 nop int c = a + b;00007FF6506918F3 mov eax,dword ptr [b] 00007FF6506918F9 mov ecx,dword ptr [a] 00007FF6506918FF add ecx,eax 00007FF650691901 mov eax,ecx 00007FF650691903 mov dword ptr [c],eax return c;00007FF650691906 mov eax,dword ptr [c] }00007FF650691909 lea rsp,[rbp+0E8h] 00007FF650691910 pop rdi 00007FF650691911 pop rbp 00007FF650691912 ret 여기서 rsp+1h, rsp+8에 각각 eax,ebx에 들어있는 매개변수값을 mov를 통해 넣어주고 push를 통해 이전 스택프레임의(main함수) rbp rdi 값을 밀어넣어주고 rsp,108h 라는 공간을 printNumber의 함수의 스택프레임으로써 sub을 사용에 할당하고 여자저차 연산하고 이후 다시 lea rsp,[rbp+0E8h]를통해 rsp를 main함수의 레지스터가 저장된 스택 (위에서 rbp rdi값) 위치로 돌아가 pop을 해줌으로써 다시 rdi rbp의 값을 넣어주고 ret한다고 이해를 했습니다. 근데 이 rsp+1h , rsp+8은 사실 새로운 스택프레임 즉 printNumber의 스택프레임이 아닌 범위인데 ( main에서 잡아논 스택 공간) 이런건 컴파일러의 재량인지 궁금하고 또 위험한 기능은 아닌지 궁금합니다!.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
dfs 참조 관련 질문이 있습니다.
http://boj.kr/00157dd8760445ee824ec29f0029de12안녕하세요 선생님 좋은 강의 감사합니다. dfs함수에 매개변수로 v를 참조를 명시하는 이유가 궁금합니다. 저는 매개변수에 v를 넘기지 않고 풀었는데 (v를 전역변수로 설정해서) 답안지에는 v가 매개 변수로 넘어가서 궁금합니다. 감사합니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
4-O 질문있습니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 두번째 말씀해주신 방법에서 분기점이라는 개념이 이해가 잘 안되서 질문 남깁니다. ((()))()과 같은 예시가 설명과 동일하게 존재할 때ret = max(ret, i - s.top());을 수행하면마지막 7번째 i에선 7-5를 수행하게 되어서 ret에 6이 들어가서 오답이 되는것이 아닌가라는 의문이 있습니다. 제가 잘 이해를 못한 부분이 존재하는 것 같아서 질문남깁니다. 감사합니다!
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2 - S visited 사용 질문입니다
안녕하세요 선생님 수업 잘 듣고 있습니다.제가 어떠한 grid를 인풋으로 받아 dfs 혹은 bfs를 할때 visited를 사용하는 이유는 이해를 하고있습니다. 그런데 이번 문제의 경우 어느 상황에서 visited가 사용되는지 이해가 되지 않습니다. 제 생각에는 한번 들어간 노드에는 그에 따른 하위 노드로 넘어갈뿐 똑같은 노드에 들어가는 상황이 없다고 생각됩니다. 어떠한 상황에서 visited가 사용되는지 궁금합니다. 감사합니다
-
미해결홍정모의 따라하며 배우는 C++
버그
5.3 강의 화면이 안나옵니다 그리고 소리도 안나옵니다 자막은 재생은 되는데 도데체 왜이러는지 모르겠습니다
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
문자열 뒤집기 질문 드립니다
저는 이런식으로 작성하였는데 혹시 매일 하면서 느끼는거지만굳이 정상적으로 동작만한다면 상관없는건가요? 강의에서 작성한 코드가 더 유익하다던지 도움된다던지 이런게 알고싶어요
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
8-B 문제 문의
안녕하세요 선생님,8-B 문제에 대해 문의드리고 싶습니다.저는 재귀를 들어갈 때 마다 (스텟이 바뀔 때 마다) 새로 해결한 퀘스트 수를 더하는 식으로 문제를 풀었는데 틀렸습니다. 저는 dp를 풀 때 현재값 + 재귀값으로 풀어왔는데 틀리니 이상합니다.48번 줄: ret = max(ret, nvisit + go(STR + i, INT + (PNT - i))); 선생님 풀이를 보고, 각 재귀 마다 현재 스텟에서 성공한 횟수를 반환하는 식으로 구현하니 맞게 나옵니다.47번 줄: ret = max(ret, go(STR + i, INT + (PNT - i))); 선생님 풀이와 로직은 동일한 것 같은데, 어떤 부분에서 틀렸는 지 모르겠습니다. 틀린 풀이https://www.acmicpc.net/source/share/9878747de0af458ca79dde4f3555903c맞는 풀이https://www.acmicpc.net/source/share/e7061d5e24564ad2a773395440381ecc 항상 강의 잘 듣고 있습니다.감사합니다.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
교안 38p char 질문입니다
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 38페이지의 "char 을 초기화할 때 주의할 점"에 대해 궁금합니다. 코드에서 char a = '\0' 와 char b = 0 라고 선언한 부분이 if(a==b) cout << 1 ; 에서 1이 출력됩니다.위 설명에선 char 변수를 초기화할 때 특정값으로 하거나, 널 문자를 사용하는 방법 두가지가 있다고 했는데b는 숫자 0을 대입한 것인지 아니면 "0"을 대입한 건지 헷갈립니다. 당연히 전자라고 생각했는데 if 문에서 둘이 동일하다고 해서 제가 놓친 부분이 있는지 궁금합니다. 만약 후자라면 숫자 0을 대입하는 방법이 궁금합니다감사합니다
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
교안 36p void 질문입니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요.좋은 강의 감사합니다.교안 36p :void:리턴하는 값이 없다" 코드를#include <bits/stdc++.h>using namespace std;int ret = 1;void a() { ret =2; cout<<ret<<"\n"; return;}int main(){ a(); cout<<ret<<"\n"; return 0;} 로 수정했습니다. 마지막에 cout만 추가한 것 입니다.그러면 제 생각에는 값이 2 1 이 나와야합니다.int ret =1 이 main 함수 밖에서 선언된 전역변수이고 a()함수에서 ret = 2라고 했지만 아무것도 반환하지 않았고, a 함수 내에서만 ret =2 라는 값을 가질거라고 생각했습니다.하지만 디버깅 결과 2 2 가 나왔는데 왜인지 모르겠습니다ㅜㅠ
-
해결됨[입문] Qt QML과 C++로 시작하는 크로스플랫폼 앱 개발
visual studio 2019 버전 다운로드가 안보여요.
강의 "개발환경 셋팅" 보고 있는데요.MSVC 2019 설치 링크에 들어가 봤는데, 저는 visual studio 2019 다운로드 버튼이 안보이네요. 다운로드 받을 수 있는 방법이 있을까요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
온라인 코딩 테스트는 오픈북인가요?
안녕하세요 알고리즘 강의를 예전에 구매를 했었는데, 코딩테스트를 준비해야 할 시기가 되어 이제서야 공부하려고 합니다.궁금한 것이 아직 제가 온라인 코딩 테스트에 대한 경험이 없는데,온라인 코딩 테스트는 검색이나, 자신이 예전에 짜놨던 코드, 아니면 기타 서적 같은 것을 참고해서 보는 것이 가능한가요?어떤 방향으로 코딩테스트를 준비해야 할 지 방향을 조금 더 확실히 잡고 싶어 질문 드립니다!
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-B 보물섬 코드 질문입니다.
안녕하세요 큰돌님! 강의 잘보고 있습니다!보물섬 문제를 푸는데 궁금한 점이 있어서 질문드립니다.로직은 거의 동일하게 풀었습니다만, 문자가 다닥다닥붙어서 입력되는걸보고 scanf와 printf를 사용해보았는데 틀렸다고 나와서요.큰돌님이하신 방법대로 cin과 cout으로 교체해주었더니, 맞았다고 나왔지만 어느 부분이 다른 건지(혹은 틀린건지) 잘 모르겠습니다. ㅠㅠ아래 코드에서 주석 처리한 부분이 제가 처음에 작성했던 코드입니다.http://boj.kr/f3f04689b13c429d830e4dda8b3d9505답변 기다리겠습니다!
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
While 문 질문입니다
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.ㅇ 안녕하세요. 강의 잘 듣고있습니다.while((pos = input.find(delimiter)) != string::npos)코드가 잘 이해가 안됩니다. input에서 delimiter를 찾는 부분이 input.find(delimiter)인데!= string::pos 부분이 이해가 안됩니다. npos는 무엇을 의미하는 건지 궁금합니다. 감사합니다!
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-B. 유기농 배추 질문있습니다.
안녕하세요 선생님. 해당 질문에 대해서 저는 for 반복문을 이용해서 풀었습니다.선생님께서는 while문을 이용해서 푸셨는데, 이러한 상황에서 시간복잡도 , 코드 효율성 등이 for문을 사용하는게 좋은지 while문이 좋은지 궁금합니다.또한, while문의 시간 복잡도를 구하는게 조금 헷갈리는데 간단하게라고 설명 해주시면 감사하겠습니다.#include <bits/stdc++.h> using namespace std; const int MAX_K = 2500; const int MAX_M = 50; const int MAX_N = 50; const int dy[4] = {-1, 0, 1, 0}; const int dx[4] = {0, 1, 0, -1}; int T, N, M, K; bool IsMovable(int dirY, int dirX, int visited[MAX_N][MAX_M], int Map[MAX_N][MAX_M]) { if (dirY >= N || dirX >= M || dirY < 0 || dirX < 0) return false; if (visited[dirY][dirX] != 0) // 방문한 적 있으면 return false; if (Map[dirY][dirX] != 1) // 갈 수 없는 곳이면 return false; return true; } void Go(int cy, int cx, int visited[MAX_N][MAX_M], int Map[MAX_N][MAX_M]) { visited[cy][cx] = 1; for (int i = 0; i < 4; i++) { int ny = cy + dy[i]; int nx = cx + dx[i]; if (IsMovable(ny, nx, visited, Map)) Go(ny, nx, visited, Map); } } int main() { cin >> T; for (int i = 0; i < T; i++) { int Map[MAX_N][MAX_M]{}; int visited[MAX_N][MAX_M]{}; int zoneCnt = 0; cin >> M >> N >> K; for (int j = 0; j < K; j++) { int diry = 0; int dirx = 0; cin >> diry >> dirx; Map[diry][dirx] = 1; } for (int currY = 0; currY < N; currY++) { for (int currX = 0; currX < M; currX++) { if (IsMovable(currY, currX, visited, Map)) { zoneCnt++; Go(currY, currX, visited, Map); } } } cout << zoneCnt<< endl; } }
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-L combi 방식으로 했을때 시간초과
http://boj.kr/71e5ee8f28ea4c35a38d8732c08dbca3안녕하세요.주몽 문제를 combi 방식으로 했을때 시간초과가 나는 이유는 무엇일까요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
5-H 질문
http://boj.kr/f20dcd82536849b794b2b9f0551683f9 안녕하세요 큰돌님이해가 안가는 부분이 있어서요1 2 3 1 2이렇게 있으면,마지막 부분 3 1 2은 등차수열의 합을 이용한(3) (1) (2) (3, 1) (1, 2) (3, 1, 2)이렇게 경우의 수를 모두 세는데,왜 1 2 3 같은 경우(1) (1, 2) (1, 2, 3) 이런 경우만 고려하는 걸까요?왜 (1) (2) (3) (1, 2) (2, 3) (1, 2, 3) 이렇게 세지 않는걸까요...
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
안녕하세요 선생님 reverse 함수 사용하지 않고 문제풀이 해봤는데...
안녕하세요 선생님. reverse 함수 사용하지 않고 문제 풀이 해봤는데 dev c++에서는 예제 잘 돌아갔는데백준에서는 틀렸다고 나와서 질문 드립니다!왜 오류가 나오는지 , reverse 사용하지 않고 괜찮게 작성한 코드인지 궁금합니다! http://boj.kr/5ee18678eb5c4dd98d782a257769f061