http://boj.kr/ab659fec129e45c7b35407ed7e322f06 안녕하세요 선생님 문제 제출 결과가 시간초과로 나왔는데 , vector의 사용이 문제인지 이중 for문이 문제인지 아니면 다른 어떤 게 문제인지 궁금합니다 그리고 결과가 시간 초과라고 나왔을 경우 어떻게 대처하면 좋을까요? 예를 들어서 다른 자료형을 사용한다던지 아니면 로직을 바꾼다던지.. 제가 왕초보라 어떻게 대처해야 할지 모르겠습니다. ㅜㅜ 저는 위 코드를 다음과 같이 짰습니다. 입력받은 온도 값을 벡터에 저장. 총 n-k+1번 동안 반복해서 연속된 온도k개의 합을 구해 다른 벡터에 저장. 가장 큰 값 출력. 항상 감사합니다!!
[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
#include <iostream> using namespace std; class Knight { public: Knight() { cout << "[알림] 기본 생성자 호출" << endl; this->hp = 10; this->mp = 10; } Knight(int hp) { cout << "[알림] 타입 변환 생성자 호출" << endl; this->hp += hp; } ~Knight() { cout << "[알림] 소멸자 호출" << endl; } void print() { cout << "[정보] HP: " << this->hp << " MP: " << this->mp << endl; } public: int hp; int mp; }; int main() { // 1. 기본 자료형 형 변환 연산자 사용 // a의 값에 대해 형 변환 '연산자'를 사용하여 형 변환된 결과를 반환 후 b에 할당 int a = 3; double b = (double)a; // 2. 객체형에 대한 형 변환 생성자 사용 // (1) 기본적인 타입 변환 연산자 호출 순서 : 타입->소멸 Knight k1(5); k1.print(); // (2) 묵시적 타입 변환 연산자 호출 순서 : 타입->소멸 Knight k2 = 10; k2.print(); // (3) 기본 생성자로 생성 후 묵시적 타입 변환 연산자 호출하여 재할당 순서 : 기본->타입->소멸->소멸 Knight k3; k3 = 10; k3.print(); return 0; } [1]의 상황 - 이해하였습니다. 해당하는 기본 자료형의 경우 단항 연산자인 "형 변환 연산자" 에 의해 연산된 결과가 반환되어 double형 변수 b에 정상 할당되었습니다. [2-1]의 상황 - 이해하였습니다. 오버로딩된 기본 연산자 중 인수가 하나인 타입 변환 생성자가 자동으로 호출되어 객체가 생성되었습니다. [질문 항목] Q1. [2-2] [2-3]의 상황 - 헷갈립니다. 묵시적으로 형 변환 타입 생성자 가 호출되어 우항의 Knight(10)이 우선 동작하고 그 결과가 반환되어 k2에 할당되었다라고 생각하였는데 실제 어셈블리로 동작을 확인하니 예상했던 순서로 동작하지 않고 바로 타입 변환 연산자가 호출되어 [2-1]과 [2-2]는 완전히 같았습니다. 기본 자료형에 대한 casting 처럼 캐스팅이 먼저 동작되고 그 결과가 반환되어 좌항에 할당된다고 생각했습니다. 그런데 반환형이 없는 생성자인데 대입 연산자 기준 우측에서 사용될 수 있었던건 의미만 캐스팅일 뿐, 실제로는 형 변환 연산자의 호출의 다른 방법이기 때문인가요? (실제로는 타입 변환이 아닌 인수가 1개인 기본 생성자 호출인데 사용 방법이 마치 형 변환과 같아서 이름이 그렇게 붙은건가요?) 복잡하게 생각하지 않는다면, 타입 변환 생성자는 1) 그 자체로 생성자로 활용 2) 캐스팅의 두 가지 사용처가 있고 1), 2) 모두 내부적으로 같은 방식으로 동작함. 이라고 이해해도 괜찮을까요? 바로 전에 작성한 질문은 생각을 제대로 정리하지 못해 글이 난해하여 다시 정리하여 올리게 되었습니다. 좋은 강의 감사드립니다. 정말 많이 배우고있고 큰 도움이 되고 있습니다.
안녕하세요 선생님, 최댓값 초기화에 관한 질문을 드립니다. 다른 문제에서는 long long의 큰 값 초기화를 1e18로 했었는데 이번 문제에서는 1e18 + 4인 이유가 궁금합니다. 더해주는 숫자의 값은 크게 중요하진 않고 +1 ~ +4 모두 값을 보정해준다는 면에서 같은 의미를 가지는 것인가요? 단순히 1e18로 초기화할 경우 미세하게 숫자가 부족하여 틀리는 경우가 있으므로 작은 값을 필수적으로 더해주어야 한다고 이해해도 괜찮을까요?
http://boj.kr/d27f965013354f43a4356d5d2d5baea9 해당 문제를 왜 틀린지 몰라서 헤매다가 배열을 초기화해주니 정답처리 되었습니다. 그런데 배열 초기화를 하지 않았다고 하더라도 출력값은 어짜피 동일한데 왜 이전에는 오답처리가 되었는지 이해가 안되어서 질문 드립니다. 가비지 값때문에 그 값만큼 문자가 출력되어서 틀렸다면 이해가 되는데 출력값은 이전과 동일하게 나옵니다. 이전에 오답이었던 이유가 무엇인가요? 이전 코드는 해당 소스코드에서 a배열을 초기화하지 않았습니다.
안녕하세요 선생님, 강의를 듣던 중 궁금한 점이 생겨 질문을 드립니다. https://www.acmicpc.net/source/share/ac40156090a44a3883d00e1da2250094 답지의 코드에서 ret == INF일 경우 -1을 출력하고 있는데, 유일하게 ret 갱신이 이루어지는 부분은 ret = min(cnt, ret);이기 때문에 ret값이 INF가 되려면 cnt가 INF이거나 그 이상이 되어야 할 것으로 보입니다. 백트래킹을 위해 추가된 코드 if (cnt >= ret) return; 이 있기 때문에 x, y 끝지점에 도달하기 전에 cnt >= ret일 경우 끝지점에서만 일어나는 ret 갱신이 일어나지 않기 때문에 ret는 INF일 수 있겠구나 생각했지만 그럴 경우 cnt >= ret이 되기 위해 cnt >= INF인 경우가 생기게 됩니다. cnt >= ret이 아닌 이상 언젠가는 y == len에 도달하여 ret 갱신이 이루어질 것이고, 최초 dfs 호출 시 cnt를 0으로 주었기 때문에 cnt >= INF가 되기 위해선 실제로 cnt가 한 칸씩 증가할 수밖에 없습니다. 재귀를 통해 cnt를 하나씩 증가시킬 경우 INF에 도달하기까지 매우 많은 시간이 걸릴 텐데 어떻게 시간 초과가 나지 않는 것인지 궁금합니다. 시간 복잡도를 계산해봤을 때 재귀함수의 시간 복잡도는 O(갈래^깊이), 최악의 경우 for문 5번에서 재귀함수가 모두 호출 되므로 갈래 = 5, cnt를 1씩 증가시켜 INF에 도달하려면 깊이는 INF이므로 O(5^INF)라고 생각했는데 시간복잡도를 잘못 계산한 것일지 어떻게 INF일 때 시간 초과가 나지 않는 것인지 질문을 드립니다.
http://boj.kr/3ab33c32342c4bb69dab00eeab01852a 작성해 본 코드입니다. 혹시 이분탐색 부분인 while(lo<=hi){ mid = (hi+lo)/2; if(check(mid)){ hi = mid - 1; h_max = mid; } ~~ 에서 h_max = mid 부분을 h_max = min(mid, h_max); 로 바꾸게 되면 min을 사용해서 최솟값을 잡을 수 있을 줄 알았지만 "틀렸습니다"가 되어 질문드립니다. ( 예제는 전부 맞다고 나옵니다) 감사합니다.
http://boj.kr/b073d7edeccf425cbd7f700cd557fa91 next_permutation을 이용하여 문자열의 요소들을 섞어가면서 각각의 경우에 reverse한 문자열과 일치하는 경우가 있는지 탐색하는 방법을 생각했습니다. 그런데 시간 초과가 발생하여 질문드립니다ㅠ reverse 함수의 시간복잡도는 O(n) 아닌가요..?? 어느 지점에서 시간이 문제가 된 것인지 궁금합니다.ㅠ
안녕하십니까 큰돌님 1-D 강의 보기 전에 다른 방법으로 혼자 풀어봤는데 효율적인지 궁금합니다 http://boj.kr/37b43fc6a65a47feaaed0c00515f4eed 그리고 처음에 pop 사용해서 코드 작성했었는데 오류가 나던데 스택, 큐, 디큐의 pop 함수는 반환값은 없는 건지 궁금합니다 !
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. http://boj.kr/726cac08b23b48e39d08b58e6bf528c5 이와 같이 bool로 작성 해봤는데 틀려서요 한번 확인 부탁드리겠습니다 감사합니다!!