묻고 답해요
169만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-C 에서 배열을 초기화하면 a값이 0이 되는 이유
안녕하세요. 1-C문제에서 a, b, c의 값을 입력 받은 후, 배열을 0으로 초기화하면 왜 a의 값만 0으로 바뀌는건지 궁금합니다. cin >> a >> b >> c; cout << " a :" << a << " b : " << b << " c : " << c << '\n'; arr[104] = {}; cout << " a :" << a << " b : " << b << " c : " << c << '\n';감사합니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-e 재귀로 푸는법
http://boj.kr/23616730eac14d368933bf527d72cafd선생님 안녕하세요 제가 재귀로 푸는 함수를 짜보았습니다. 일단 뮤탈리스크가 3개가 있다는 가정하에 짠 로직인데(나중에 다른 뮤탈리스크 개수가 입력되는 로직을 추가할 예정입니다) 코드가 잘 실행이 되지 않아서 질문드립니다! 감사합니다!
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-h 반례가 궁금합니다..
큰돌님 코드가 더 간결하고 깔끔하지만 제가 처음에 짰던 코드가 왜 틀렸는지 궁금합니다. 테스트케이스는 잘 나와서요.. 한번봐주시며누감사하겠습니다@@ http://boj.kr/1226e9fbc2ea4ec9b509842b79f41ecf
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-D 반례 질문
선생님 제가 정말 많은 반례를 넣어봤는데 다 실행이 되지만 백준에서 실행시켜보면 2%에서 실패됩니다. 반례 찾아주시면 정말 감사하겠습니다!http://boj.kr/06c2448042e64476b47b0a2dd5c7eeb0
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
백준 1012 유기농 배추 문제
안녕하세요 큰돌님,제가 작성한 코드가 큰돌님의 예시 답안 코드와 로직이 거의 비슷하다고 느끼는데 제 코드는 백준에서 패스가 안되서 한번 의견을 구하고자 합니다.혹시 왜 accept이 안되는지 이유가 보이시면 답변 부탁드립니다~! #include<bits/stdc++.h> using namespace std; int tc, n, m, k, a, b, ny, nx, cnt; int cabbage[51][51], visited[51][51]; const int dy[4] = {-1, 0, 1, 0}; const int dx[4] = {0, 1, 0, -1}; void dfs(int y, int x){ visited[y][x] = 1; for(int i=0; i<4; i++){ ny = y + dy[i]; nx = x + dx[i]; if(ny < 0 || ny >= n || nx < 0 || nx >= m) continue; if(visited[ny][nx] == 1) continue; if(cabbage[ny][nx] == 0) continue; dfs(ny, nx); } return; } int main(){ cin.tie(NULL); cout.tie(NULL); //tc 개수 받기 cin >> tc; for(int e=0; e<tc; e++){ // n, m, k 받기 cin >> n >> m >> k; // 초기화 cnt = 0; fill(&cabbage[0][0], &cabbage[n-1][m], 0); fill(&visited[0][0], &visited[n-1][m], 0); // 배추의 위치 입력 for(int i =0; i<k; i++){ cin >> a >> b; cabbage[b][a] = 1; } for(int i=0; i<n; i++){ for(int j=0; j<m; j++){ if(cabbage[i][j] == 1 && visited[i][j]==0){ dfs(i,j); cnt++; } } } cout << cnt << "\n"; } return 0; }
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-F 질문있습니다.
안녕하세요 큰돌님bfs로 최단거리를 탐색하여 문제를 풀어 보았습니다.q에서 뺄때, 방문처리를 할때는 맞는데,https://www.acmicpc.net/source/61392099q에 넣을때 방문처리를 할때는 틀립니다.https://www.acmicpc.net/source/61392143최단거리라 q에 넣을때 바로 방문처리를 해줘서 더 높은 cnt일때 방문한 값이 다시 큐에 들어갈일이 없도록 하는것이 맞는것 같은데, 어떤 경우에서 틀린지 모르겠습니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-H 질문합니다
안녕하세요 큰돌님!벡터에 trace를 저장하여 k에 도달하면 trace를 출력하는 방식으로 풀었습니다.벡터의 push_back()은 시간 복잡도 O(1)으로 알고 있습니다.때문에 왜 시간 초과가 나는지 궁금합니다!https://www.acmicpc.net/source/61394001
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
6-L 시간복잡도 질문
http://boj.kr/75cc76adfce24cbd88595ea4ea999a5d안녕하세요 강사님 ㅎㅎ해당 강의 초반에 무식하게 풀었을 때의 시간복잡도가 (n * n-1 / 2)*n 이라고 설명하시는데 제가 혼자 문제풀 때는 다르게 계산을 했거든요...저는 연속된 수들의 곱이니까 이중 for문으로 for(int i=0; i<n; i++){ for(int j=i+1; j<n; j++){식의 연산이 필요하다 생각했고 여기다가 백트래킹으로 == 0일때 break 정도하는 조건까지만 넣었습니다. 이러면 등차수열의 합 정도의 시간복잡도가 되니 O(n^2)이고 n의 최대범위가 10000 -> 제곱은 1억 -> 1억에서 천만까지는 해볼만하다고 알려주셔서 위 생각의 흐름대로 문제를 풀었습니다. 혹시 제가 시간복잡도 계산을 잘못한건가요..?
-
미해결홍정모의 따라하며 배우는 C++
fixed 관련 질문이 있습니다
#include <iostream> #include <iomanip> using namespace std; int main() { float x = 79; cout << showpoint << fixed << x << endl; cout << noshowpoint << x << endl; }showpoint를 쓰다가 noshowpoint 조정자를 쓰면 리셋돼서 소수점이 다시 출력되지 않는 것처럼 fixed도 리셋할 수 있는 방법이 있나요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
재귀함수로 순열구현하기 질문 있습니다 !
재귀함수로 순열을 구현해서 돌려보면312 다음에 321이 나와야 맞는데321 뒤에 312 가 나오는 현상이 있습니다. 전에 선생님께서 주신 코드도 같은 현상이 나오는데 어떻게 해야할까요 ㅠㅠ
-
해결됨홍정모의 따라하며 배우는 C++
width()에 관련해서 질문 있습니다!
#include <iostream> #include <iomanip> using namespace std; int main() { int widthValue{ 4 }; char sentence[10]; cout << "Enter a sentence:\n"; cin.width(5); while (cin >> sentence) { cout.width(4); cout.fill('0'); cout << sentence << "\n"; cin.width(5); } }이 코드를 실행하면 공백 없이 sentence에 입력값을 넣었을 때는 출력값이 이해가 되는데 공백 포함해서 sentence에 입력하면 출력값이 이해가 안 돼요...! cout.width(4);가 4개를 출력하는데 sentence 배열에서 white space를 만나면 더 이상 출력을 안 하는 건가요? 왜 그런 건가요?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
8-I 나무심기 조그마한 의문이 있어 질문드립니다.
안녕하세요!8-I 나무심기 해설 코드를 보다 작은 의문점이 생겨서 질문드립니다!바로 중복된 좌표에 나무를 심는 경우인데요. 나무의 개수를 저장하는 부분인 update(treeCnt, num, 1)에서 좌표가 중복되는 경우에는 1이 아니라 나무의 개수로 갱신되어야 하지 않나하는 궁금증이 생겨버렸습니다. 중복되는 경우, 나무를 뽑고 다시 심는 개념으로 이해해야 하는 걸까요?제가 아직 펜윅트리를 완벽하게 익힌 것이 아니라...많이 헷갈립니다!#include<iostream> #include<vector> using namespace std; typedef long long ll; int N; vector<ll> t; vector<ll> tcnt; vector<ll> treeSum; vector<ll> treeCnt; ll answer = 0; void update(vector<ll> &tree, int i, int diff) { while(i < tree.size()) { tree[i] += diff; i += (i & -i); } } ll sum(vector<ll> &tree, int i) { ll r = 0; while(i > 0) { r += tree[i]; i -= (i & -i); } return r; } int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); cin >> N; t = vector<ll>(N + 1, 0); tcnt = vector<ll>(200004, 0); treeSum = vector<ll>(200004, 0); treeCnt = vector<ll>(200004, 0); for(int i = 1; i <= N; i++) { ll num; cin >> num; num++; t[i] = num; tcnt[num]++; if (i != 1) { ll l, r; ll value; l = sum(treeCnt, t[i] - 1) * t[i] - sum(treeSum, t[i] - 1); r = (sum(treeSum, 200004) - sum(treeSum, t[i])) - (sum(treeCnt, 200004) - sum(treeCnt, t[i])) * t[i]; value = l + r; if (answer == 0) answer = 1; answer = ((answer % 1000000007) * (value % 1000000007)) % 1000000007; } update(treeSum, num, num); update(treeCnt, num, 1); } cout << answer << "\n"; return 0; }
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-E string() 함수? 질문
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.멘토님 안녕하십니까?string()이게 생소해서 질문 드립니다.아래는 멘토님이 짜신 정답 코드 일부인데요string quard(int y, int x, int size){ if(size == 1) return string(1, a[y][x]); char b = a[y][x]; string ret = ""; for(int i = y; i < y + size; i++){ for(int j = x; j < x + size; j++){ if(b != a[i][j]){ ret += '('; ret += quard(y, x, size / 2); ret += quard(y, x + size / 2, size / 2); ret += quard(y + size / 2, x, size / 2); ret += quard(y + size / 2, x + size / 2, size / 2); ret += ')'; return ret; } } } return string(1, a[y][x]); } 2번째 줄과 마지막 줄에 string()를 써서1또는 0을 return한다고 강의에서 말씀하셨는데,string이 함수로 쓴다는건 처음알아서 생소해서 그런지 이해가 안갑니다.부가 설명을 해주실 수 있을까요? 또, 구글링으로 "c++ string()"정도로만 검색해도 자료가 잘 안나오던데, 제가 직접 찾아보려면 msdn? 어디서 찾아보면 좋을 지 조언 받을 수 있을까요?
-
해결됨홍정모의 따라하며 배우는 C++
cin.ignore() 관련해서 질문이 있습니다!
#include <iostream> using namespace std; int main() { char str1[50]; char str2[50]; char str3[50]; cin.get(str1, 50); cout << "1: " << str1 << endl; //cin.ignore(); 첫 번째 ignore cin.get(str2, 50, '\n'); cout << "2: " << str2 << endl; //cin.ignore(); 두 번째 ignore cin.get(str3, 50, '\n'); cout << "3: " << str3 << endl; }cin.ignore()이 첫 번째 자리에 있을 때는 str2가 매개변수인 get이 '\n'을 무시하고 입력을 받는데 두 번째 자리에 cin.ignore()이 있을 때는 '\n'을 무시하지 않고 즉시 호출되고 끝납니다. 왜 이렇게 되나요?두 번째 자리에만 ignore()이 있을 때 cin.get(str2,50,'\n') 함수가 버퍼에 남아있는 '\n'을 받은 후에도 버퍼에 계속 남아 있나요?<실행 결과> (첫 번째 자리의 ignore만 있을 때) wendy 1: wendy irene 2: irene 3:<실행 결과> (두 번째 자리의 ignore만 있을 때) wendy 1: wendy 2: 3:
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
split() 시간 초과
안녕하세요!split() 함수를 알려주신 로직대로 짰는데 시간 초과가 뜹니다.왜 그런건지 알 수 있을까요?http://boj.kr/7c52cc03df5842a487e17a1b18df29fb 항상 좋은 강의해주셔서 감사합니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-c
http://boj.kr/f62ec3c209234df98988f6cc6d37ddee 선생님 안녕하세요 위 코드가 제 코드입니다.다름이 아니라 제 코드는 예제입력 4 실행시 두번째 인구이동에서 (1,2)->(2,2)->(2,1)이 되어야하는데 코드가 (2,2)에서 dfs를 타고 (2,1)로 넘어가지를 않습니다. 혹시 이유를 알려주시면 정말 감사하겠습니다!!
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
6-G hi에 들어가는 초기값 질문
https://www.acmicpc.net/source/share/a683363852be4b508750d3f3382be974안녕하세요 강사님!강사님 풀이에서 X의 최댓값이 10억이니까 hi를 10억으로 놓는다는게 잘 이해가 가지 않습니다 ㅜ제가 갖고있는 의문점은 '게임을 10억판보다 더 해야 Z가 변하는 case도 있지 않을까?'인데 혹시 X의 최댓값이 10억인 경우 10억 판(승리) 안으로 z가 무조건 변한다는 것이 증명이 되는건가요?
-
미해결[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
섹션2에서 TextRPG 질문있습니다!
아래의 코드처럼main안에서 EnterLobby()를 호출하고그 밑에도 EnterLobby() 함수 내용이 작성되어있는데메인 상단에 void EnterLobby(); 를 또 해주는 이유는int num;int main(){ num = 10;}이런식으로 작성할때처럼 EnterLobby() 함수 공간을 미리 할당해주기 위해서 하는게 맞을까요?!void EnterLobby(); int main() { while (true) { //입력 //로직 //출력 } EnterLobby(); } void EnterLobby() { while (true) { cout << "-------------------------" << endl; cout << "로비에 입장했습니다!" << endl; cout << "-------------------------" << endl; //플레이어 직업 선택 SelectPlayer(); } }
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
질투심이 ~~일때
로 보는 건 그런가 보다 싶은데왜 질투심으로 보석을 나눠야 하는지 이해가 안 갑니다
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-D 불! 질문있습니다.
어느 부분에서 틀렸는지 잘 모르겠습니다.제가 놓친 부분이 강의에서 INF로 초기화하는 거라고 생각해서 보고 수정했었지만 똑같았습니다.그래서 원래 썼던 코드로 공유합니다.http://boj.kr/b143a73e068a49a9b8687b692265b563