묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
테스트케이스는 잘 되는데 제출하면 에러
#include <bits/stdc++.h> using namespace std; int N, M; // 세로 : N int arr[8][8]; int visited[8][8]; int dx[] = { 0, 1, 0, -1 }; int dy[] = { -1, 0, 1, 0 }; int t = 1; int curVirus = 2; int cnt = 0; int maxCnt = 0; void BFS(int _y, int _x) { queue<pair<int, int>> q; q.push({ _y, _x }); int firstX = _x; int firstY = _y; while (q.size()) { tie(_y, _x) = q.front(); visited[_y][_x] = t; arr[_y][_x] = curVirus; q.pop(); for (int i = 0; i < 4; ++i) { int nx = _x + dx[i]; int ny = _y + dy[i]; if (nx < 0 || ny < 0 || nx >= M || ny >= N) continue; if (arr[ny][nx] == 0 && visited[ny][nx] != t) q.push({ ny, nx }); } } arr[firstY][firstX] = curVirus + 1; } void ClearSpreadVirus() { for (int y = 0; y < N; ++y) { for (int x = 0; x < M; ++x) { if (arr[y][x] == curVirus) arr[y][x] = 0; } } } void SpreadVirus() { for (int y = 0; y < N; ++y) { for (int x = 0; x < M; ++x) { if (arr[y][x] != curVirus) continue; if (visited[y][x] == t) continue; BFS(y, x); } } } void CountZero() { for (int y = 0; y < N; ++y) { for (int x = 0; x < M; ++x) { if (arr[y][x] == 0) ++cnt; } } } int main() { ios::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); cin >> N >> M; for (int y = 0; y < N; ++y) { for (int x = 0; x < M; ++x) { cin >> arr[y][x]; } } // 1. 브루트포스로 벽을 세운다. for (int b1 = 0; b1 < N * M; ++b1) { if (arr[b1 / M][b1 % M] != 0) continue; arr[b1 / M][b1 % M] = 1; for (int b2 = b1 + 1; b2 < N * M - 1; ++b2) { if (arr[b2 / M][b2 % M] != 0) continue; arr[b2 / M][b2 % M] = 1; for (int b3 = b2 + 1; b3 < N * M - 2; ++b3) { if (arr[b3 / M][b3 % M] != 0) continue; arr[b3 / M][b3 % M] = 1; SpreadVirus(); CountZero(); ClearSpreadVirus(); ++curVirus; maxCnt = max(maxCnt, cnt); cnt = 0; ++t; arr[b3 / M][b3 % M] = 0; } arr[b2 / M][b2 % M] = 0; } arr[b1 / M][b1 % M] = 0; } cout << maxCnt; return 0; } 안녕하세요.예제케이스는 답이 잘 나오는데 제출하면 에러가 뜹니다.코드가 복잡해서 디버깅이 쉽지 않네요..어디가 문제일까요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
구현 문제
안녕하세요! 현재 구현 문제 강의까지 들었는데 좀 더 많은 구현 문제를 풀어보고 싶어서 질문 드립니다.! 혹시 백준에서 더 풀어볼 만한 문제 추천해주실 수 있으실까요??
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
7-P 질문 있습니다!
안녕하세요, 큰돌님! 7-P 관련해서 질문드립니다. bfs + 맵 으로 완탐을 구현했습니다.하지만, 계속 71%에서 틀립니다.강의 로직과 비슷하다고 생각하는데, 왜 안되는지 궁금합니다! https://www.acmicpc.net/source/72316595
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
a.cpp 오류
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.a.cpp 파일을 visual studio code 에서 만들었는데 다음과 같이 오류가 발생합니다.수업 자료처럼 open in intergrated terminal을 눌러서 컴파일명령어 실행한 상태입니다.
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
코드 검토
안녕하세요! 선생님의 bfs 풀이 아이디어를 듣고 혼자 풀어봤습니다! 저의 경우 ch 랑 dis를 합쳐서 check 로 풀어서, 디폴트가null 이어서 널 이면 큐에 넣고, 숫자가 들ㄹ어가있으면 continue 하는 식을로 했는데 괜찮을까요?function solution(s, e) { let answer = 0; let dx = [1, -1, 5]; let check = Array.from({ length: 10001 }, () => null); check[s] = 0; let queue = []; queue.push(s); while (queue.length) { let v = queue.shift(); if (v === e) { answer = check[v]; break; } for (let a of dx) { let x = a + v; if (check[x] !== null || x < 1 || x > 10000) continue; check[x] = check[v] + 1; queue.push(x); } } return answer; }
-
해결됨코딩테스트 [ ALL IN ONE ]
postorder 문제 문의드립니다!
안녕하세요!현재 postorder 트리 문제 풀었는데요!선생님이 공유해주신 코드가class Solution(object): def lowestCommonAncestor(self, root, p, q): if root == None: return None left = self.lowestCommonAncestor(root.left, p, q) right = self.lowestCommonAncestor(root.right, p, q) if root == p or root == q: return root elif left and right: return root return left or right이렇게 인데 class에 대해서 잘 몰라서 그런지 이후로 어떻게 해야 답이 나오는지 모르겠습니다ㅜㅜresult = Solution([3, 5, 1, 6, 2, 0, 8, None, None, 7, 4], 6, 4)이렇게 했는데 에러가 나는데 어떻게 해야할까요?++ 선생님 파이썬 전자책으로 공부하고 했는데, 제가 잘 못찾아서 그런지 그때 클래스에 대해서 보지 못한것 같은데 설명해주셨으면 좋겠어요🙏🙏
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
테스트케이스는 다 맞는데
#include <bits/stdc++.h> using namespace std; int arr[51][51]; int visited[51][51]; vector<pair<int, int>> v; int dy[] = { -1, 0, 1, 0 }; int dx[] = { 0, 1, 0, -1 }; int T, M, N, K; int x, y; int t = 1; int cnt = 0; void DFS(int _y, int _x) { visited[_y][_x] = t; for(int i=0; i<4; ++i) { int ny = _y + dy[i]; int nx = _x + dx[i]; if(nx < 0 || ny < 0 || nx >= M || ny >= N) continue; if(visited[ny][nx] == t) continue; if(arr[ny][nx] == 0) continue; DFS(ny, nx); } } int main() { ios::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); cin >> T; for(int i=0; i<T; ++i, ++t) { cnt = 0; cin >> M >> N >> K; for(int j=0; j<K; ++j) { cin >> x >> y; v.push_back({x, y}); arr[y][x] = 1; } for(int k=0; k<v.size(); ++k) { tie(x, y) = v[k]; if(visited[y][x] == t) continue; if(arr[y][x] == 0) continue; DFS(y, x); ++cnt; } v.clear(); cout << cnt << '\n'; } return 0; } 안녕하세요. 강의 안보고 한번 풀어봤는데요. 테스트 케이스는 다 맞는데 어디가 문제인지 모르겠습니다 ㅠ
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
a.cpp
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. a.cpp 파일을 visual studio code로 만들면 되는걸까요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
queue를 통해 풀순 없을까요?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. http://boj.kr/783d87e6fdf94af598c1204fe09a8c3b 반례주시면 감사하겠습니다..왜 오답인지 모르겠습니다..
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
사전순 정렬
http://boj.kr/ac9c5032616d42d3b9599642e583fdcb 더 효율적인 방법을 제시해 주셨는데이 방식도 알아내고 싶어 질문 드립니다.이 방식대로 풀어내면 정렬하는 곳에서 문제가 생기는데1 4 101 4 6이렇게 정렬되어 사전순 정렬이 불가능한데.. 백터<string>에 담긴 "1 4 10", "1 4 6" 를 정렬하려면 어떡하면 좋을까요? 뭔가.. split을 잘 사용하면 될 것 같은 느낌이 있는데과부하가 걸렸는지 사고가 안되네요 ㅎㅎㅜ
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
9996문제 질문있습니다.
앞부분과 뒷부분을 비교해서 DA로 출력하는 조건문에서 조건의 뒷부분을 비교하는 조건에 대해서 이해가 되지 않습니다.string f; (ab * ab 중 앞 ab)string e; (ab * ab 중 뒤 ab) 문제로 제시된 문자열의 사이즈에서 뒷부분의 사이즈를 빼면 조건의 뒷 문자에 대한 조건이 완성되는 이유가 궁금합니다. if(f == s.substr(0,f.size()) && e == s.substr(s.size() - e.size()))
-
미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
투포인트/슬라이딩 윈도우 관련
혹시 투포인터/슬라이딩 윈도우 부분도 강의에 있나요?자바 커리큘럼에는 보니까 있는데 파이썬에는 없어서요. 혹시 추가될 예정이 있나요? 아니면 혹시 커리큘럼속에 포함 되어있는데 제가 못찾는 건가요?감사합니다.
-
미해결입문자를 위한 코딩테스트 핵심(이론과 문제풀이) [Python]
체크배열을 set 으로 사용해도될까요?
from collections import deque def solution(home): answer = 0 duplicate = {0} queue = deque([0]) while queue: node_length = len(queue) for _ in range(node_length): node = queue.popleft() if node == home: return answer for child_node in [node - 1, node + 1, node + 5]: if (0 < child_node < 10_000) and (child_node not in duplicate): duplicate.add(child_node) queue.append(child_node) answer += 1강의가 드디어 거의 끝나가네요.. 해당문제를 혼자 풀어봤습니다. 강의에서는 체크배열로 중복을 체크하더군요! 이 중복체크를 체크배열이 아닌 set 로 해결해도 효율적일까요? 어짜피 set 의 시간복잡도는 O(1) 이어서 괜찮지않나 생각하는데 조언좀 부탁드리겠습니다!!
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-I 반례를 잘 모르겠습니다!
http://boj.kr/01660705b14346a68f903e9c57b3553b처음에 설명하신 String을 접근하는 방법과 cmp를 만드는 것 까지 접근했으나 계속 틀렸다고 나옵니다 ㅠㅠ한번 살펴봐주시면 감사하겠습니다!
-
해결됨독하게 C를 배운 사람을 위한 선형 자료구조
연결리스트 삭제 시 헤드노드 NULL인 경우 예외처리의 필요성 재고
연결리스트 삭제 시 헤드노드가 NULL인 경우를 고려해야 하는 이유가 궁금합니다. 삭제 전에 삭제할 노드를 미리 찾는 과정이 수반되는데, 그 과정은 헤드노드가 NULL값이 아니라는 것을 전제로 이루어집니다. 따라서 삭제할 노드를 찾아서 삭제를 진행하는 단계까지 왔다는 것은 헤드노드가 NULL이 아니라는 것을 전제로 한다고 볼 수 있습니다. 그럼에도 불구하고 삭제를 진행하는 함수에서 헤드노드가 NULL인 경우를 고려하시고 이에 대한 예외처리 코드를 작성하셨는데, 혹시 그에 대한 이유가 있을까요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-h 문제 질문입니다.
https://www.acmicpc.net/source/72188767 sum의 값에 따라 최솟값과 비교하여 최대값이 갱신되도록 짯는데 왜 틀리는걸까요?
-
미해결입문자를 위한 코딩테스트 핵심(이론과 문제풀이) [Python]
연결리스트의 삽입과 삭제에서 시간복잡도.
연결리스트에서 값을 삽입하거나 삭제할 때 시간복잡도가 O(1)이라고 하는데 특정 주소의 값을 삭제하거나 특정 값 앞뒤로 새로운 값을 삽입할 때 그 특정 주소를 찾기위해서는 결국 순차탐색을 해서 최악의 경우 O(n)이 되지않나요?예를들어 길이가 n인 연결리스트에서 n//2째에 값을 삭제하거나 삽입하고 싶다고 한다면 n//2 번째의 주소를 가르키고 있는 노드를 찾아야 하니 시간복잡도가 O(n)이 아닌가 라는 의문이 들어서 질문 남깁니다.
-
해결됨코딩테스트 [ ALL IN ONE ]
수강생인데 교재 공유좀 해주세요.
안녕하세요. 저번에 교제 공유 신청했는데 2일째 답변이 없으셔서 빨리 신청한 이메일로 공유좀 부탁드려요
-
미해결입문자를 위한 코딩테스트 핵심(이론과 문제풀이) [Python]
내장 함수들의 시간복잡도는 외워둬야하나요?
내장함수마다 제각기 시간복잡도를 가질텐데 자주 쓰이는 함수들은 시간복잡도를 외워두는게 좋을까요? 그래야 시간복잡도를 따지는 문제에서 내장함수를 쓸지 직접 반복문을 쓸지 결정할 수 있을거같아서 질문드려요.
-
미해결입문자를 위한 코딩테스트 핵심(이론과 문제풀이) [Python]
중복 제거
위의 코드도 O(n)의 시간복잡도를 가질까요?