묻고 답해요
160만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-P 백준 14502 질문입니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 문제 해설에서 큰돌님이 벽을 세우실 때 아래와 같이 for문으로 순열을 구현하셨습니다.그런데 큰돌님의 개념 교안에는 아래처럼 for문으로 구현돼있더라구요. 위 처럼 구현해도 실전에서 별 상관이 없는것인가요? 순서만 다를 뿐 취향대로 코드를 작성하면 되는건지 질문드립니다.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
7-a 질문
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요 큰돌님! https://inf.run/jLPw53일전에 질문을 올렸는데 답변 부탁드리겠습니다! 감사합니다!
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-K 시간 초과ㅜㅜ
http://boj.kr/f99ceee53c3244798a75cdf977eaa63b메모리 초과를 해결하니 시간초과가 뜨는데 어디가 문제인 걸까요ㅠㅠ 중복 탐색이 이루어지는 걸까요??강의를 보고도 풀기가 어렵네요ㅜㅜ 도와주시면 감사하겠습니다ㅠ
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
어디 부분이 잘못되었는지 잘 모르겠습니다.
반례들을 다 찾아서 넣어봐도 다 맞게 나오는데 어디 부분이 틀렸는지 알 수 있을까요?#include <iostream> #include <vector> #include <cstring> #include <algorithm> using namespace std; int N, M, A, B, visited[10004], cnt; vector<int> adj[10004]; vector<pair<int, int>> v; bool cmp(pair<int, int> a, pair<int, int> b) { return a.second > b.second; } void dfs(int num) { if (visited[num]) return; visited[num] = 1; cnt++; for (int i = 0; i < adj[num].size(); i++) { dfs(adj[num][i]); } } int main() { cin >> N >> M; for (int i = 0; i < M; i++) { cin >> A >> B; adj[B].push_back(A); } for (int i = 1; i <= N; i++) { memset(visited, 0, sizeof(visited)); cnt = 0; dfs(i); v.push_back({i, cnt}); } sort(v.begin(), v.end(), cmp); int ret = v[0].second; for (auto i : v) { if (ret > i.second) break; cout << i.first << " "; } return 0; }
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
8-Z 질문드립니다.
다른 분께서 이전에 질문하신 내용과 비슷한 내용인데요,https://www.acmicpc.net/source/share/ed3075b3f88b464bb600588f9f64a245위의 큰돌님께서 올려주신 코드에서 23 ~ 25번째 줄, 29번째 ~ 31번째 줄을 보면 아래처럼 선분에 해당하는 좌표별로 일일이 1을 더하는 로직인데요.// line 23 ~ 25 for(int j = x1 + 1; j <= x2; j++){ _x[j]++; } // line 29 ~ 31 for(int j = y1 + 1; j <= y2; j++){ _y[j]++; }이 경우 길이가 매우 긴 선분이 매우 많은 경우 시간초과가 날 것이라 생각했습니다. 다른 사람의 코드도 보고 chat gpt도 괴롭혀보니 difference array(차분 배열)를 이용해 풀더군요. 그래서 제가 테스트를 좀 해봤는데요,선분의 길이가 90만에서 100만 정도 되는게 5만개 정도 되는 데이터를 만들어서 시간을 측정해보았습니다.diff.exe는 차분배열을 이용한 코드를 컴파일한 실행파일이고 nodiff.exe는 차분배열을 이용하지 않은 겁니다.https://github.com/myc0603/CodingTestStudy/tree/main/week8/Z위 링크는 차분배열을 이용한 코드, 이용하지 않은 코드 입력파일 만든 코드, 입력 파일에 대한 깃헙 링크입니다.그리고 백준 게시판에 데이터 추가 요청 글 올렸습니다. (https://www.acmicpc.net/board/view/160093)큰돌님께서 한번 봐주실 수 있을까요??
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
7-a 질문
안녕하세요 큰돌님! Tc 가 아래와 같고50 29 20 21 1629 0 15 29 2820 15 0 15 1421 29 15 0 416 28 14 4 0 dp[3][15]=20이 나왔습니다. 이 수는 3->4->0의 경로인데아무리 생각해도 이걸 0,1,2,3을 방문했을 때의 최솟값이라 납득하기 어렵습니다 제가 이해를 잘못한걸까요? //이미 거리가 계산되어 있으면 반환 if (dp[here][visited]!=-1){ cout<<"이미 계산한 점이 있을 때 현재 위치 : "<<here<<" "<<dp[here][visited]<<" && "; print(visited); return dp[here][visited]; }
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-D 2% 틀림
http://boj.kr/f213eaf107794f729269e981c8274c91안녕하세요 왠만한 반례 다 넣어봐도 맞게 나오는데2%에서 틀렸다고 계속 나오네요어떤점이 잘못됐고 반례가 있다면 어떤 반례가 있을까요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
공부 방식에 대하여 질문이 있습니다.
안녕하세요 큰돌님, 강의를 너무 잘 보고 있고 좋은 품질의 강의 덕에 PS에 대한 감을 정말 많이 잡았습니다.다만, 저의 공부 방식에 대해 조언을 구하고자 합니다. 이번 3-M을 들으면서, 강의 내용에 말하셨던 아이디어는 모두 떠올렸는데 단순히 그 아이디어가 구현이 안되서 강의 답을 봐버렸습니다.해당 문제에는 2시간 30분 정도 시간 소요를 했고, 문제를 풀어내지 못했는데 이러한 경우에는 어떻게 학습을 해야할까요?6시간 7시간이 걸리더라도 생각한 아이디어에 대한 구현을 마무리 지어본다.3시간 정도 소요해도 안될 시에는, 강의를 보며 구현 테크닉을 배운다. 이런 질문 너무나 많이 받으셨을 것 같지만, 그래도 도움받고 싶어 질문을 남깁니다.(강의 중에 골드 문제는 3~4시간은 고민 해보라고 하셨던 것을 알고는 있지만, 아이디어를 구현하는 실력이 부족한 점을 개선하는 방법을 찾고 싶습니다.)긴 글 읽어주셔 감사합니다.좋은 하루 보내세요
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
비가 오는 높이 질문
안녕하세요 전 아래와 같이 코드르 짰는데 선생님은 비가 1부터 온다고 가정하고 짜신거같습니다. 그런 이유가 있나요?http://boj.kr/726d9be50447466599dd4ed16480dfc7 문제에 아무지역도 물에 잠기지 않을 수 있다 라는 문구로 미루어 보아 비가 0만큼 올 경우도 고려해야하지 않나요??
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
코드
http://boj.kr/68317e445219486881b7ea568c45979e 안녕하세요 이코드 뭐가 틀린거죠?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
코드
http://boj.kr/68317e445219486881b7ea568c45979e 안녕하세요 이코드 뭐가 틀린거죠?
-
해결됨[파이썬/Python] 문과생도 이해하는 DFS 알고리즘! - 입문편
백준 13565 침투 질문
강의 정말 잘 듣고있습니다. DFS 너무 어려웠는데 저에게 한 줄기 빛 같은 존재십니다..! 원본 문제가 바뀐것같기도 한데,13565번 백준 원본을 보면 M, N 순서대로 입력을 받는 것 같습니다. M이 행에 해당되고, N이 열에 해당이 되어서 전반적으로 반대가 되어야하고,강의에서 말씀 주신 이 부분도defdfs(y, x): global visited, map_, answer, N if y == N: answer = Truereturny == M으로 바뀌어야할 것 같은데 맞을까요?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-A 질문있습니다
http://boj.kr/b397b1373b73479b9f96656444c94ad6이렇게 &&코드를 쓰면 맞고 http://boj.kr/8d1cdc8826494fb18a9ee54da5ffc5b8이렇게 || 해서 continue 하면 "메모리 초과" 로 뜨는데 이유가 뭔가요? 주석으로 쓴 부분을 봐주십쇼
-
해결됨38군데 합격 비법, 2025 코딩테스트 필수 알고리즘
문자열 뒤집기 문제 질문입니다!
1. 현재 학습 진도몇 챕터/몇 강을 수강 중이신가요?1-11 def find_count_to_turn_out_to_all_zero_or_all_one(string): # string을 순회하면서 0과 1의 연속된 덩어리 개수를 구함 # 그 개수중 min을 return zero_seq = 0 one_seq = 0 prev_num = string[0] # 첫 bit 초기화 if string[0] == "0": zero_seq += 1 else: one_seq += 1 # 2번째 bit부터 마지막까지 순회 for bit in string[1:]: if bit != prev_num: if bit == "0": zero_seq += 1 else: one_seq += 1 prev_num = bit min_count = min(zero_seq, one_seq) return min_count result = find_count_to_turn_out_to_all_zero_or_all_one(input) print(result)안녕하세요!1주차 숙제 중 문자열 뒤집기 문제를 풀면서 궁금한 점이 있어 질문 남깁니다.저는 풀이가 위 코드와 같이 나왔는데, 정답 코드랑 비교했을때 살짝 다르더라구요.출력은 잘 나오는 것 같은데, 정확한 차이가 궁금합니다.저는 현재 bit를 이전 bit와 비교하고, 강사님은 현재 bit를 다음 bit와 비교하는 방식의 차이일까요?아니면 제 풀이에 문제가 있을까요?
-
미해결비개발자도 쉽게 시작하는 코딩 입문 강의: PCCE 합격을 위한 파이썬 기초 & 알고리즘
3-2. 문자열과 데이터 - 입력편 에러
안녕하세요현재 실습을 따라하고 있는데 저는 영상과 다른 에러가 나와서요.해결 방법을 모르겠습니다. 아래 에러 내용SyntaxError: invalid syntax>>> C:/Users/admin/AppData/Local/Programs/Python/Python313/python.exe "c:/startcoding/02.문자열과 데이터/04.입력.py" File "<python-input-15>", line 1 C:/Users/admin/AppData/Local/Programs/Python/Python313/python.exe "c:/startcoding/02.문자열과 데이터/04.입력.py" ^SyntaxError: invalid syntax 답변 부탁드리겠습니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
8-X 강사님 코드 중 사소한 부분에 대한 질문이 있습니다.
안녕하세요.강사님 해설 코드에서 중요한 부분은 아니지만 제 코드와 비교하는 과정에서 사소한 의문이 드는 부분이 있어 질문드립니다. https://www.acmicpc.net/source/share/52caf2495c83482fb5912f0c5cbbf935위 링크의 강사님 코드 중에서 60번째 줄의int next_height = max(height[y][x], min(hole[y][x][i], height[ny][nx]));이 부분에서 next_height을 구하는 과정에서 height[ny][nx]을 넣을 필요가 없다고 생각됩니다. 코드 논리 상으로만 봤을 때 next_height가 hieght[ny][nx]값이 되게 되면 어차피 아래 if문if(height[ny][nx] > next_height) 에서 걸러지기 때문에 어차피 next_height가 height[ny][nx]가 되는 게 유의미해지는 경우는 없습니다. 문제의 개념을 알고리즘으로 변환하는 과정에서도 설명해보자면, 우선순위큐에 우선 가장 바깥칸을 넣습니다. 맨 처음에 물탱크에 물을 가득 채운후에 가장 먼저 물이 빠져서 물높이가 낮아지는 칸들입니다. 이 칸들을 우선순쉬큐에 넣고 다익스트라 알고리즘으로 돌림으로써 물높이가 낮은 칸들의 인접한 칸에서 구멍을 통해 물이 흘러 들어오게 됩니다. (여기서 물높이가 낮은 칸 (우선순위큐에서 나오는 칸)은 흐름 상 더 높은 물높이를 갖는 칸입니다. 물론 물높이가 더 낮다면 고려할 필요가 없겠죠. 물 높이가 더 낮은 인접한 칸에서 물이 빠져나갈수는 없으니까요)현재 탐색중인 칸에 인접한 물높이가 더 높은 칸에서 현재 물높이가 낮은 칸으로 물이 이동하는데 물높이가 낮은 칸은 결국 탐색해온대로 물높이가 더 낮은 칸 또는 바깥과 연결되어 물높이가 유지되고 인접한 칸은 물이 줄어드는 상황이 다익스트라 알고리즘이 반영된거라고 생각합니다. 그래서 큰돌님께서 강의에서 설명하신대로 (3:00 쯤 부분) 그림이 있을 때 바깥으로 물이 빠져 왼쪽에 물높이가 4, 오른쪽에 물높이가 1이고 구멍이 높이 3에 있을 때 양쪽 물의 높이가 3, 3으로 되는 것이 아니라 왼쪽 물이 높이가 3이 될 때까지 오른쪽으로 흘러가고 오른쪽은 물높이가 그대로 1이 유지되는 것이 자연스러운 설명이고 코드와 다익스트라 알고리즘에도 자연스럽게 설명이 되고 반영이 된다고 생각합니다.이렇게 하면 위 코드를 문제 흐름 상 자연스레 아래처럼 표현이 가능하다고 보여집니다.(코드 자체만으로 봤을 때도 그렇긴 하지만요.)int next_height = max(height[y][x], height[ny][nx]); 큰돌님께서는 제 생각에 대해서 어떻게 생각하시는 지 피드백 부탁드립니다...!항상 빠르고 좋은 답변 감사드립니다.
-
미해결Do it! 알고리즘 코딩테스트 with JAVA
다음영상이 문제 풀이 영상이라고 하셨는데 문제풀이 영상이 누락되어있는 것 같습니다
다음 영상에서 문제 풀거라고 하셨는데 문제풀이 영상이 누락되어있는 것 같습니다최소공통조상 빠르게 구하기 마지막부분이나 여러 영상들에서 다음영상에서 문제 풀어볼거라고하셨는데 문제풀이 영상이 빠져있는 것 같아요 ㅠ ! 유튜브에 들어가봐도 자바 문제풀이 영상을 찾을 수 없었습니다ㅜ확인해주실 수 있나요?
-
해결됨38군데 합격 비법, 2025 코딩테스트 필수 알고리즘
1-10 시간복잡도 질문입니다.
1. 현재 학습 진도몇 챕터/몇 강을 수강 중이신가요? 1-10 2. 어려움을 겪는 부분def find_not_repeating_first_character(string): alphabet_occurrence_array = [0] * 26 for char in string: if not char.isalpha(): continue arr_index = ord(char) - ord("a") alphabet_occurrence_array[arr_index] += 1 not_repeating_character_array = [] for index in range(len(alphabet_occurrence_array)): alphabet_occurrence = alphabet_occurrence_array[index] if alphabet_occurrence == 1: not_repeating_character_array.append(chr(index + ord("a"))) for char in string: if char in not_repeating_character_array: return char return "_" 아래 부분에서 시간복잡도가 O(N²) 인 것 같은데 왜 O(N)인지 궁금합니다.for 문은 O(N) 인 건 알겠습니다!if문에서 char가 not_repeating_character_array 리스트에 포함되어있는지 최악의 경우에 리스트 크기 만큼 돌아야하니까 O(N)라고 생각해서 총 시간복잡도는 O(N) * O(N) = O(N²) 로 계산했습니다... for char in string: if char in not_repeating_character_array: return char
-
해결됨38군데 합격 비법, 2025 코딩테스트 필수 알고리즘
파이참 가상환경 생성 실패
안녕하세요, 알려주신대로 계속 했는데 파이참 가상환경이 생성이 안돼 질문 드립니다. ㅜㅜ 😊
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
코드 빠르게 작성방법
안녕하시렵니까다름이 아니라 에디터에서 괄호를 자동완성 해주는데, 그렇게되면 begin() 같은 경우에는 괄호안에서 커서를 오른쪽으로 빼야하는 상황이 되는데. 이때 방향키로 하자니 오른쪽을 방향키로 뻗어야 하는게 번거럽습니다. 근데 큰돌님께서는 매끄럽게 넘어가던데 방향키로 넘어가신겁니까 아니면 다른 단축키가 있나요?