월 33,000원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
시간초과
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요 큰돌쌤! 현재 알고리즘을 공부하고 있는 학생입니다. 이 문제에서 ios_base::sync_with_stdio(false);cin.tie(NULL); cout.tie(NULL) '\n' 을 쓰지 않으면 시간초과가 나던데 이런거에 집중하는 거보다 이런 아이디어만 챙겨가면 되겠죠...? 몇몇 문제들이 이런 경우가 있던데 어떻게 공부하면 좋을지 조언을 받으려 게시판에 올립니다!
- 미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-I 17071번 숨바꼭질 5 질문있습니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요 큰돌님,3-I 해설을 보다가 이해가 안가는것이 있어 질문드립니다.수빈이가 3초에 도착하고 동생이 5초에 도착하면 +1,-1 로 만날수 있다 하셨는데해당 코드에서 어떻게 구현된건지 이해가 안갑니다.turn이 시간이고 홀수짝수로 visited에 도착한 시간을 나누는데 turn이 3이면 visited[1][수빈이 위치]에 저장이 되고 nx==b에 의해 바로 break 걸려 출력이 되는것 아닌가요...?이해가 안가 횡설수설 죄송합니다.
- 미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-J 다른 풀이 방법 질문드립니다.
제가 처음에 접근했던 방법은 옷의 개수가 3가지라면 3C0 + 3C1 + 3C2 + 3C3으로 입을 수 있는 모든 경우의 수를 구한 후, 같은 종류의 옷을 입은 경우의 수를 구해 빼는 방식이였는데void combi(int start, vector b){ if(b.size() == k){ print(b); return; } for(int i = start + 1; i < n; i++){ b.push_back(i); combi(i, b); b.pop_back(); } return; }이 함수를 사용해서 map<string,string>mp을 선언하고 옷의 이름과 종류 모두 입력 받아서 같은 종류의 옷을 입은 경우를 판별하여 구할 수는 없는지 여쭤보고 싶습니다.
- 미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
6 - F
http://boj.kr/798b9379c3254770abccef965fd8ee87몬스터 때리는 부분을 제외하면 작성해주신 정답 코드랑 유사해보이는데 어디가 잘못됐는지 잘 모르겠습니다.
- 해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-H 질문있습니다
if(isVowel(idx)) mcnt++, scnt = 0, is_include_v = 1;else scnt++, mcnt = 0;if(mcnt == 3 || scnt == 3) flag = 1;이 부분이 제가 이해하고 있는 것이 맞는지 궁금합니다.예제 입력에 ptoui를 예를 들어보겠습니다.for문에서 ptoui라는 문자열을 알파벳 하나하나 받아주면서p -> vcnt++, lcnt = 0 => vcnt = 1, lcnt = 0t -> vcnt++, lcnt = 0 => vcnt = 2, lcnt = 0o -> lcnt++, vcnt = 0 => vcnt = 0, lcnt = 1u -> lcnt++, vcnt = 0 => vcnt = 0, lcnt = 2i -> lcnt++, vcnt = 0 => vcnt = 0, lcnt = 3 다음 if문에서 lcnt == 3이므로 flag = 1이 되고,flag = 1일 때는 not acceptable 출력.이게 맞나요???
- 미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
배열 대신 벡터 사용 해도 괜찮나요?
int cnt[26]; 대신에 vector <int> answer (26); 를 사용했는데어떤 문제 이든지 배열 대신 벡터를 사용 했을 때 문제될 여지가 있을까요?
- 미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
4-F 질문입니다.
http://boj.kr/ffa390ab1d0145a8a863f6733fdf21f0k가 주어졌을 때, a n t i c은 무조건 배워야하니까 21개 중 k-5개를 뽑는 경우의 수에서 기저사례에서 최댓값을 갱신하는 방법으로 코드를 짰는데요..제 코드 시간 복잡도를 계산해보면 21C(k-5)*50*15로 계산했습니다(50은 단어의 최대개수,15는 k의 최대 범위). 궁금한 점은 1.저의 코드의 시간복잡도 계산을 저렇게 하는게 맞는지 2. 왜 시간초과가 나는지 모르겠습니다.
- 미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
강의교재126 int형 우선순위큐
while(pq.size()){ cout << pq.top() << " : " << pq2.top() << " : " << pq3.top() << '\n'; pq.pop(); pq2.pop(); pq3.pop(); } 이코드에서 궁금한것이 있는데요 pq.size()는 5이고 참이니깐 while문 안에있는 조건은 계속 돌아가서 무한루프가 되는게 아닌가요?그리고 코드마지막에 있는 pq.pop(); pq2.pop(); pq3.pop(); 는 왜 한번씩 더 써주는건가요? 위에 있는 코드로도 충분하지 않나요?
- 미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-G 9996번 질
안녕하세요 큰돌님 강의 잘 듣고 있습니다. 1-G번 문제 질문드립니다.https://www.acmicpc.net/source/share/7c68255b14c740b9b87c4053d0d0c0db왜 자꾸 틀렸다고 하는지 모르겠네요 ㅠ 강의 듣고 사이즈 예외처리까지 다 된건 줄 알았는데 if ((input.find(temp1) != string::npos) && (input.find(temp2) != string::npos)) { cout << "DA" << '\n'; } else { cout << "NE" << '\n'; }이 부분이 왜 오류나는지 알 수 있을까요? 감사합니다.
- 미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
긍정왕 홍철이 문제 질문입니다.
문제를 보고 아래와 같이 풀었으나// Online C++ compiler to run C++ program online #include <bits/stdc++.h> using namespace std; const int n = 3; //4방향 이동 int dy[4] = { -1, 0, 1, 0 }; int dx[4] = { 0, 1, 0, -1}; int visited[n][n]; vector<int> v; //기본 맵 int a[3][3] = { {10,20,21}, {70,90,12}, {80,110,120} }; void print() { for(int i : v) { cout << i << " "; } cout << "\n"; } // 완탐 재귀 함수 void go(int y , int x) { //기저 조건 if( y == n-1 && x == n-1 ) { print(); return; } for(int i = 0; i < 4; i ++) { int ny = y + dy[i]; int nx = x + dx[i]; //범위 체크 if( ny < 0 || ny >= n || nx < 0 || ny >= n ) continue; if( visited[ny][nx] ) continue; visited[ny][nx] = 1; //방문 처리 v.push_back(a[ny][nx]); go(ny, nx); visited[ny][nx] = 0; //원복 v.pop_back(); } } //완탐과 원복 : 예제_ 긍정왕 홍철이의 구걸 여행행 int main() { visited[0][0] = 1; v.push_back(a[0][0]); go(0,0); return 0; } 출력이 위와 같이 0이 껴서 이상하게 나옵니다. 큰돌님 코드와 비교해 봤는데 다른 점을 못찾겠어요ㅜㅜ 제가 실수한 것이 있을까요??
- 미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-N 1629 홀수 일 때의 처리가 이해가 되지 않습니다.
#include <bits/stdc++.h> using namespace std; long long A, B, C; long long go(long long a, long long b) { if (b == 1) { return a % C; } long long ret = go(a, b / 2); ret = (ret * ret) % C; if (b % 2 == 1) { ret = (ret * a) % C; } return ret; } int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cin >> A >> B >> C; cout << go(A, B) << '\n'; }B가 홀 수 일 때, 홀수 처리를 하기 직전ret = A^(B-1) % C 입니다.그러면 홀수처리가 진행 될 때ret = ((A^(B-1) % C) * A) %C 가 코드의 상황 인데 이게 최종 결과인 A^B % C 와 같아지는게 이해가 안됩니다. 나머지 연산의 합동공식이(a * b) % c = (a % c * b % c) % c 이기 때문에 A^B % C= (A^(B-1) * A) % C= (A^(B-1) % C * A % C) % C위와 같은 식이 나와야 하고 ret = (ret * a) % C가 아니라ret = (ret * a % C) %C 가 되어야 하는 것 아닌가요? 백준에서는 둘다 맞게 처리 되는데 이해가 되지 않습니다.
- 미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
4-C 질문입니다
http://boj.kr/f816b7f59d3247c7958683ceae5d6b76선생님 안녕하세요.모든 경우의 수 마다 구역을 색칠해서 dfs가 2번호출되면 최솟값을 갱신하는 로직으로 짰습니다.테스트케이스는 다맞는데 왜 틀리는지 이유를 모르겠습니다.
- 미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
강의교재p107
if(mp.find(1) == mp.end())이런 반복문 조건이 나오는데요 mp[1]을 할당하지 않기 위해서 이렇게 조건을 쓰신것 같은데요 조건식같은경우는 일단 할당된것이 하나밖에 없으니깐 처음과 끝이같다 그래서 참이다가 맞나요?그런데 그렇게되면 할당을 한것이랑 똑같지 않나요?
- 미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
강의교재 p106 질문
cout << mp[1] << '\n'; cout << mp2["aaa"] << '\n';이 코드에서요 위의 코드는 key에 1 값에 0을 저장하는 것은 알겠습니다.그리고 두번째 코드에서도 key에 aaa까지는 알겠는데 코드 실행결과를 보면 값이 %가 나와있습니다. 왜 그렇게 값이 나오는건가요?
- 미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
강의교재p104
mp.erase("kundol"); auto it = mp.find("kundol"); if(it == mp.end()){ cout << "못찾겠네 꾀꼬리\n"; } 이 코드결과 "못찾겠네 꾀꼬리"가 실행이 되는데요 제 생각에는 kundol을 erase 했으니 mp에 find를 실행하면 kundol이 없으니깐 0을 반환해서 it이 0이되고 그리고 mp.end는 지금 key값이 3개가 있으니 인덱스값이 2가되서 if반복문이 실행이 안되야하는거 아닌가요?
- 미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
강의교재 p100 erase() 질문
auto it = a.begin(); it++; a.insert(it, 1000); print(a); it = a.begin(); it++; a.erase(it); print(a); 강의교재를 보시면 이러한 코드가 나오는데요 저 코드를 실행한 결과는 3 1000 2 1 1 2 3 3 2 1 1 2 3이렇게 나오는데 결론적으로 1000이 사라졌습니다.하지만 제가 생각하기에 첫번째 auto it 에서 it++때문에 it= a.begin() +1이 되고 4번째 코드에서는 원래에 있던 it에 다시 it++를 하니 it = a.begin() + 2가 되는것이 아닌가요? 그래서 3 1000 2 1 1 2 3 여기에서 처음에 나오는 2를 삭제해야하는것이 아닌가요?
- 미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
강의교재p94 2차원배열
vector v3[10];2차열 배열을 만드는 방법중에서 위와같은 코드로 2차열배열을 만들수 있다고 하셨습니다. 밑의 그림도 참고를 해봤는데 이해가 가지않습니다.V3[10]을 하게 되면 1차원에 10개의 공간만 생기는것이 아닌가요??
- 해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
코드 순서 차이
1012번 문제 이전에 dfs. bfs 강의 부분에서 제가 기억하기로는 ret++; dfs(i, j); 이렇게 써서 제출 후 정답은 맞았습니다만...이 두 코드의 위치가 바뀌어도 상관없는 걸로 아는데제가 알고 있는 것이 맞나요?아니면 혹시 코테 볼 때는 dfs(i, j); ret++; 이렇게 해야만 하나요???
- 미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
강의교재 p90 erase() 이터레이터
1.v.erase(v.begin(), v.begin() + 3); 강의교재를 보시면 위의 코드가 나오는데요 저 코드를 실행한 결과 1~9까지의 숫자중에서 1~3까지의 숫자가 사라졌는데요 제가 해석한 바로는 앞의 begin을 으로 부터 +3이니깐 주소가 3칸 옮겨간거고 그리고 범위가 ()이므로 원래는 1~4이지만 4를 제외하고 1~3만 제거가 되는건가요? 2.auto a = find(v.begin(), v.end(), 100);같은 페이지에 있는 코드입니다.100을 찾아서 인덱스값을 a에 넣어야할것같은데요 9보다 그니깐 인덱스 값은 6이 되어야 하는것이아닌가요>?
- 미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
4-B 재귀함수 관련 질문입니다.
go(here + 1); a[here] = ~a[here]; go(here + 1);go함수 내에서 강사님이 하신대로 위와 같이 호출하면 기저사례에 8가지 경우의 수(3행기준)가 모두 나온다는 것을 재귀함수 트리를 그려서 확인을 했을뿐 이해가 가지 않습니다..go(here + 1); a[here] = ~a[here]; go(here + 1); a[here] = ~a[here]; //원복뒤집고 go함수 호출하고 그 함수가 종료되고 다시 돌아왔을 때 바뀐 배열을 다시 뒤집는 과정이 있어야 함수가 똑바로 작동할거라고 계속 생각하게 되네요. 예를 들어, {4,5,1}이 있을 때 , go(1)이 호출되고 첫번째go(2)함수가 진행되다가 함수가 종료되어서 다시 go(1)로 돌아왔을 때, {4,5,1}이 되어있어야 기저사례에서 8가지 경우가 제대로 나올텐데 왜 원복 코드없이도 8가지가 제대로 나오는지 이해가 안됩니다!!!!!!!!!