묻고 답해요
169만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2 - T : 17298 오큰수 문제
http://boj.kr/36b07be654c44bf9ac885bc8f1726452 예시 코드도 맞고, 제 생각에는 맞는 코드인 것 같은데어느 부분에서 틀린 건지 잘 모르겠습니다.예외 테스트케이스가 있을까요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
재귀하여 mod 11하는 문제에 질문있습니다.
이런식으로 코드를 구성하였습니다해당 부분에서 이전수업에서 들었던 모듈러연산은 최종결과에서 하는것과 중간에 모듈러연산이 사칙연산에 의해서 같이 계산되는게 결과가 같다고 기억하여 이런식으로 구성하였는데 맞는걸까요? 정답은 같은것같은데 테스트케이스가 따로있진 않은 예제라 혹시나하여 질문드립니다
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3 - B 카테고리 질문
안녕하세요, 3-B가 최단거리를 구하는 문제이기에 BFS를 활용한 것까지는 이해가 됐습니다! 그런데 이 문제가 왜 완전탐색 파트로 분류되어 있는지 궁금합니다. 일반적인 BFS 문제들과 다르게 모든 경우에 대해 BFS 탐색을 하고, 매 탐색마다 원복을 해줘야 하기 때문에 완전탐색 문제로 분류된 것인가요?
-
해결됨코딩테스트 [ ALL IN ONE ]
시간복잡도 Big-O 표기법에 대해서
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요!질문이 2가지 있습니다.[기본]시간복잡도 Time Complexity 강의 @4:20부분에서 1/ "이처럼 입력값 n에 대한 실행시간 함수가 있다면, 최고차항의 계수만을 표기하여 Big-O(n)을 표기할 수 있다."이렇게 설명을 하셨는데, 제가 이해하기로는 계수는 숫자와 문자의 곱에서 '숫자'를 의미하는걸로 알고 있어서요!예를 들면, 3n이라고 한다면 숫자인 3이 계수라고 알고있습니다.그러면 Big-O표기법은 '최고차항의 계수만을 표기'하는게 아니라 '최고차항'을 표기하는걸까요? 2/ @4:27부분에O(n!) > O(2^n) > O(n^2)..이렇게 시간복잡도가 높은것부터 그래프로 보여주실때 '차수가 높은 순서는 다음과 같다'라고 말씀하셨는데제가 이해하기로는 '차수'는 문자가 곱해진 횟수, 즉 n^2면 2차, n^3이면 3차. 이런게 차수인걸로 알고있습니다.그렇다면 n!이 2^n보다 차수가 더 높고, 2^n이 n^2보다 차수가 더 높은걸로 이해하면 될까요? 감사합니다!
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-K 백조 문제 메모리 초과 질문
http://boj.kr/54cbfbf55f6946edbeb3beb93d88f6bc안녕하세요 강사님! 여태 틀린 문제 다시 한번 풀어보고 있습니다. 백조 문제에서 메모리 초과가 나서 제가 생각하기에 의심되는 부분들 (queue에 중복 좌표를 여러번 푸시하는 경우)을 없애고도 메모리 초과가 나길래 어느 부분이 문제일지 한번 봐주시면 감사하겠습니다..로직 자체는 강사님 코드와 거의 비슷하게 떠올린 것 같은데 2차원 배열을 너무 많이 쓴 것이 문제인지.. 특정 케이스에서 queue가 너무 커지는 것이 문제일지 잘 감이 안 옵니다 ㅜ
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
5-X 시간초과 질문입니다!
안녕하세요!extendCCTV함수 부분에서 강의 코드와 살짝 다르게 모든 while문을 다음과 같이 작성했더니 시간 초과가 발생합니다! 내부의 조건문을 이렇게 작성했을 때 시간초과가 발생하는 이유가 궁금합니다..!while(true) { int ny = y + dy[dir]; int nx = x + dx[dir]; if(ny<0 || ny>=n || nx<0 || nx>=m || a[ny][nx]==6) break; if(a[ny][nx] == 0) { a[ny][nx] = 8; _change.push_back({ny, nx}); } y = ny; x = nx; }
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
4-A 코드 링크를 잘못 올려서 다시 올립니다.
http://boj.kr/44c6637eb356484a8f22139b8d4f217e 링크를 잘못올려서 다시 올립니다ㅜㅜ답안에는 map을 이용해서 풀었는데 이 방법으로해도 크게 문제없는것 같은데 왜 틀렸다고 나오는지 알고 싶습니다! 감사합니다
-
미해결입문자를 위한 코딩테스트 핵심(이론과 문제풀이) [Python]
안녕하세요 강사님 !
자바 코테 이어서 파이썬 강의까지 듣고있습니다 :)혹시 출처 남기고 블로그 및 깃에 올려서 될까요!
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-A 문제 이해
만약에 m이 3이고 치킨집이 5개면5C1인 경우 5C2, 5C3인 경우의 조합들을 다 구해서각각의 경우에 대한 치킨 거리를 계산한 후 최종적인 최솟값을 구하는 문제인 줄 알았습니다.예시)5C1 이면 m=3이니까 {0} -> 각 집들의 치킨 거리를 구한 후 더한 값{1} 위와 같음{2} 위와 같음{3} 위와 같음{4} 위와 같음5C2 이면{0,1}{0,2}{0,3}...이렇게 전부의 경우에 대한 거리 값을 구한 후 최소를 찾는 건 줄 알았는데위의 방법이 아니라 그냥 m=3이면5C3의 조합들 중에서 최소가 나오는 경우를 구하면 되는 건가요?? 제가 문제를 잘 이해를 못하는 것 같아서 질문 드립니다!!
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1 - M 3986 deque 시간 초과
안녕하세요 큰돌님1 - M 3986 좋은 단어 문제를 deque 를 이용해deque 이 비거나 하나만 남을 때까지 반복하면서back 과 다음 back 이 같은 경우 두 개의 back 을 모두제거하고 아닌 경우 첫번째 꺼낸 back 을 다시 front로push 하는 방식으로 풀고자 했습니다!! 제 생각으로는 deque 의 최대 반복 되는 수가 처음 문자열의 크기를 넘지 않을 것 같아서 시간초과에 문제 없을 줄 알았는데 시간 초과가 나옵니다 어떠한 이유에서 시간초과가 나오게 되었는지 여쭤보고자 질문 드립니다!! 감사합니다! 코드https://www.acmicpc.net/source/64697159
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
4-A 왜 틀렸는지 모르겠습니다
http://boj.kr/6fd1c581d7154d70a7523d1151aec403제가 작성한 코드입니다. map을 이용하지 않고 풀긴했지만 답안과 크게 다른게 없다고생각하는데 틀렸다고 나옵니다왜 틀렸는지 알고 싶습니다! 감사합니다!
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
안녕하세요 케이스 질문 처음 올려드립니다.
9996번 문제입니다#include <iostream> #include <vector> using namespace std; int N; string strPattern; vector<string> v; string input; int main() { cin >> N; cin >> strPattern; string left = ""; string right = ""; int index = 0; while (strPattern[index] != '*') { left += strPattern[index]; ++index; } index = strPattern.find('*') + 1; right = strPattern.erase(0, index); for (int i = 0; i < N; ++i) { cin >> input; v.push_back(input); } for (int i = 0; i < v.size(); ++i) { // +ADD if (left.size() + right.size() > v[i].size()) { cout << "NE" << endl; continue; } // string leftcopy = v[i]; string rightcopy = v[i]; if (left.size() <= leftcopy.size()) leftcopy = leftcopy.erase(left.size(), leftcopy.size() - 1); if (right.size() <= rightcopy.size()) rightcopy = rightcopy.erase(0, rightcopy.size() - right.size()); if (leftcopy == left && rightcopy == right) cout << "DA" << '\n'; else cout << "NE" << '\n'; } return 0; }코드를 이렇게 작성하고 저쪽 주석 +ADD 부분이 없을때는 65% 에서 Fail 뜨고 저 ADD 부분을 추가했을때 성공이 떴습니다1a*aaaaaa일때 정답이 어떻게 되는지 설명 부탁드립니다!제가 생각했을때는 DA 같습니다!
-
해결됨it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
4번 문제만 계속 틀립니다.
안녕하세요 선생님!항상 좋은 강의 감사히 잘 듣고 있습니다.이번 문제에서 제 코드로는 4번 문제가 계속 틀렸다고 나와서 선생님 코드 그대로 따라했는데도 4번 문제가 틀렸다고 되더라구요... 채점기 output이 잘못된건지 제가 짠 코드가 잘못된건지 확인 부탁드립니다...! 제 코드#include <stdio.h> #include <cmath> int n; int a[11]; int b[100]; int c[1025]; int sum; int idx = 1; void DFS(int x) { if(x == n+1) { sum = 0; for(int i = 1; i <= n; i++) if(b[a[i]] == 1) sum += a[i]; c[idx++] = sum; } else { b[a[x]] = 1; DFS(x+1); b[a[x]] = 0; DFS(x+1); } } int main() { scanf("%d", &n); for(int i = 1; i <= n; i++) scanf("%d", &a[i]); DFS(1); for(int i = 1; i <= pow(2, n); i++) { int temp = c[i]; if(temp == 0) continue; for(int j = 1; j <= pow(2, n); j++) { if(i == j) continue; if(temp == c[j]) { printf("YES"); return 0; } } } printf("NO"); return 0; }선생님 코드#include <stdio.h> int n; int a[11]; int total = 0; bool flag = false; void DFS(int x, int sum) { if(sum > (total/2)) return; if(flag) return; if(x == n+1) { if(sum == (total/2)) { flag = true; } } else { DFS(x+1, sum+a[x]); DFS(x+1, sum); } } int main() { scanf("%d", &n); for(int i = 1; i <= n; i++) { scanf("%d", &a[i]); total += a[i]; } DFS(1, 0); if(flag) printf("YES"); else printf("NO"); return 0; }
-
해결됨SQL 코딩테스트를 위한 첫 걸음
깃헙 데스크탑, MYSQL 워크벤치 연동
설명이 너무 생략되어 있어서 이해가 안됩니다.깃헙을 처음 써보는데중간에 생략한 부분이 많네요.윈도우 환경에서 다시 상세히 설명 부탁드립니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-H 질문입니다
제가 짠 코드가 예제출력은 맞게 나오는데 제출했을 때 틀렸다고 나옵니다.강의 보기 전에 짠거라서 강사님과는 다른 방향으로 풀었지만 어디서 잘못됐는지 궁금합니다. #include <iostream> #include <string> using namespace std; string s; int mo[21]; int cnt; int main(){ while(true){ cin >> s; cnt=0; if(s == "end") break; //s가 높은 품질이 아니면 //1번째 조건 if(s.find('a') && s.find('e') && s.find('i') && s.find('o') && s.find('u') > 20){ cnt += 1; } //2번째 조건 fill(&mo[0], &mo[0]+21, 0); for(int i=0; i<s.size(); i++){ if(s[i] == 'a' || s[i] == 'e' || s[i] == 'i' || s[i] == 'o' || s[i] == 'u'){ mo[i] = 1; } else{ mo[i] = 2; } } if(s.size()>=3){ for(int i=0; i<s.size()-2; i++){ if(mo[i] == mo[i+1] && mo[i+1] == mo[i+2]){ cnt+=1; } } } //3번째 조건 for(int i=0; i<s.size(); i++){ if((s[i] == s[i+1]) && s[i] != 'e' && s[i] != 'o'){ cnt += 1; } } //cnt가 1이라도 있으면 낮은 품질 if(cnt>=1){ cout << "<" << s << "> is not acceptable." << '\n'; } //그렇지 않으면 높은 품질 else{ cout << "<" << s << "> is acceptable." << '\n'; } } return 0; }
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-D 반례 부탁드립니다..
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 예제는 통과되었는데 틀려서 어디가 틀렸는지 계속 찾아보았지만 못 찾아 질문 남깁니다.http://boj.kr/1e440eca5c9e4ac69c978a0f9289603b
-
미해결[입문편] 안드로이드를 위한 코틀린(Kotlin) 문법
for 문 밖에서의 list 타입의 차이점
// 조건문// if else// whenfun main() { val testlist = mutableMapOf<String, Int>() testlist["a"] = 10 testlist["b"] = 50 testlist["c"] = 60 testlist["d"] = 100 testlist["e"] = 70 testlist["f"] = 30 // 50점이상 구하기 println(testlist.keys::class.java.simpleName) for (i in testlist){ println(i.key::class.java.simpleName) } } 위 코드처럼 작성 후 타입을 비교하였을 때 두가지의 타입이 다르게 나와있는데 그 이유를 모르겠습니다
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-C 런타임 에러(Segfault)
안녕하십니까 강사님. 항상 강의 잘 듣고 있습니다. 해당 회차의 강의를 듣기 전에 개인적으로 문제를 풀어보았으나, Segfault 런타임 에러가 발생하였습니다. 그 이유를 알고싶어 질문드립니다.#include <bits/stdc++.h> using namespace std; int n, h, nx, ny, max_h, cnt; int dx[] = { 0, 1, 0, -1 }; int dy[] = { 1, 0 ,-1, 0 }; int a[101][101]; bool visited[101][101]; vector<int> ret; void DFS(int x, int y) { visited[x][y] = true; for (int i = 0; i < 4; i++) { nx = x + dx[i]; ny = y + dy[i]; if (nx < 0 || nx >= n || ny < 0 || ny >= n) continue; if (a[nx][ny] > 0 && !visited[nx][ny]) { DFS(nx, ny); } } return; } int main() { ios_base::sync_with_stdio; cin.tie(NULL); cout.tie(NULL); // 지도 채우기 cin >> n; fill(&a[0][0], &a[0][0] + 101 * 101, 0); for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { cin >> a[i][j]; } } max_h = *max_element(&a[0][0], &a[0][0] + 101 * 101); for (int i = 1; i < max_h; i++) { fill(&visited[0][0], &visited[0][0] + 101 * 101, false); cnt = 0; // a의 전체 높이를 1씩 내리기 for (int j = 0; j < n; j++) { for (int k = 0; k < n; k++) { a[j][k]--; } } // 연산 for (int j = 0; j < n; j++) { for (int k = 0; k < n; k++) { if (a[j][k] > 0 && !visited[j][k]) { DFS(j, k); cnt++; } } } ret.push_back(cnt); } // 결과 출력 cout << *max_element(ret.begin(), ret.end()) << "\n"; }
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
알고리즘 교안 p67 질문이 있습니다
int main() { fill(&a[0], &a[10], 100); for(int i = 0; i < 10; i++){ cout << a[i] << " "; } cout << '\n'; fill(&b[0][0], &b[9][10], 2); for(int i = 0; i < 10; i++){ for(int j = 0; j < 10; j++){ cout << b[i][j] << " "; } cout << '\n'; } return 0;이 코드에서 fill(&a[0], &a[10], 100); 이 부분과 교안에 설명된 부분을 보면 알 수 있듯이 마지막에 쓰이는 인덱스는 포함되지 않아 실제로 a[9]까지 초기화가 가능한 것으로 이해를 하였습니다 그런데 왜 밑에 2차배열을 초기화하는 fill(&b[0][0], &b[9][10], 2);에서는 b[10][10]이 아닌 b[9][10]인지 궁금합니다. 또 b[9][9]로 수정하여 실행해본 결과가b[9][10]으로 수행한 결과와 같은 이유도 궁금합니다! 긴 질문 죄송합니다!
-
미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
채점 프로그램 관련 질문
안녕하세요 !채점 프로그램 관련 문의가 있어서 글을 작성하게 되었습니다.전에 풀었던 문제들을 다시 풀어보는 과정에서 전에 100점이 나왔던 문제들을 다시 한번 채점 프로그램을 돌리니 wrong_answer이라고 나와서(기존의 AA파일을 돌림) 답안 소스로 테스트를 해보았는데 똑같이 wrong_answer 라고 계속 나오는 문제가 발생해서 글을 작성하게 되었습니다.감사합니다.