게시글
질문&답변
2024.05.14
1-L 주몽문제 시간초과 관련 질문입니다 ㅠ
안녕하세요 혁준님 ㅎㅎ 일단은 scanf와 cin은 되도록 같이 사용하시면 안됩니다. 두개를 같이 사용할 경우 입출력싱크를 맞추느라 -> 시간발생 -> 시간초과 발생할 수도 있습니다. 또한, 교안내의 입출력싱크 부분 참고부탁드립니다. 그리고... scanf를 cin으로 변경했더라도 이 코드는 문제가 있습니다. 바로 N의 범위인데요. 문제 최대 범위에 맞춰서 배열의 범위를 수정해야 합니다. (수정안할경우 런타임에러 발생합니다.) #include #include using namespace std; //재료의 고유번호를 담을 배열 int MtArrary[15000]; //입력받을 재료의 개수 int N; //갑옷을 만드는 데 필요한 수 int Result; //갑옷을 만들수 있는 수 int ArmourCnt; //입력받을 재료의 고유 번호 int a; int main() { cin >> N; cin >> Result; if (N > a; if (a 그리고 코드리뷰를 드리면요 ㅎㅎ if (a 입력값이 음수로 주어지는 경우는 없습니다. 또한 주어졌을 때 바로 끝내라는 문제 지문도 없습니다. 이런 불필요한 코드는 지워주셔야 해요 ㅎㅎ 또 질문 있으시면 언제든지 질문 부탁드립니다. 좋은 수강평과 별점 5점은 제게 큰 힘이 됩니다. :) 감사합니다. 강사 큰돌 올림.
- 0
- 1
- 23
질문&답변
2024.05.14
재귀 함수에 어떻게 접근해야 하는지 잘 모르겠습니다.
안녕하세요 룰루님 ㅎㅎ 기저사례는 괜찮고, 재귀를 시켜야할 메인 로직 부분이 잘 안된다는 말씀이시죠? 이부분은 정확히 재귀적 사례(Recursive Case)라고 하는데요. 문제를 하나 이상의 더 작은 하위 문제로 분할했을 때 그 하위부분을 말합니다. 즉 어떤 문제를 봤을 때 작은 문제로 분할한다면 어떻게 될 것인가에 초점을 맞춰 코드를 구축하면 됩니다. 예를 들어 피보나치의 경우 1, 1, 2, 3, 5, 8, 13... 으로 크게 다 더할 수 있지만 이거를 세분화를 시켜보면. 다음과 같은 점화식이 나옵니다. F(n) = F(n-1) + F(n-2) F(0) = 0, F(1) = 1 (기본 사례) 이렇듯 그 전, 전전 단계를 더한다. 라는 로직으로 하위문제를 나눌 수 있고 앞의 점화식을 기반으로. int fibonacci(int n) { // 기본 사례 if (n == 0) return 0; if (n == 1) return 1; // 재귀적 사례 return fibonacci(n-1) + fibonacci(n-2); } 앞의 코드와 같은 것을 구축할 수 있는 것이죠. 또한 재귀 함수의 매개변수를 출력하는 부분을 넣어서 디버깅 걸어서 중간 결과를 출력하여 함수 호출이 올바르게 진행되고 있는지 확인하면서 로직을 구축하는 것도 하나의 팁입니다. 외워서 푸는건 되는데 이해는 아직 안돼요 >> 외워서 푸는 것도 괜찮습니다. 그러다보면 이해가 되는 단계까지 이어지실겁니다. 잘하고 계십니다. 또 질문 있으시면 언제든지 질문 부탁드립니다. 좋은 수강평과 별점 5점은 제게 큰 힘이 됩니다. :) 감사합니다. 강사 큰돌 올림.
- 0
- 2
- 27
질문&답변
2024.05.14
3 - J 주난의 난 질문있습니다,,
안녕하세요 shinja님ㅎㅎ 코드 괜찮은 아이디어인데요 ㅎㅎ 010 00x 이 경우에 맨 왼쪽 0의 visited가 2가 될 수도 있지 않을까요? 영상 잘 보고 있습니다,, 근데 너무 어려워요 ㅠㅠㅎㅎ >> 꾸준히만 봐주시구 꾸준히만 문제 풀어주세요 지금처럼 질문하시면서 하시면 무조건 실력 올라가실거라 단언드립니다. ㅎㅎ 또 질문 있으시면 언제든지 질문 부탁드립니다. 좋은 수강평과 별점 5점은 제게 큰 힘이 됩니다. :) 감사합니다. 강사 큰돌 올림.
- 0
- 1
- 32
질문&답변
2024.05.14
algorithm헤더의 sort
안녕하세요 장첸님 ㅎㅎ 아이디가 무섭네요.. ㅠㅠ 저거 코드가 좀 잘못된 것 같습니다 ㅠㅠ #include using namespace std; bool cmp(pair a, pair b){ return a.first > pairs = {{5, 1}, {2, 2}, {5, 3}, {3, 4}, {2, 5}}; cout cmp 를 추가한 코드가 해당 의미에 더 명확한 코드가 될 것 같습니다. 해당 부분은 오늘 내로 수정해서 업로드 하도록 하겠습니다. 잘못된 부분을 지적해주셔서 감사드립니다. 감사합니다. 강사 큰돌 올림.
- 0
- 1
- 28
질문&답변
2024.05.14
2-C 질문있습니다!
ㅎㅎ 그렇습니다.. ㅎㅎ 또 질문 있으시면 언제든지 질문 부탁드립니다.
- 0
- 2
- 35
질문&답변
2024.05.14
1-J 질문 있습니다!
안녕하세요 cid님 ㅎㅎ Q1. 전역변수는 지역변수보다 0으로 초기화, 더 많은 요소를 할당할 수 있는 점이 좋습니다. 시간복잡도 상의 효율성은 없습니다. 그렇게 짜셔도 괜찮습니다. ㅎㅎ Q2. 이 문제 같은 경우 2번째 변수만이 중요하고 첫번째 변수는 버리는 것이라 저렇게 짜도 무방합니다. 또 질문 있으시면 언제든지 질문 부탁드립니다. 좋은 수강평과 별점 5점은 제게 큰 힘이 됩니다. :) 감사합니다. 강사 큰돌 올림.
- 0
- 1
- 24
질문&답변
2024.05.13
2-T 17298번-오큰수 질문
안녕하세요 hoon님 ㅎㅎ 먼저 우선순위큐 코드 괜찮네요 ㅎㅎ 군더더기도 없는 코드라 굿굿입니다. 우선순위큐로 푸는 상황에서는 현재 가르키고 있는 인덱스의 값보다 작은 값의 모든 우선순위큐 안에 있는 인덱스들을 pop을 한다고 확신을 하겠는데 스택은 확신이 안 듭니다 ... 이렇게 딱 스택을 써도 문제가 없겠다. 즉 위 같은 상황이 안 생기겠다! 라는 생각이 드는 논리를 알고 싶습니다. >> 먼저 hoon님의 코드 hoon님은 우선순위큐 상단 = 제일 작은 수 이 수가 나오는 경우 -> 이보다 더 큰 수를 찾았을 경우, 순차적으로 해도 문제가 안됨. 어차피 작은 수부터 뽑힐게 자명함. 이런 논리이신거잖아요. 괜찮습니다. 그렇다면 저는 왜 스택을 사용했을까요? 짝짓기 : 일단 스택을 생각해보자. 그러면 스택으로 어떻게 하지? 근데 이 문제 같은 경우는 스택만 있어서는 안될 것같다. 왜? 3 2 1 4 같은 경우는 3 2 1의 오큰수는 4가 되어야 하기 때문에 단순히 1 - 4 같이 짝짓기는 안되겠네 생각 -> 배열을 생각하자. 왜 배열일까? : 3 2 1 에 4라는 값을 담아야 겠다고 생각. 스택을 담는것을 일단 담는다고 생각 (원래 짝짓기 문제에서 보통 그냥 다 일단 담음 그 경험에 비추어 생각)그렇다면 뺄때는 어떻게 해야할까? 스택에 3 2 1 을 담아두었을 때 4가나왔을 때 3 2 1이라는 값에는 4가 할당되어야 함. -> 순차적으로 빼면서 해당 값을 집어넣으면 끝. 이 때 push를 먼저 해야할까?: pop을 먼저해야할까? 4가 나왔을 때 빼는게 먼저이기 때문에 pop -> push를 기반으로 로직 구축 이런 플로우였던 것 같습니다. 모든 문제가 그렇지만 경험 + 예제를 기반으로 하나의 명제를 만들고 그 명제를 기반으로 로직을 구축하시면 됩니다. 그리고 이번 문제 - hoon님의 코드 및 로직도 괜찮았습니다. ㅎㅎ 문제에는 여러가지 답이 있고 그 답중에 괜찮은 답안이신 것 같습니다. 또 질문 있으시면 언제든지 질문 부탁드립니다. 좋은 수강평과 별점 5점은 제게 큰 힘이 됩니다. :) 감사합니다. 강사 큰돌 올림.
- 0
- 1
- 44
질문&답변
2024.05.13
당근마켓 엔지니어 문제 BFS 코드 질문
안녕하세요 대기업님ㅎㅎ 중괄호 때문인데요 ㅎㅎ if (a[ny][nx] && !visited[ny][nx]) visited[ny][nx] = visited[y][x] + 1; q.push({ny, nx}); 중괄호를 치지 않으면 = 한줄만 인식 됩니다. 한줄 이상일 때는 다음과 같이 중괄호를 치셔야 합니다. 다음과 같이 해보시겠어요? if (a[ny][nx] && !visited[ny][nx]){ visited[ny][nx] = visited[y][x] + 1; q.push({ny, nx}); } 또 질문 있으시면 언제든지 질문 부탁드립니다. 좋은 수강평과 별점 5점은 제게 큰 힘이 됩니다. :) 감사합니다. 강사 큰돌 올림.
- 0
- 2
- 45
질문&답변
2024.05.13
2-R 트리 질문있습니다.
안녕하세요 지우님 ㅎㅎ 먼저 이전 질문에 저 대신 답변 달아주신 부분에 대해 감사하다는 말씀을 드립니다. ㅎㅎ 5 1 2 3 4 -1 3 답 : 1 jwoo님 : 0 반례는 다음과 같습니다. 1자로 선형적으로 연결된 트리에서 답이 1이 되어야 하는데 0이 출력이 됩니다. 또 질문 있으시면 언제든지 질문 부탁드립니다. 좋은 수강평과 별점 5점은 제게 큰 힘이 됩니다. :) 감사합니다. 강사 큰돌 올림.
- 0
- 2
- 42
질문&답변
2024.05.13
2-B 유기농 배추 질문있습니다
안녕하세요 ㅎㅎ for (int i = 0; i 이부분을 54 * 54로 바꾸셔야 합니다. 해당 부분은 교안내의 fill ()함수 부분을 참고 부탁드립니다. fill함수가 떠오르지 않는다면 이중for문으로 배열을 초기화하는 방법을 사용해야할 것 같은데요, 시간복잡도 측면에서 손해를 보게 되는지 아닌지 알려주시면 감사하겠습니다! >> fill()으로 array N 짜리 배열을 초기화 하는 시간복잡도 = N입니다. ㅎㅎ 손해는 아닙니다. 하지만 fill()로 하시는 습관을 들여주세요! 또 질문 있으시면 언제든지 질문 부탁드립니다. 좋은 수강평과 별점 5점은 제게 큰 힘이 됩니다. :) 감사합니다. 강사 큰돌 올림.
- 0
- 2
- 42