묻고 답해요
169만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
7-F 질문있습니다 :)
안녕하세요 선생님 🙂이번 강의에서도 좋은 아이디어를 배워간 것 같습니다. 정말 감사합니다 ^^ 너무 좋은 코드라 이것저것 뜯어보면서 테스트를 해봤는데요, 몇 가지 이해가 되지 않는 부분이 있어서 질문 드립니다. go함수의 조건문에서 if와 else if가 헷갈립니다. if (n % 3 == 0 && dp[n] == (dp[n / 3] + 1)) func(n / 3); else if (n % 2 == 0 && dp[n] == (dp[n / 2] + 1)) func(n / 2); else if (n - 1 != 0 && dp[n] == (dp[n - 1] + 1)) func(n - 1);if문 안에서 조건 처리를 전부 해주었기 때문에 else if가 아닌 if문을 사용해도 될 것이라고 생각했습니다. 하지만 테스트케이스에 2를 넣었을 때, 2 1 1이 출력되더라구요. 무엇때문에 이렇게 출력이 되는지 알려주시면 정말 감사하겠습니다! go함수의 탈출 조건을 없애도 정답 처리가 됩니다.if (here == 0) return; 을 없애도 정답 처리가 됩니다. n이 0이 될 수 있는 방법이 없기 때문에 문제가 없는 것 같습니다.코드가 한 줄밖에 안돼서 성능 차이는 없고 이런 것까지 질문하냐고 생각하실 수도 있지만, 만약 프로젝트에서 이러한 코드가 계속해서 누적이 된다면 성능에 영향을 미칠 수도 있겠다 싶더라구요. 제 생각이 맞는지 궁금해서 여쭤봅니다..!! go함수의 조건문 안에서 괄호를 쳐주신 이유가 궁금합니다.http://boj.kr/0c7fd72a3f0c4f6bbe386755e7845c39별다른 이유 없이 습관적으로 치셨을 수도 있겠지만, 조건문 안의 괄호를 빼면 시간이 4ms이 아닌 8ms로 되는 것을 볼 수 있습니다.간헐적으로 발생한 문제일 수도 있겠지만 테스트를 몇 번 해봤는데도 계속 8ms로 나오더라구요. 혹시 조건문 안의 괄호가 시간복잡도와 연관이 있는 것인지 궁금합니다!!
-
해결됨[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
virtual 소멸자 관련 질문 있습니다.
상속 관계에 있는 두 클래스, Player 와 Archer 에서(Player *) player = new Archer() 예시를 들어 주셨습니다.만약 virtual 소멸자를 사용하지 않은 경우에delete player; 를 하면 Archer 의 소멸자가 호출되지 않는다는 것을 알게 됐습니다.Q. delete player; 를 한 경우에 자식 클래스인 Archer의 객체 멤버 변수 등, 객체의 메모리를 반납하고 소멸자를 호출하지 않을 뿐인 건가요? 아니면 Player 클래스의 객체에 해당하는 메모리만 반납하고, Archer 객체의 멤버 변수 등에 해당하는 메모리를 반납하지 않고 소멸자도 호출하지 않는 것인가요?보여주신 예시 같은 경우에서는 Archer의 멤버 변수 Pet* _pet 이 힙의 Pet 객체를 가리키고 있는데, 소멸자를 호출하지 않아서 힙에 해당하는 메모리를 반납하지 않는다는 것은 이해했습니다. 다만, 이 포인터에 해당하는 메모리도 반납하지 않는 것인지 궁금합니다.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-P 질문 있습니다.
void flower(int cnt,int hap) { if (cnt == 3) { ret = min(ret, hap); return; } for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { if (check(i, j)) { flower(cnt+1,hap + setFlower(i, j)); eraseFlower(i, j); } } } }이 부분에서 질문이 있습니다. 문제를 보면 화단 밖으로 꽃잎이 나가게 된다면 그 꽃은 죽어 버린다고 나와있는데 그러면i와 j의 범위가 0부터 n-1까지가 아닌 1부터 n - 2까지여야되는 것이 아닌가요? 0과 n-1부분에 꽃이 있으면 그 꽃은 죽은거라 빼고 계산을 해야되는것이 맞지 않나 궁금합니다!
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
4-B 질문있습니다
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 1.HHT -> 001 (4)THH -> 100 (1)THT -> 101 (5)이렇게 2진수로 변환하는 것은 이해가 됐습니다.그런데 (001 -> 4 (1 * 0 + 2 * 0 + 4 * 0 = 4) 라고 하셨는데 001 이면 자리의 가중치가 124 순서가 아니라 421 아닌가요..? 그냥 외울까 싶었는데.. 더 헷갈려서 질문 납깁니다. 2.그리고 go 함수 호출에 대해서 궁금한 게 있습니다.일단 순서가 go(1) - > go(2) -> go(3) -> go(4) 종료됨 -> go(3)으로 돌아와서 뒤집고 go(4) 또 실행되서 종료.다시 go(2)로 돌아왔을 때 아까 앞에서 뒤집혔던 상태로 있어도 상관없는 건가요? 3.a 배열의 크기가 왜 44인지 모르겠습니다. 어차피 행만 넣을 거니깐 넉넉히 잡아도 25 여도 상관없는 거 아닌가요? 그냥 넉넉하게 잡아서 44인지 아니면 이유가 있는 걸까요?항상 좋은 수업 감사합니다!!
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-J 주난이의 난
안녕하세요 큰돌선생님선생님 덕분에 점차 백준 문제들을 생각하고 풀수 있게 되고 골드 문제까지도 한번씩 맞추다 보니 행복하게 코테 준비를 하고 있습니다. 감사합니다 https://www.acmicpc.net/submit/14497/83745509위의 링크처럼 코드를 작성하면 시간초과가 발생하지만 dfs() 함수 부분에서 if(arr[y][x] == '0') 이부분을 없애고 아래와 같이 고치면 맞다고 뜨는데 어떤 이유에서 그런걸까요? for(int i=0; i<4; i++){ int ny = y + dy[i]; int nx = x + dx[i]; if(ny < 0 || nx < 0 || ny >= n || nx >= m) continue; if(visited[ny][nx]) continue; if(arr[y][x] == '1'){ v.push_back({y,x}); continue; } dfs(ny,nx); }
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-I번 문제를 보고 qSize를 이용하여 풀었습니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.http://boj.kr/f623162b10b6435aa0da766d834df0d8안녕하세요 큰돌님 먼저 양질의 강의 너무 잘 보고 있습니다.급하지 않게 여러 번 복습해가며 문제 풀이를 하고 있어 아직도 3주차 문제들을 풀고 있네요 ㅎㅎ다름이 아니라 3-I 문제를 보고 qSize 변수가 로직에 어떤 영향을 끼치는 걸까 의문이 들어 해당 문제를 여러번 디버깅 해보고레벨 단위로 탐색한다는 말에 뮤탈리스크 문제가 생각이 나 복습 겸 풀어봤습니다.혹시 실례가 안된다면 코드 리뷰 한 번 부탁드려도 괜찮을까요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-I질문 있습니다
http://boj.kr/aafa9c1e2c3843a2852b34b61bcadf37안녕하세요 큰돌님 공부를위해 기존에 풀이했던 문제를 다시 처음부터 풀면서 강의를 다시 시청하고있습니다.오랜만에 다시 알고리즘 공부를 하려고 강의를 열었는데 추가된 교안과 추가영상등 양질의 강의가 더욱 업그레이드되어 감사함을느낍니다.다시풀어도 플레티넘문제는 아이디어에서 자잘하게막히는 부분이 생겨 궁금증을 해결하기위해 질문을 남겼습니다.수빈이가 time만큼 이동하면서 해당범위를 최단탐색(bfs)를 통해 기록하면서 동생의 이동위치와 겹치는 부분이 생기면 홀수/짝수에 관계없이 +2초의 시간을 이용해 수빈이는 해당위치에 고정해서 대기 할 수 있기 때문에 방문배열(visited)를 홀수/짝수로 구분해 k(동생의위치)를 체크하면서 범위탐색을 형제노드(탐색시 queue의 원소들)을 순서대로 체크한다는 아이디어 까지는 이해를 했다고 생각합니다.이때 두가지가 큰돌님코드에서 이해가안가는데첫째로 visited의 탐색체크를 (turn+1) %2 = turn%2 +1로 체크를 안하고 반대로 체크하시는부분,두번째로 다음위치(nx)와 동생위치(b)만을 비교, 반복문을 탈출하는 부분이 있는데 위치만을 비교하면 안되고 방문시의 홀수/짝수도 같이 구분이 완료되야만 체크가 완료된게아닌가요? 그래서 제가 제출한 코드에서는 짝수/홀수 체크가 끝난 동생방문타이밍에서만 체크가 확인되면 조건체크후 탐색을 종료하게끔 작성했는데 예시코드에서 위에언급한 두부분이 이해가 잘 안가네요 답변해주시면 감사하겠습니다.
-
미해결[하루 10분|C++] 누구나 쉽게 배우는 C++ 프로그래밍 입문
#include <iostream> 중복
그 전 강의에서 헤더파일을 중복으로 불러오면 에러가 난다고 배웠습니다.하지만 이번 강의대로 분할 컴파일 하게 되면 헤더파일 stock.h와 main 함수에서 <iostream>을 두 번 포함하게 되는데 <iostream>은 사용자가 만든 헤더파일이 아니라서 중복으로 include해도 상관이 없는 것일까요?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3주차 #1 완전탐색과 백트래킹
첫번째 문제는 아래와 같고 return go(idx + 1, sum + v[idx]) + go(idx + 1, sum)두번째 문제는 아래와 같이 병렬로 실행하는데go(idx + 1, sum + v[idx]) go(idx + 1, sum)어떨 때는 더하고 어떨때는 각각 실행하는데 이유를 모르겠어요. 첫번째는 경우의 수를 구하고 두번째는 최대값을 구해서 그런건지.. 근데 이해가 잘 안갑니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
실제 코테 시험에 대해서 질문이 있습니다.
오늘 입사를 위한 코딩테스트를 두번째로 봤습니다. 공기업인데 프로그래머스로 이용해서 시험을 보았습니다. 그런데 제가 직접 #include<bits/stdc++.h>를 입력하면 오류가 나고 초기에 include로 작성되어있는 것들만 사용이 가능했습니다. 그래서 cout 으로 디버깅도 못했습니다.. 그리고 4문제 중 한문제에만 using namespace std; 가 초기에 적혀 있었고 나머지 세문제에는 초기에 적혀있지 않았습니다. 그래서 이 부분도 제가 직접 작성을 해주었더니 오류가 생기더군요.. 제가 아직 기업 신입 코테를 많이 봐본적이 없는데 이렇게 제한있는 곳들이 많나요..? 앞으로 이러한 상황들까지 대비해서 공부를 해야되는지 생각이 듭니다. 저번에 처음으로 다른 기업 시험을 볼 때도 프로그래머스를 이용했던 것으로 기억하는데 그때는 include도 마음대로 되고 namespace도 작성 가능했던걸로 기억합니다.. 그런데 오늘은 안돼서 문의했을 때는 오류는 없다고 했습니다..
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-C 코드확인 부탁드립니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. dfs 의 매개 변수로 vector 를 넘겨줄 때 코드입니다 .http://boj.kr/129282969aaf44f28f97cf1b1024ad1e vector 를 전역변수로 했을 때 코드입니다.http://boj.kr/74480c35c04441f2860defc1634e0e0a 두 코드 모두 예제는 맞추는데 제출하면 틀렸다고 나와서 코드확인 부탁드립니다!
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-H 메모리 초과 질문드립니다.
안녕하세요, 선생님.코딩테스트를 대비하여 선생님의 강의를 열심히 듣고 있습니다.3-H 문제를 푸는데 있어서 다음의 로직을 사용하여 선생님의 코드를 수정해보았는데요.prev 배열 내 원소에 0이 아닌 값을 할당하므로 이를 통해 방문 처리를 할 수 있다는 점.v 벡터를 이용하여 가장 빠른 시간을 알 수 있다는 점.이에 visited와 ret 없이 코드를 수정해봤습니다.http://boj.kr/20c1cc00bed04b9692711c09e0c2c852 그런데 오히려 메모리 초과가 발생하였습니다.수정된 코드는 사용된 변수가 적음에도 불구하고 오히려 메모리 사용이 더 많아졌는데, 그 이유를 알고 싶습니다.감사합니다!
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
6-M 질문있습니다 :)
아무리 생각해도 저는 선생님이 안계셨으면 정말 큰일났을 것 같습니다.. ^^;; 제 풀이를 디버깅해봤는데요, cnt배열의 값이 문제없이 정확하게 들어가있습니다. 제 수준으로는 무엇이 잘못된지 알기가 어려워서 질문 드립니다..!! http://boj.kr/a69fdee058074fabbc1b33d7beb083c5
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
6-L 질문있습니다 :)
안녕하세요 선생님 🙂맞왜틀에 자꾸 걸리는거 같습니다 ㅠㅠ 테스트케이스도 맞고 생각도 꽤 많이 하고 조건을 체크했다고 생각하는데 자꾸 틀리니 스트레스가 이만저만이 아니네요 ㅠㅠ 이번 아이디어는 누적합을 기반으로 풀이하였습니다. 뺄셈을 하는 대신 나눗셈을 하면 될 것이라 판단하였구요, arr[0]의 값을 1.0으로 설정하였습니다. 또한, 연속된 수의 곱이니 곱연산이 일어나지 않는 경우는 2중 for문에서 j < i - 1로 처리해주었습니다.http://boj.kr/c016e1a3b9d54cb487564acfe350c3d4 앞에서 드리는 질문들도 계속해서 맞왜틀인걸로 미루어보았을 때, 제가 무언가 생각을 잘못하고 있는걸까요?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
6-I 질문드립니다 :)
안녕하세요 선생님 🙂이번 문제도 테스트케이스는 맞췄는데 틀렸네요 ㅠㅠ 이번 문제는 모르는 부분이 좀 많습니다! high의 값을 입력된 배열의 최소값으로 설정하였습니다. 왜 틀리는걸까요?테스트케이스에서 파의 길이 중에 가장 짧은 길이는 230입니다. 230보다 긴 파는 있을 수 없다고 판단하여 변수에 값을 저장한 후에 high의 값을 지정하였습니다. Check함수의 조건의 순서에 따라 값이 묘하게 바뀝니다.// main if (Check(mid)) { high = mid - 1; result = mid; } else { low = mid + 1; } bool Check(ll m) { return cnt < C; }그동안은 위와 같이 조건을 세웠었는데요, 이번 문제는 high와 low의 값을 변경해주는 위치가 바뀌었습니다. 그에 따라 Check함수의 return 조건도 아래와 같이 정반대로 바뀌었습니다. 윗 코드대로 출력을 하면 mid의 값이 176이 나옵니다. 반대로 아래 코드대로 출력하면 mid의 값은 175가 나옵니다.// main if (Check(mid)) { low = mid + 1; result = mid; } else { high = mid - 1; } bool Check(ll m) { return cnt >= C; }아무리 봐도 두 코드는 같은 코드로 보이는데요, 왜 값이 차이가 나는건지 모르겠습니다. 또, 이번 문제는 왜 아래의 방식을 선택하셨는지도 궁금합니다. 저는 아래의 링크와 같이 Check함수에서 result의 값을 도출하여 출력을 하였습니다. 아무리봐도 문제가 없다고 생각하는데요, 이렇게 풀이하면 왜 틀리는걸까요?http://boj.kr/325f8cd992f24dbbabf49c86a12384f6
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part1: C# 기초 프로그래밍 입문
C# 시리즈 || C++ 시리즈 자료구조 강의에 대한 질문입니다!
안녕하세요 방금 전 C# part.1 끝낸 비전공자 학생입니다!이제 part.2로 넘어가려고 하는데 커뮤니티 글에 C++ 자료구조가 더 상위호환이라고 들어서 혹시 이제 갓 입문한 학생도 C++ 자료구조를 보는게 더 도움이 될까요?C++ 자료구조를 이해하려면 C++ 지식이 필요한건 아닌지 여쭤봅니다!
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
Connected Component 문제 질문!
안녕하세요!Connected Componenet문제로 방귀 문제를 예시로 들어줬는데 만약 조건중에 어떤 육지는 오염이 되지 않게 해주는 장치가 있다고 한다면 해당 장치가 있는 육지는 ret에 포함되지 않아야 하는데, 이렇게 코드를 짤려면 어떻게 해야할까요?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
6-H 질문있습니다 :)
안녕하세요 선생님 🙂6-H 문제를 보자마자 6-E 대칭 차집합 문제가 떠올라서 같은 방식으로 풀어봤는데요,테스트케이스는 맞지만 틀렸다고 나옵니다. 이유가 뭔지 잘 모르겠어서 질문드립니다!! http://boj.kr/0c301b3a0f1546d08e31a6b41e69ea70
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
6-G 질문있습니다 :)
안녕하세요 선생님 🙂 한가지 이해가 되지 않는 부분이 있어서 질문 드립니다. result = -1인 경우를 아래와 같이 처리했는데요, if (X <= Y) { cout << "-1" << '\n'; return 0; }X == Y일 경우는 당연히 정답처리가 되긴 하지만.. 혹여나 예외로 Y의 값이 X보다 클 경우를 예외처리하려고 했는데요, 이게 왜 틀렸다고 나오는지 이해가 되지 않습니다. 항상 감사합니다:)http://boj.kr/9feefe6cb25d4acbaef72f01f91a84cb
-
미해결[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
현장강의는 어디서 들을 수 있나요???
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 현장강의를 들어야 수업을 따라갈 수 있을것같아요 ㅠ