묻고 답해요
169만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-F 최솟값 질문입니다!
안녕하세요 강사님!풀이 방법 중 _num의 최댓값을 구하기 위해 ret의 최솟값을 -987654321(9자리)로 선언 했습니다.저는 만약에 string s가 1-9*9*9*9*9*9*9*9*9로 나온다면 ret의 최솟값을 선언하기 위해 저는 어림짐작으로 (1-9) 9^8 정도의 출력값이 나오겠다라 생각했고 이를 직관적으로 계산하기 위해 -8 * 9^8을 -8 * 10^8로 바꿔 셈했습니다. 그 결과 -800000000(9자리) 였고, 이보다 더 작은 수가 나올 수도 있겠다는 생각을 했었습니다. (결과적으로 -987654321보다 작은 수가 나올 수도 있겠다란 생각으로 -987654321을 최솟값으로 둬도 괜찮나?란 생각을 문제풀이 당시 했었습니다)더불어, 문제에서 정답은 2^31부터 -2^31의 미만이라는 값이 주어진다고 했고 저는 ret의 최솟값을 문제에서 설정한 범위 밖에서 설정하려고 했지만 -2^31을 보고 이 보다 작은 수를 어떻게 ret으로 선언할지에 어려움을 겪었고, -2^31이 -987654321보다 작다보니 -987654321로 최솟값을 선언하지 못하였습니다. 그래서, -987654321란 최솟값이 다른 문제에도 적용되는 통용되는 최솟값인지 그리고 저의 생각 중 어떤 곳에 오류가 있었는지 궁금하여 질문드립니다!
-
미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
5의 갯수만 구했습니다. 그런데 예외가 있을까 싶어 질문합니다.
저는 n!에서 10이 나오려면 무조건 5가 몇갠지만 체크하면 된다고 생각했습니다. 왜냐하면 우선 5!일 때 5의 갯수가 1개 있기 때문에 10이 나오기 때문입니다. 이미 5!일 때부터 5의 갯수는 1개, 2의 갯수는 3개니까요.5의 제곱인 25!이라고 해도 5의 갯수는 겨우 5개인 반면 2의 갯수는 2~8까지만 봐도 이미 5개를 넘겼으니까요.그래서 저는 그냥 5의 갯수만 세서 5의 갯수가 뒤에 붙는 0의 숫자라고 풀었습니다만 정말 만에 하나 예외가 있을 수도 있으니까요... 예외가 있는지 궁금합니다!
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
5주차 개념강의 선긋기 문제 질문
안녕하세요 선생님좋은 강의 열심히 듣고 있습니다!5주차 개념강의를 듣다가 선긋기 문제의 선생님 코드를 보고 의문이 생겨서 질문 들립니다. 선생님 코드에서 else if(L[i].first <= r && L[i].second >= r){ r = L[i].second; }이 부분인데요. 여기서 r을 최신화하기 전에 현재의 r과 크기를 비교해야되지 않을까요?예를 들어 현재의 l = 1, r = 5일때 (2,4)가 들어온다면 r을 5로 유지해야 할 것 같습니다질문읽어주셔서 감사합니다!
-
해결됨Do it! 알고리즘 코딩테스트 with C++
C++은 실전문제에 대한 강의가 없나요? 자바나 파이썬은 있는데 없는거 같아서요.
C++은 실전문제에 대한 강의가 없나요? 자바나 파이썬은 있는데 없는거 같아서요.
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
다중 포인터 질문입니다
#include <iostream>using namespace std;// 다중 포인터void SetMessage(const char* a){ a = "Bye"; }void SetMessage(const char** a){ *a = "Bye";}int main(){ // .rdata [H][e][l][l][o][\0] char형 배열 형태 // main stackframe msg[ Hello주소 ] << 8바이트 const char* msg = "Hello"; // [매개변수][RET][지역변수(msg(Hello주소))] [매개변수(a(Bye주소))][RET][지역변수] SetMessage(msg); cout << msg << endl; // .rdata [H][e][l][l][o][\0] char형 배열 형태 // msg [ Hello주소 ] << 8바이트 // pp[ &msg ] << 8바이트 const char** pp = &msg; SetMessage(pp); cout << msg << endl; return 0;} 메모리를 찬찬히 까보면서 확인했는데궁금한점이 있어서 글 남깁니다 1.void SetMessage(const char** a){ *a = "Bye";} 이 부분이 실행되고 난 뒤에 msg의 시작주소가 Hello주소가 아닌 Bye 주소를 나타내고있는데원래 포인터를 이용하면 해당 주소로 텔레포트 후 그 주소의 데이터에 직접 접근해서 데이터를 변경하는 것으로 알고있습니다그런데 문자열은 .rdata로 수정불가하기 때문에 단순히 msg가 가리키는 주소만 변경해서즉, msg의 시작주소가 Hello주소가 아닌 Bye의 시작주소를 가리키게 된건가요? 2.함수 호출이 끝난 뒤에는 Bye주소에 해당하는 값인 문자열 "Bye"는 메모리상에 데이터로 남아있던데이 데이터가 사라지지 않는 이유를 잘 모르겠습니다.스택 프레임 구조에서 [매개변수][RET][지역변수] 이 세가지만 없어지게 되서 그런건가요?
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
연관 없는 클래스 사이의 값 타입 변환
안녕하세요.타입변화#2 강의 // 타입 변환 연산자를 사용Knight knight2 = dog; 을 하려고 하는데요. 디버깅 모드에서// 타입변환 연산자 operator Knight() { return (Knight)(*this); }이 부분이 무한 루프를 돌면서 stack overflow가 발생합니다.그냥 빌드는 가능하던데 무슨 이유 때문일까요??
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
6-C 질문입니다.
강사님 안녕하세요,6-C 이분 탐색을 할때, 최소 인출 금액 K 를 구할 때문제 해설 코드에서는 ret = min(ret,mid) 이 아닌 ret = mid 로 작성이 되어있는데요그 이유가 check_size(mid) 가 만족된 경우에 다음 mid 값은 현재 mid 값보다 항상 작은 값으로 갱신되기 때문인 것으로 이해하면 되는 것이죠?http://boj.kr/11bd65fe1a2740d19a170bf296e4ade1 while (low <= high) { mid = (low + high) / 2; if (check_size(mid)) { high = mid - 1; ret = min(ret, mid); // ret = mid; } else { low = mid + 1; } }
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
[2-A] 2차원 동적배열(포인터) 전역선언 vs 지역선언
안녕하세요 큰돌님.2-A 문제 푸는중에 런타임 에러(Double free)가 발생하였습니다.우선 문제를 풀긴했는데, 오류 발생한 코드와 정답을 맞춘 코드의 차이가 아래의 2차원 포인트를 어디에 선언했냐에 따라 달라졌습니다.int** adj = new int* [N];int** visited = new int* [N]; 질문1) 2차원 동적배열(포인터) 지역선언 혹은 전역선언에 따라 해제(delete)의 영향을 받을 수 있는지 궁금합니다.틀린코드에서 디버깅할때 항상 2차원 포인터 해제에서 문제가 발생하였습니다.delete[] adj;delete[]visited; 질문2(기타질문) 비쥬얼 스튜디오에서 scanf()를 사용할 시, #define CRTSECURE_NO_WARNINGS 구문을 넣어줘야하는데, 실제 시험에서도 해당 구문을 넣어도 문제가 안되는지 궁금합니다. [틀린 코드]http://boj.kr/dcf6622717a34c72be6ec24d2b179a8c[정답 코드]http://boj.kr/55b2a222039740d1a83dec82eb13576e
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
4-I질문 답지도 무조건 x를 받거 아닌가요? ㅠㅠ
stark님이 올리신 질문 봐도 잘 이해가 안가네요
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-N 괄호라는 이름을 가진 문제가 많은데 몇번 문제인지 모르겠습니다.
2-N 몇번 문제인지 모르겠습니다.질문에도 없네요 ㅠㅠ
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
시간 복잡도 질문
안녕하세요 큰돌님게임 문제를 풀다 시간초과가 나서 질문드립니다. 해당 문제는 50 * 50 배열에 4방향의 경우의 수를 고려해야하니 4 ^ 50의 시간복잡도가 걸릴텐데최악의 경우 배열의 값이 전부 1이여야할거라고 생각했습니다.그런데 이때는 순환하는 경우여서 앞서 계산한 시간복잡도보다 훨씬 일찍종료될거라고 판단하였는데요 제가 시간복잡도 계산을 정확하게 한것일까요?제 코드에서 시간초과가 발생하는 케이스는 어떤게 있을까요? dp가 너무 어렵네요...ㅠㅜhttp://boj.kr/5feacce2689b45ca848b64831f7fe0e4 친절한 답변 항상 너무 감사드립니다!
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
문자열 출력의 경우
안녕하세요B는 data영역에 있는 문자열의 시작 주소를 저장하는데그렇다면 B를 출력하면 주소값을 출력해야 하는거 아닌가요? A의 상황도 같은 상황입니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-G 코드 질문입니다.
안녕하세요 선생님 !선생님 강의로 이직 준비 하고 있는 예비 이직러입니다~일단 강의를 안보고 푼다고 풀었는데 범위 에러가 나서 다시 보는데 어디가 문제인지 모르겠습니다.http://boj.kr/ada69076de594720b60beabcb5bcec79 제가 풀고 선생님 강의 코드를 보니 엄청 간결해서 반성하게 되네요 .. ㅠㅠ 열심히하겠습니다!!답변주시면 감사하겠습니다.
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
포인터 질문입니다
void Createmonster(StatInfo* Info); // 함수 선언부 Createmonster(&monster); // 함수 호출부 void Createmonster(StatInfo* Info) // 함수 내용{ cout << "몬스터 생성" << endl; Info->hp = 40; Info->damage = 8; Info->defence = 2;}Info->hp 가 어떻게 monster.hp에 접근하게 되는지 잘 이해가 안갑니다..해석이 잘 안된다고 해야될지 말로 표현이 잘 안됩니다
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
4-j 코드 질문
안녕하세요, 큰돌님. 최댓값만 구하면 되다보니 행과 열 단위로만 잘라서 계산을 했는데, 틀렸다고 나오네요. 혹시 제 코드에 틀린 점이 있나요? 반례를 찾지 못해서 그런데, 혹시 반례 좀 찾아주실 수 있나요?http://boj.kr/d607ff02d8924824b719f25244f17aab
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
6-K번 반례가 있습니다
input: 2 0 -1 정상적인 output은 1 -1 선생님 코드의 output은 2아마 입력 받는 수열중에 값이 0이 나올 때 len의 값이 증가해서 생기는 일 같은데, 먼저 lis배열을 (-1,000,000,000 ≤ Ai ≤ 1,000,000,000) 이외에 값으로 초기화해야 되지 않나요?
-
해결됨[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
강의순서 질문입니다
파트1 ~ 파트3까지 수강신청했는데요 파트1인 c++을 듣고 파트3 자료구조 알고리즘을 이어 공부하는건 어떻게 생각하시나요 ? 이후 파트2 다이렉트x를 공부하는 방향 입니다. 혹시 파트3를 공부하는데에 파트2의 내용이 필요할까요? 어떻게 생각하시는지 궁금합니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
해설과 코드를 봐도 이해를 못하겠어서 질문드립니다.
안녕하세요 큰돌님!강의 들으면서 알고리즘 잘 하고있습니다! 정말 많은 시간을 들여서 고민했지만 그럼에도 모르겠는 부분이 있어 질문드립니다. 우선 놀이공원을 타는 아이들을 태울 수 있는 시간을 한 묶음단위로정확한 시간보다 더많은 시간을 구하는것으로 이해했습니다. 그래서 check 함수에서 아래와 같이 정확한 시간을 체크하지 않는 건가요?정확한 시간을 구하면 마지막 학생이 어떤 놀이기구를 타는것을 구하는것이 어렵기 떄문일까요?bool check(ll mid){ cnt = 0; for(int i = 0; i < m; i++){ cnt += mid / play[i]; if(mid % play[i]) cnt++; } return cnt >= n; } 그래고 정확한 시간을 구하기 위해 ret - 1을 하며 시간을 이전 묶음단위로 재정의 하고나서temp++을 하는 조건문을 이해지 못하겠습니다.ret은 정확한 시간이 아닌 원래 구하는 시간보다 +되어있는 시간인데왜 거기에 놀기기구의 시간을 % 연산을 해서 temp를 ++할까요?시간되실때 답변 부탁드리겠습니다!항상 친절한 답변 정말 감사드립니다.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
4-h성곽 문제 dfs 언더플로 오버플로 체크
안녕하세요, 큰돌님. 강의를 듣다 궁금한 점이 생겨서 질문 드립니다. 평소대로라면 dfs에서 최대 최소 범위 오버 플로나 언더 플로를 체크하셨을 텐데, 이번 코드는 그게 없네요.혹시 그 이유가 지도가 무조건 성벽에 둘러싸여져 있어서 그런 것일까요?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2주차 #7 맵과 방향벡터 개념에서 문제 3번 질문입니다.
안녕하세요 큰돌님. 2주차 #7 맵과 방향벡터 개념에서 문제 3번 질문있습니다.큰돌님 블로그에 나와있는 코드를 입력하고 실행시켜봤는데 제가 예상한 답과 조금 다른거 같습니다.1 0 11 0 10 1 1이렇게 입력했을때 방문한 좌표는 (0:0), (1:0), (0:2), (1:2), (2:1), (2:2) 이렇게 6개가 나와야 하는데 밑의 사진처럼 (0:0), (1:0) 밖에 안나옵니다.혹시나 입력이 틀린건가 싶어 (1),(2)과 같이 입력해 보았는데 같은 결과였습니다...(1)(2)배열에 입력한 값은 잘 들어갔는데... 뭐가 문젠지 모르겠습니다.도와주세요.. =========================================================아 해결되었습니다.main 문에서 2차원배열을 순회하며 if(visited[i][j] == 0 && a[i][j]) 조건을 충족하는 것만 DFS재귀함수 돌리면 되네요..ㅋㅋㅋ=> 결과