묻고 답해요
169만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
완탐과 원복 예제
go 함수에 대한 질문입니다. go 함수에서 here을 방문 처리하고, push_back하는 과정을 사진과 같이 for문 바깥에 위치 시켰을 때에 어떠한 문제점이 있나요?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
4-B 1285 질문 있습니다!
안녕하세요 선생님! ㅎㅎ 저는 고의로, 시간 초과가 나는 코드를 아래와 같이 작성해보았습니다. (주석은 테스트했던 흔적)http://boj.kr/c3476a1df6d647de81b2d85f187f35e0 그러나 제 기대와는 달리, 시간 초과가 나지 않고 1%에서 바로 '틀렸습니다' 가 뜨더라고요. 이 말은 즉 코드 자체의 로직이 잘못되어 테스트케이스를 통과하지 못하는건데 그 이유가 뭔지 잘 안 찾아져서 여쭤보러 왔어요.(count세는 함수, arr의 뒤집기 등이 잘 안 동작하는지 확인해봤는데 다 잘 동작하는 것 같아서 더 의문이에요) 어떤 부분이 잘못되었길래, 아예 테스트케이스를 통과하지 못하는 것일까요..?
-
해결됨38군데 합격 비법, 2026 코딩테스트 필수 알고리즘
큐에 항상 하나의 값만 들어가는데 문제풀이에 bfs를 떠올리신 이유가 궁금합니다.
몇 챕터/몇 강을 수강 중이신가요? 4.9어떤 알고리즘을 학습하고 계신가요? bfs, 숙제 두번째 청소기 문제여기까지 이해하신 내용은 무엇인가요? 문제 풀이 강의 보면서 같이 풀고, ai 사용해서 공부한상태, 일주일 뒤에 다시 풀 예정입니다큐에 들어가는 값이 항상 하나밖에 존재하지 않는데 큐를 사용하시는 이유가 궁금합니다.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
당근마켓 문제 질문있습니다!
안녕하세요 큰돌님 BFS강의 누구보다 쉽게 알려주셔서 감사합니다. 강의를 듣던 중 질문이 생겼는데요.개념 및 교안에서 최적의 거리는 visited[목적지] -1 을 하셨는데,당근마켓 문제에서는 visited[목적지y][목적지x] -1을 하지 않으신 이유가 궁금합니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
당근마켓 엔지니어 문제 질문!
안녕하세요 코드를 짜던중에 뭔가 의도대로 안되어 질문드립니다.문제를 보고 생각해서 아래와 같이 만들었는데요.이후 쌤의 정답과 비교해도 어느 부분이 달라서 의도대로 안되는지 궁금합니다. #include <bits/stdc++.h> using namespace std; int n, m, ret, qx, qy, nx, ny, sx, sy, cx, cy; int visited[101][101]; int a[101][101]; vector<int> adj[101]; int dy[] = {-1, 0, 1, 0}; int dx[] = {0, 1, 0, -1}; void bfs(int y, int x){ queue<pair<int,int>> q; visited[y][x] = 1; q.push({y, x}); while(q.size()){ tie(qy, qx) = q.front(); q.pop(); for(int i = 0; i < 4; i++){ ny = qy + dy[i]; nx = qx + dx[i]; if(ny < 0 || ny >= n || nx < 0 || nx >= m || a[ny][nx] == 0) continue; if(visited[ny][nx]) continue; visited[ny][nx] = visited[qy][qx] + 1; q.push({ny,nx}); } } } int main(){ ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); cin >> n >> m; for(int i = 0; i < n; i++){ for(int j = 0; j < m; j++){ cin >> a[i][j]; } } cin >> sy >> sx; cin >> cy >> cx; bfs(sy,sx); cout << visited[cy][cx] << "\n"; for(int i = 0; i < n; i++){ for(int j = 0; j < m; j++){ cout << visited[i][j] << ' '; } cout << "\n"; } }
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
조합 표현 방식 질문
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요 선생님 ! 조합을 직접 그려보라고 하셔서, 직접 그림으로 표현해보다 궁금한게 생겨 질문드립니다. 타고 내려가다가 c(2, [0,1,2]) 해당 부분에서 , start = 1 i=2 인 상태에서 b.pop_back()을 진행하면, 백터 b에만 영향을 미치는거 아닌가요? 왜 i--를 해주지 않아서 i =2로 그대로 남아 있는데, C(3, [0,1,3])이 될 수 있는지 궁금합니다 .ㅠㅠ
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
20강 소수 에라토스테네스의 체 런타임 에러가 뜹니다
강사님 풀이대로하고 코딩채첨을 했더니 런타임 에러가 뜨네요import java.util.Scanner; public class Main { public int solution(int n) { int answer = 0; int[] isPrime = new int[n + 1]; for (int i = 2; i <= n; i++) { if (isPrime[i] == 0) { answer++; for (int j = i * i; j <= n; j += i) { isPrime[j] = 1; } } } return answer; } public static void main(String[] args) { Main m = new Main(); Scanner sc = new Scanner(System.in); int n = sc.nextInt(); System.out.println(m.solution(n)); } }이렇게 하고 그대로 복붙했더니 런타임 에러가 뜹니다.
-
해결됨38군데 합격 비법, 2026 코딩테스트 필수 알고리즘
링크드리스트 중간에 삽입 삭제 연산
1. 현재 학습 진도몇 챕터/몇 강을 수강 중이신가요? 3주차어떤 알고리즘을 학습하고 계신가요? 링크드리스트여기까지 이해하신 내용은 무엇인가요? 2. 어려움을 겪는 부분어느 부분에서 막히셨나요?코드의 어떤 로직이 이해가 안 되시나요?어떤 개념이 헷갈리시나요? 노션에서 링크드 리스트 중간에 삽입 삭제가 O(1)이라고 되어있는데 삽입을 특정위치에 하기위해서 get_node()로 순회를 해야하기 때문에 O(N)이 아닌가 궁금합니다. 혹시 놓친 부분이 있는걸까요? 3. 시도해보신 내용문제 해결을 위해 어떤 시도를 해보셨나요?에러가 발생했다면 어떤 에러인가요?현재 작성하신 코드를 공유해주세요 이렇게 구체적으로 알려주시면, 더 정확하고 도움이 되는 답변을 드릴 수 있습니다! 😊
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
삼성전자 코딩테스트 대비할 때
안녕하세요 선생님, 저는 제목과 같이 1순위 희망 기업은 삼성전자이고 이후에도 제조업 기반의 회사 코딩테스트를 보게 될 거 같은데, 현재 학습하고 있는 4주차 비트마스킹을 우선적으로 학습하는 게 좋을지 아니면 그 뒤에 이분탐색이나 DP같은 문제를 먼저 학습하는 게 좋을지 여쭤보고 싶습니다. 감사합니다.
-
해결됨38군데 합격 비법, 2026 코딩테스트 필수 알고리즘
교재 오류
안녕하세요 딩코딩코님!알고리즘 강의 잘 보고 있습니다ㅎㅎ다름이 아니라, 교재의 2주차 9번 재귀함수 단원에 팩토리얼 문제의 Java와 JS 답안이 60초 카운트 하는 코드로 잘못 첨부된 것 같아 질문 남깁니다!(우선 답은 파이썬 버전으로 확인했습니다!)좋은 강의 덕분에 개념부터 차근 차근 잘 익혀나가고 있습니다ㅎㅎ 감사합니다!
-
해결됨[자바/Java] 문과생도 이해하는 DFS 알고리즘! - 입문편
dfs 부문을 이렇게 작성해도 되나요?
import java.util.*; import java.io.*; public class jelly { static int size; static int[][] map; static boolean[][] visited; // //size,size도달하면 HaruHaru, 아니면 hing public static void dfs(int y, int x){ visited[y][x] = true; if(y == size && x == size) return; int n = map[y][x]; if( (x + n) <= size && !visited[y][x+n]) dfs(y,x+n); if( (y + n) <= size && !visited[y+n][x]) dfs(y+n,x); } public static void main(String[] args)throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); size = Integer.parseInt(br.readLine()); int Max = size +10; map = new int[Max][Max]; visited = new boolean[Max][Max]; for(int i = 1; i <= size; i ++){ StringTokenizer st = new StringTokenizer(br.readLine()); for(int j = 1; j <= size; j ++){ map[i][j] = Integer.parseInt(st.nextToken()); } } dfs(1,1); if(visited[size][size]){ System.out.print("HaruHaru"); }else System.out.print("Hing"); bw.close(); br.close(); } }
-
미해결비개발자도 쉽게 시작하는 코딩 입문 강의: PCCE 합격을 위한 파이썬 기초 & 알고리즘
응시권을 신청했는데 언제쯤 오나요?
bms0801@gmail.com 메일로 신청했습니다.언제쯤 오나요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-J 반례 질문있습니다.
안녕하세요! 선생님 제가 짠 코드가 작동하지 않는 이유를 도저히 모르겠어서 질문 올립니다.답으로는 구름이 등장할 때까지 카운트를 답에 넣는식으로 작성해 주셨습니다.while(a[i][j + 1] == -1){ a[i][j + 1] = cnt++; j++;}1 5.c..c-> -1 0 1 2 0 -1-> -1 0 1 2 0 1http://boj.kr/c6c895e92431416a87ea2b64d7d50287 <- 제 코드입니다.저는 카운트를 끝까지 넣고 구름이 등장할 때마다 덮어씌우는 방식을 사용했습니다.1 5.c..c-> -1 0 1 2 3 4-> -1 0 1 2 0 1제가 상상할 수 있는 케이스는 다 정상 작동해서 어떤점이 문제인지 모르겠습니다.입력에서 마지막에 ' . '을 덜찍어줬을 경우 밖에 상상이 안갑니다..그냥 안되는 코드구나 하고 넘기기 찝찝해서 질문 남깁니다.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-T 질문 있습니다!!
먼저 좋은 강의 해주셔서 감사의 말씀 올립니다!!제가 첫 시도때 못 풀고 선생님 강의를 보고 그 다음날 다시 복습하는 과정에서 제 나름대로 로직을 찾아보고 테스트 케이스를 다 푼 코드를 만들었는데, 결과적으로 시간초과가 떴습니다.그래서 선생님 코드랑 비교해봤는데, 제가 생각했을 때 어디서 차이가 나는지 모르겠어서 이렇게 질문남깁니다. 읽어주셔서 감사합니다!!http://boj.kr/c8fc36cc6e9844a88c4495c0a7e8f3a4
-
해결됨38군데 합격 비법, 2026 코딩테스트 필수 알고리즘
1-5 알고리즘과 친해지기 (2) 질문
1. 현재 학습 진도몇 챕터/몇 강을 수강 중이신가요?1-5 . 알고리즘과 친해지기 (2)어떤 알고리즘을 학습하고 계신가요?최빈값 찾기여기까지 이해하신 내용은 무엇인가요? def find_max_occurred_alphabet(string): alphabet = {} result = [] maxvalue = 0 for char in string: if char.isalpha(): alphabet[char] = alphabet.get(char,0) + 1 for value in alphabet: maxvalue = max(maxvalue, alphabet[value]) for i in alphabet: if alphabet[i] == maxvalue: result.append(i) return result result = find_max_occurred_alphabet print("정답 = i 현재 풀이 값 =", result("hello my name is dingcodingco")) print("정답 = e 현재 풀이 값 =", result("we love algorithm")) print("정답 = b 현재 풀이 값 =", result("best of best youtube"))영상 안보고 문제만 보고 한번 풀어봤는데예시의 hello my name is dingcodingco,we love algorithm, best of best youtube 문자열 전부 최빈값이 여러개라서 원본 문제로 가보니 여러개라면 -1을 반환하도록 되어있어서 조금 바꿔서저는 리스트로 반환하도록 풀어봤는데 이 방법은 어떨까요? 알파벳 아스키코드로 풀 방법은 생각이 안나서 자바에서는 map에 넣듯이 dictionary에 넣어서 풀어보려고 했습니다max 메소드는 연습할땐 안쓰는게 좋은데 자바 삼항연산자가 파이썬에서 어떻게 쓰는지 몰라서 일단 max로 해봤습니다
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-I 17071 시간 초과
안녕하세요 선생님, 17071 문제를 푸는데 도저히 시간 초과가 해결이 되지 않아 질문드립니다. http://boj.kr/205232630d404eddbd6e2f0eeb5e5627 맨 처음에 주석에 달린 조건문이 없을 때는 메모리 초과가 났었고, 이를 해결하기 위해 조건문을 추가했어요. 다만 해당 방법으로 구현하니 시간 초과 문제가 나더라고요. 더더욱 최적화를 해야할 것 같은데, 현재 제 코드에서 더 최적화할 수 있는 방법이 뭔지 궁금합니다. 그리고 이 문제만 6시간 이상 붙잡고 있는데, 이게 맞는건지 잘 모르겠어요. 아예 아이디어가 생각이 안나면 이렇게까지 시간을 붙잡고 있지는 않고, 바로 아이디어 힌트를 얻으려고 할텐데 어느정도 될 것 같은 아이디어(==전체적인 설계나 시간 복잡도, 공간복잡도를 고려했을 때)로 구현했을 때 예상치 못한 동작을 한다던가, 메모리 초과나 시간 초과를 겪으면 제 방법에서 보완하기 위해 고민하다보면 시간이 너무 많이 지나있더라고요. 물론 선생님의 해설은 훌륭해서 잘 이해가고, 해당 방법으로 풀면 풀린다는 것도 잘 알아요.하지만 그건 제가 푼 게 아니라 선생님이 푼건데, 그저 이해하고 따라하기만 하면 낯선 아이디어를 떠올려야할 때 스스로 생각하는 힘이 부족한 느낌이 들더라고요. 그래서 계속 어떻게든 제 방법의 문제점을 찾아내고 해결하려고 붙잡게 되네요. 방법의 시작 자체가 잘못된 걸수도 있는데, 그렇다면 무엇이 잘못되었는지 파악하려고 하고요. (물론 잘 안돼요. 시간만 버리는 것 같습니다.) 실력도 별로 느는 것 같지 않아요. 연습 시간은 너무 많이 걸리고요. 코드도 너무 못 짜는 것 같아요.제 방식이나 생각이 잘못된건가요?
-
해결됨[자바/Java] 문과생도 이해하는 DFS 알고리즘! - 입문편
x랑 y를 거꾸로 쓰는 개념이 너무 헷갈립니다...
일반적으로 수학 좌표계로 생각하면 (2,3) 이라했을때 x축이 2, y축이 3이지만 우리는 맵이나 2차원 리스트로 생각하게됐을떄array[row][col]이여서 이게 반대가되고, 그래프로 치면 정점에 간선이 연결된거기 때문에 이러는것 같은데 graph[y+1][x+1] = true;지난 배추문제부터 이런건 이해가 가는데 static int[] dirY = {-1, 1, 0, 0}; static int[] dirX = {0, 0, -1, 1}; static void dfs(int y, int x){ visited[y][x] = true; for(int i = 0; i < 4; i ++){ int newY = y + dirY[i]; int newX = x + dirX[i]; if(graph[newY][newX] && !visited[newY][newX]) dfs(newY,newX); } } 이게 너무 이해안갑니다. 그냥 파라미터도 x, y로 하고 visited[x][y] , dirX = {-1,1,0,0} dirY = {0,0,-1,1} 이렇게 하면 안되나요? 생각하기가 너무 복잡해요
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-I 이해가지 않는 설명이 있어 질문드려요!
안녕하세요 선생님! 수업 듣는 도중 이해가 가지 않는 부분이 있어 질문드리게 되었어요. "8:19~ 이후" 부터 범위가 50만이기 때문에 50만 * 50만의 2차원 배열을 만들 수 없다고 설명해주셨어요. 하지만 만약 범위가 500 정도라면 2차원 배열을 만들어서 활용했을 것이다 라고 말씀해주셨고요. 저는 범위가 500일 때, 2차원 배열을 어떤 식으로 만들어서 활용하신다는건지 잘 이해하지 못했어요. arr[수빈이의 상태][동생의 상태] 로 만들어서 활용한다는 의미인 것으로 이해했고, 이 "상태" 라는 것은 이 문제의 경우 "위치, 즉 x값" 이라고 생각했어요. 그렇다면 예를 들어arr[1][3]은 수빈이가 x=1에 위치하고, 동생이 x=3에 위치할 때의 값이라는 건데, 그 "값"은 무엇을 의미하나요? 수빈이와 동생이 각각 해당 위치일 때의 시간을 의미하는건가요? 만약 '시간'을 의미하는게 맞다면, 저는 해당 배열을 활용하는 예시가 전혀 생각나지 않아서 질문드렸어요. 간단히 생각해보았을 때는 오히려 불필요한 행위가 될 것 같기도 하고요. 왜냐하면 저희가 궁금한것은 궁극적으로 arr[samePos][samePos] 일텐데 이 값을 알아내는 순간은 arr가 필요 없을 것 같아서요.결국 질문을 아주 간단하게 요약하면,"범위가 500 정도라면 2차원 배열을 만들어서 활용했을 것이라고 해주셨는데, 어떻게 활용한다는 건지 이해가 안갑니다. 활용 방안이 떠오르지 않아요" 입니다. 감사합니다.
-
해결됨[자바/Java] 문과생도 이해하는 DFS 알고리즘! - 입문편
dfs 파라미터에 count를 넣는이유
안녕하세요. 기존처럼 dfs함수내에서 함수가 실행될때마다 answer++를 해서 조건에 일치 할 떄 그냥 answer를 출력하게해도 될것같은데count라는 파라미터는 answer를 -1로 초기화를 해놨기 때문에 넣는건가요? 아니면 answer로 하면 단순 dfs 함수 호출 횟수를 늘리는거고, 이 문제의 본질은 트리의 depth를 물어보는거가 되는거고 그래서 count로 depth를 알려주는건가 싶습니다
-
해결됨[자바/Java] 문과생도 이해하는 DFS 알고리즘! - 입문편
graph 채울때 for문 설계 질문
그 전 문제들까지는 graph를 채울 때조건문에서 i < M으로 간선의 개수로 했는데 왜 이번문제에서는 i <=N으로 하나요? 전에 2차원 배열을 가득 채우고 할 때 i<=N은 dfs 함수에서 사용했었는데..이해를 못하겠스빈다