묻고 답해요
169만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
인접 행렬 다른 풀이
#include <bits/stdc++.h>using namespace std;bool V[10][10];bool visited[10];void dfs(int start) { if (visited[start]) return; visited[start] = true; cout << start << ' '; for (int dir = 0; dir < 10; dir++) { if (V[start][dir] && !visited[dir]) { visited[dir] = true; dfs(dir); } }}int main() { cin.tie(0)->sync_with_stdio(0); V[1][2] = true; V[2][1] = true; V[1][3] = true; V[3][1] = true; V[3][4] = true; V[4][3] = true; for (int i = 0; i < 10; i++) { dfs(i); cout << '\n'; } return 0;}이렇게 짜도 되나요?
-
미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
질문있습니다.
입력을 받을 때마다 조건문 돌려서 판별할 생각을 못하고 배열로 다 받아서 했더니 문제를 더 어렵게 풀어버렸습니다. 음.. 강의 코드 보면서 제가 푼 문제가 이렇게 쉽게 풀릴 수 있는 문제구나라고 알게 되었습니다.혹시 제 코드에 문제점이 있는지 확인해주실 수 있으신가요? 채점 파일에서는 다 맞았다 뜨는데 혹시 몰라서 질문 드립니다. 좋은 강의 항상 감사드립니다. 강의 보면서 열심히 공부하겠습니다.#include <iostream> #include <stdio.h> #include <string> #include <fstream> #include <vector> using namespace std; int main() { ios_base::sync_with_stdio(false); int n; cin >> n; vector<int> table(n); for (int i = 0; i < n; i++) cin >> table[i]; int max = 1; int cnt = 1; int idx = 0; int prev = table[0]; int count = 1; while (idx + count < table.size()) { if (table[idx + count] >= prev) { cnt++; } else { idx = idx + count; cnt = 1; count = 0; } prev = table[idx + count]; count++; if (cnt > max) max = cnt; } cout << max << "\n"; return 0; }
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
5-J 질문입니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.http://boj.kr/604e8201aae24300845cde414a1f4416http://boj.kr/604e8201aae24300845cde414a1f4416선생님 강의보고 생각하면서 유사하게 만들어봤는데 틑렸다고 나옵니다 ㅠㅠ 정답 코드랑 비교해도 어떤 부분이 틀렸는지 확인이 안되서 ㅠㅠ 질문 남깁니다. 감사합니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-D 재질문
선생님 답변 감사합니다답변 확인후에 BFS로 수정해보았는데여전히 시간초과가 발생이 되네요..제가 보기엔 효율을 좋게 했다고 생각하는데왜 새로운 코드에서도 시간초과가 계속 발생하는지 답변 부탁드립니다...모르겠어요...gpt는 선생님 코드와 제 코드 비교했을때 시간복잡도 측면은 별차이 없다고 하는데 말이죠.. http://boj.kr/9dbda62580614b358e26e41ec3073620
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-p 순서 혼란
x,y 순서가 혼란이 옵니다.이 문제에서처럼 pair에 (first,second)를 넣는 상황이라던지 ny, nx의 범위를 따질때 ny>=n인지 ny>=m인지 혼란이 와서 정리를 하려고 합니다.큰돌님께서는 (y,x) 순서를 기반으로 dfs bfs를 만드시는데 main이나 solve에서는 i,j 순서로(n,m 순서로) 입력받고 처리하시는거 같아 문의드립니다.dfs bfs 이외에 코드에서는 다 반대로 i,j를 x,y 순서로 받는 방식으로 맵이나 리스트를 생성 한 후 탐색만 y,x 방향으로 하시는건가요?n,m이 같은경우는 상관없을거같은데 이와같이 n,m이 다른경우 (x,y),(i,j),(n,m),(first,second) 등등 순서에 있어서 자주 실수를 해서 질문드립니다.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
7-M 질문 있습니다.
안녕하세요 큰돌님, 강의 잘 듣고 있습니다.7-M의 시간복잡도 계산에 관해 질문드리고 싶습니다.큰돌님은 본 문제를 풀 때 시간복잡도를 어떻게 계산했는지 궁금합니다.특히 각 칸에서 양분을 줄 때, 나무의 개수가 명확하지 않은 상태해서 sort를 해야하는데, 이때 sort의 시간복잡도인 O(NlogN)에서 N을 어떻게 설정하셨는지 궁금합니다.감사합니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-D 메모리초과 질문
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.dfs에서 2차원 벡터를 계속 복사하는 방식을사용했는데 메모리 초과가 떴습니다벡터를 계속 복사해서 그런걸까요?아님 무엇때문에 메모리 초과가 난걸까요?http://boj.kr/10f3e6d1d9744b5286cd33479677c430
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
시간초과가 나와서 질문드립니다.
강사님의 영상은 문제를 풀고 난 후, 잘 안 풀릴 때 보는게 좋은 것 같아 저만의 방식으로 푼 코드입니다.시간초과가 나왔는데, 어디서 시간을 잡아먹는건지 감이 잡히지 않아서 글 올립니다.포켓몬이 알파벳으로 주어지는지, 숫자로 주어지는지에 대한 판별은 string으로 값을 받고 0번째 인덱스의 값이 65와 같거나 크고 90과 같거나 작으면 알파벳이라 판단. 아닐경우 숫자로 판단하여 출력하게 하였습니다.아래가 제 코드입니다.http://boj.kr/93f1ddafe1484c2b892e25729c745365
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-K 다른 풀이
저는 deque를 사용해서 풀었는데 이 풀이 방법이 괜찮나요??#include <bits/stdc++.h>using namespace std;string name;int cnt[26];deque<char> answer;int main() { cin.tie(0)->sync_with_stdio(0); cin >> name; for (int i = 0; i < name.size(); i++) { cnt[name[i] - 'A']++; } int check = 0; for (int i = 0; i < 26; i++) { if (cnt[i] % 2 == 1) { check++; answer.push_back('A' + i); cnt[i]--; } if (check > 1) { cout << "I\'m Sorry Hansoo"; return 0; } } for (int i = 25; i >= 0; i--) { while (cnt[i] > 0) { answer.push_back('A' + i); answer.push_front('A' + i); cnt[i] -= 2; } } while (!answer.empty()) { cout << answer.front(); answer.pop_front(); } return 0;}
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-E 질문있습니다
http://boj.kr/5a173f75eb094fd0a5ffef8f9387af5e다음과 같이 코드를 작성했습니다.백준에서 56%정도 됬을때 틀렸다고 나오는데제가 생각한 틀린 이유로는무조건 ()를 추가한다. 전체가 압축이 가능한 경우에도전체를 검사하고 4등분을 해야하는데 4등분한 것부터 검사한다.인거 같습니다. 혹시 이 이유로 틀린게 맞을까요??저기서 조금 수정해서 답이 나오려면 어떤부분을 어떻게 고쳐야 할까요??
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-H질문
bool is_vowel(int idx) { return (idx == 'a' || idx == 'e' || idx == 'i' || idx == 'o' || idx == 'u'); }bool is_vowel(int idx) { if (idx == 'a' || idx == 'e' || idx == 'i' || idx == 'o' || idx == 'u') return true; else false;}이 두 코드가 같다고 생각이 드는데 왜 결과값이 다르게 나올까요??
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-I 질문있습니다.
http://boj.kr/5c6791ecb33241cab42be762031958c3안녕하세요 큰돌님이번 문제는 강의를 봐도 잘 이해가 되지 않아서 핵심으로 짚어준 부분을 참고하여 제가 로직을 구현했는데, 어려움이 있어 질문드립니다.백준 문제에서 주어진 예제는 정답이 나오는데, 아래 링크의 질문 게시판에 있는 반례는 모두 틀리게 나옵니다.https://www.acmicpc.net/board/view/89304코드에 사용되는 변수는 다음과 같습니다.x = bfs로 방문하는 수빈이의 현재 위치t = 수빈이가 해당 위치에 도착하는 최단 시간bp = 해당 시간(t)에 동생의 현재 위치제가 생각해낸 방법은 다음과 같습니다.먼저 동생이 앞으로 가며 위치에 도달하는 시간을 brother[] 배열에 기록했습니다. 수빈이가 동생을 만날 수 있는 방법을 다음 두 가지로 분류했습니다. (1) 수빈이가 앞으로 가며 특정 위치에서 동생과 만난다.(2) 수빈이가 동생보다 먼저 앞으로 간 다음에, 왔다갔다 하며 동생을 기다린다. (이 때 홀수, 짝수 시간으로 동생과 만날 수 있는지 확인한다.)bfs를 단계 별로 구현하기 위해 5분 45초에 나오는 플루드 필(?)을 수빈이가 해당 위치에 도착하는 최단 시간(변수 t)로 구현하였습니다.+제 코드의 오류를 하나 발견하였는데 다음과 같습니다.예제 n = 18, k = 66 를 넣었을 때, 수빈이는 18 36 37 38 76 순으로 방문하고, 동생이 66, 67, 69, 72, 76 순으로 방문 했을 때 정답인 4초가 나오지만, 제 코드 상으로는 76을 최단 시간인 3초에 방문할 수 있으므로, 수빈이가 동생을 만나지 못한다고 판단하여 만날 수 있는 다음 지점을 답으로 출력합니다.위와 같은 오류를 어떤 논리로 잡아야 할지 아무리 생각해도 모르겠고, 강사님의 코드도 도저히 이해가 가지 않아 질문 드립니다. ㅠㅠ
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
동생이 도착한 시간 - 수빈이가 도착한 시간 이 짝수일 때
http://boj.kr/c287b933ed0442d4ba02329f7601b61b선생님, 안녕하세요.동생의 위치를 미리 구해놓고, 수빈이가 그 위치에 갈 수 있는지를 구하는 식으로 했습니다.bfs를 이용했고, bfs의 로직 안에 현재 수빈이가 동생보다 빨리 방문했을 때를 처리하는 로직을 넣었는데요. 강의에서 설명해주셨던 것처럼, +1 -1을 하면 제자리로 돌아올 수 있고, 이때 2초가 걸리기 때문에 시간차가 반드시 짝수여야만 수빈이가 동생을 찾을 수 있기 때문에,동생이 오는 시간 - 현재 수빈이가 오는 데 걸린 시간 이 짝수 일때, 동생이 오는 시간을 최소값으로 넣는 로직을 넣었습니다.그런데 답이 틀렸다고 나와서, 1)왜그런건지? 2)visited배열을 2차원으로 한거랑 무슨 차이가 있는지 궁금합니다.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
동생이 도착한 시간 - 수빈이가 도착한 시간 이 짝수일 때
http://boj.kr/c287b933ed0442d4ba02329f7601b61b선생님, 안녕하세요.동생의 위치를 미리 구해놓고, 수빈이가 그 위치에 갈 수 있는지를 구하는 식으로 했습니다.bfs를 이용했고, bfs의 로직 안에 현재 수빈이가 동생보다 빨리 방문했을 때를 처리하는 로직을 넣었는데요. 강의에서 설명해주셨던 것처럼, +1 -1을 하면 제자리로 돌아올 수 있고, 이때 2초가 걸리기 때문에 시간차가 반드시 짝수여야만 수빈이가 동생을 찾을 수 있기 때문에,동생이 오는 시간 - 현재 수빈이가 오는 데 걸린 시간 이 짝수 일때, 동생이 오는 시간을 최소값으로 넣는 로직을 넣었습니다.그런데 답이 틀렸다고 나와서, 1)왜그런건지? 2)visited배열을 2차원으로 한거랑 무슨 차이가 있는지 궁금합니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-D 질문있습니다!
문제에서 주어지는 조건은 맨 왼쪽 아래가 (0,0) 지점이라고 했는데 2차원 배열로 생각해보면 맨 왼쪽 위가 (0,0) 입니다. 강사님의 코드를 출력해보면 이런식으로 나오는데 문제에 있는 그림이랑 비교해보면 위치가 반대입니다. 이렇게 나오는 이유가 위에서 언급한 (0,0)의 기준이 맨 밑에서 왼쪽인지, 맨 위에서 왼쪽인지의 차이인듯 한데 상관없는건가요..?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
질문입니다
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.안녕하세요.다음은 제가 처음에 푼 코드입니다.#include <bits/stdc++.h>using namespace std;int N;string S,temp1,temp2,Q;int main(){ cin>>N; cin>>S; temp1 = S.begin(); temp2 = S.end(); for(int i = 0 ; i<N ; i++){ cin >> Q; if(Q.begin() == temp1 && Q.end() == temp2){ cout<<"DA\n"; } else cout<<"NE\n"; }}저는 앞뒤글자들을 temp1,temp2에 저장해두고 새로 입력 받은 string또한 앞과 뒤를 비교하는 코드를 작성했습니다. 선생님 강의를 듣고 처음 한글자가 아닌 *을 기준으로 문제를 풀어야한다는 것을 알게됬습니다. 그런데 위 코드에서 문법적인 오류가 있는 것 같은데 문법적으로만 왜 오류인지 궁금합니다.감사합니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
질문있습니다!
안녕하세요! 강의와는 다른 방식의 로직으로 풀어보았습니다.v 라는 방문처리 할 수있는 배열을 만들었습니다. 재료 배열을 순회하면서 M에서 해당 값을 뺏을 때 배열에 그 값이 있다면 입력값의 위치와 M-해당값의 위치를 방문 처리 해주면서 결과값을 count 하였습니다. Test case는 맞다고 뜨는데 제출하면 틀렸다고 뜨네요ㅜㅜ문제에 맞지 않는 잘못된 코드 일까요...?http://boj.kr/eb03bcf5031743d9a74c8465cb6a703c
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-I 질문입니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.80287934번 소스 코드 (acmicpc.net)큰돌님의 코드와 달리atoi함수로 벡터에 추가한후 정렬하였습니다.정답은 같게 나오는데 틀린 이유를 알고싶습니다ㅠ
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
9996번 런타임에러
#include <bits/stdc++.h> using namespace std; vector<string> split(string input,string delimiter){ vector<string> ret; int delimiterPosition; while((delimiterPosition=input.find(delimiter))!=string::npos){ ret.push_back(input.substr(0,delimiterPosition)); input.erase(0,delimiterPosition+delimiter.length()); } ret.push_back(input); return ret; } int main(){ int N; cin>>N; fflush(stdin); string pattern; getline(cin,pattern); vector<string> splited_strings=split(pattern,"*"); string first=splited_strings[0],last=splited_strings[1]; string input[N]; for(int i=0;i<N;i++) cin>>input[i]; for(int i=0;i<N;i++){ // 접두사 if(first!=input[i].substr(0,first.size())) { // 없으면 cout<<"NE\n"; continue; } else input[i].erase(0,first.size()); // 있으면 // 접미사 if(input[i].find(last)==string::npos) { // 없으면 cout<<"NE\n"; continue; } else{ // 있으면 if(last==input[i].substr(input[i].size()-last.size())) cout<<"DA\n"; else cout<<"NE\n"; } } return 0; }어디서 런타임에러를 유발하는 지 모르겠습니다.
-
해결됨객체지향 개념에 바탕을 둔 Modern C++프로그래밍
공지
강좌 운영이나 강의 내용에 관해 궁금한 점이 있으면 자유롭게 나누어주세요.교수자, 수강생 누구나 글쓰기와 댓글 쓰기가 가능합니다.