inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

173만명의 커뮤니티!! 함께 토론해봐요.

answer++ 위치 질문

해결됨

[자바/Java] 문과생도 이해하는 DFS 알고리즘! - 입문편

// 1. dfs 실행 int answer = 0; for(int i = 1; i <= N; i++) { for(int j = 1; j <= M; j++) { if(visited[i][j] == false) dfs(i, j); answer++; } } 안녕하세요. dfs문을 호출한 이후에 answer++;를 했을 때는, 주어진 값과 다르게 나오는데, 어떤 부분에서 차이가 있는지 궁금합니다.. 감사합니다!

  • java
  • 코딩-테스트
  • 알고리즘
  • dfs
버럼 댓글 1 좋아요 1 조회수 276

code의 어디가 잘못된지 도저히 모르겠습니다..

해결됨

[자바/Java] 문과생도 이해하는 DFS 알고리즘! - 입문편

안녕하세요. 해당 문제의 코드를 다음과 같이 짰는데, 출력하면 항상 0이 출력됩니다. 강의에 나온 부분과 거의 동일한데, 어느 부분에서 오류가 발생하는지 잘 모르겠습니다. 감사합니다. import java.util.*; import java.io.*; class Main { final static int MAX = 50 + 10; static boolean[][] map; static boolean[][] visited; static int W, H; static int[] DirY = {-1, -1, -1, 0, 0, 1, 1, 1}; static int[] DirX = {-1, 0, 1, -1, 1, -1, 0, 1}; public static void dfs(int y, int x) { visited[y][x] = true; for(int i = 0; i < 8; i++) { int newY = y + DirY[i]; int newX = x + DirX[i]; if(map[newY][newX] && visited[newY][newX] == false) { dfs(newY, newX); } } } public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); // 0. 입출력 while(true) { StringTokenizer st; st = new StringTokenizer(br.readLine()); W = Integer.parseInt(st.nextToken()); H = Integer.parseInt(st.nextToken()); // 마지막 입력 값이 0이면 while 문 빠져나오기 if(W == 0 && H == 0) break; map = new boolean[MAX][MAX]; visited = new boolean[MAX][MAX]; for(int i = 1; i <= H; i++) { st = new StringTokenizer(br.readLine()); for(int j = 1; j <= W; j++) { map[i][j] = (Integer.parseInt(st.nextToken()) == '1') ? true : false; } } int answer = 0; for(int i = 1; i <=H; i++) { for(int j = 1; j <=W; j++) { if(map[i][j] && visited[i][j] == false) { dfs(i, j); answer++; } } } bw.write(String.valueOf(answer)); bw.newLine(); } bw.close(); br.close(); } }

  • java
  • 코딩-테스트
  • 알고리즘
  • dfs
버럼 댓글 1 좋아요 1 조회수 297

알고리즘 수업 깊이 우선 탐색1 수업자료 문의

해결됨

[파이썬/Python] 문과생도 이해하는 DFS 알고리즘! - 입문편

알고리즘 수업 깊이우선탐색2의 자료가 올라와 있는 것 같습니다.

  • python
  • 코딩-테스트
  • 알고리즘
  • dfs
  • python3
Edwards 댓글 2 좋아요 1 조회수 353

3강 누적합 백준 예제 관련 질문

해결됨

2주만에 통과하는 알고리즘 코딩테스트 (2024년)

안녕하세요! 항상 수업 듣고 예제를 풀이하는 방식으로 공부하고 있습니다. 이번에도 그렇게 풀려고 천천히 문제를 읽었더니 조금 다른 문제인 것 같아서.. 수정 요청 드립니다. 3강의 문제 1번 백준 유사 예제는 2259가 아니라 2559인 것 같습니다. 수정 부탁드립니다!

  • python
  • 코딩-테스트
  • 알고리즘
JaeHwan Kim 댓글 2 좋아요 1 조회수 421

노션 공유 부탁드립니다

해결됨

코딩테스트 [ ALL IN ONE ]

인프런 아이디 : dudrhkd4179@naver.com ( 카카오 로그인 ) 노션 이메일 : dudrhkd3892@gmail.com

  • python
  • 코딩-테스트
  • 알고리즘
김영광 댓글 1 좋아요 1 조회수 192

심화강의 일정

해결됨

코딩테스트 [ ALL IN ONE ]

안녕하세요, 강의 잘 수강하고 있습니다. 혹시 강의가 언제 다 올라올까요? 빨리 듣고싶습니다~

  • python
  • 코딩-테스트
  • 알고리즘
lsjung567 댓글 1 좋아요 1 조회수 291

널 포인터 에러

해결됨

[자바/Java] 문과생도 이해하는 DFS 알고리즘! - 입문편

import java.io.*; import java.util.*; public class Main { static final int MAX = 100000 + 10; static ArrayList<Integer>[] graph; static boolean[] visited; static int[] answer; static int N, M, R; static int order; public static void dfs(int idx) { visited[idx] = true; answer[idx] = order; order++; for (int i = 0; i < graph[idx].size(); i++) { int next = graph[idx].get(i); if (!visited[next]) { dfs(next); } } } public static void main(String[] args) throws IOException { // 0. 입력 및 초기화 BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); StringTokenizer st = new StringTokenizer(br.readLine()); N = Integer.parseInt(st.nextToken()); M = Integer.parseInt(st.nextToken()); R = Integer.parseInt(st.nextToken()); graph = new ArrayList[MAX]; for (int i = 1; i <= N; i++) { graph[i] = new ArrayList<>(); } visited = new boolean[MAX]; answer = new int[MAX]; order = 1; for (int i = 0; i < M; i++) { st = new StringTokenizer(br.readLine()); int x = Integer.parseInt(st.nextToken()); int y = Integer.parseInt(st.nextToken()); graph[x].add(y); graph[y].add(x); } // 2. 내림차순 정렬 for (int j = 0; j < N; j++) { Collections.sort(graph[j], Collections.reverseOrder()); } // 3. 재귀함수 출력 dfs(R); for (int k = 1; k <= N; k++) { bw.write(String.valueOf(answer[k])); bw.newLine(); } br.close(); bw.close(); } } 해당 코드를 구현했는데, 널 포인터 에러가 뜹니다..! 어떤 부분에서 잘못됐는지 피드백 받고자 질문드립니다! 감사합니다

  • java
  • 코딩-테스트
  • 알고리즘
  • dfs
버럼 댓글 1 좋아요 1 조회수 378

[완전탐색] 14568번 문제 문의

해결됨

2주만에 통과하는 알고리즘 코딩테스트 (2024년)

안녕하세요! 강의를 듣다보니 궁금한게 생겨서 문의남깁니다! 9:46분에서 A,B,C가 현재 (0,candy +1)로 반복문을 돌고있는데요! 문제 조건에서는 셋중 사탕을 하나도 못받는 친구는 없어야합니다" 라는 조건을 만족시키기 위해 (0,candy +1) -> (1,candy +1) 로 변경해서 한다면 완전탐색적방법으로 생각하는게 위배되는걸까요! 모든 경우의수를 확인을 해야 하니깐 0도 포함을 해서 문제를 풀어나가는게 맞는건지! 궁금했습니다! 강사님 말씀대로 완전탐색적인 방법이 저랑 뭔가 잘맞는거같아서 익숙해지려고 하고있습니다:) 감사합니다!

  • python
  • 코딩-테스트
  • 알고리즘
cepe 댓글 1 좋아요 1 조회수 356

강의자료 부탁드립니다!

해결됨

코딩테스트 [ ALL IN ONE ]

노션 이메일 : 20185158@hallym.ac.kr 빨리 강의 자료 받아서 열심히 공부하고 싶은데 아직 자료를 못받았습니다 ㅠㅠ 강의 자료 부탁드립니다. 그리고, 좋은 강의 해주셔서 감사합니다 :)

  • python
  • 코딩-테스트
  • 알고리즘
dldmswo1217 댓글 1 좋아요 1 조회수 196

백준 2503 숫자야구 문제 어떤 부분이 잘 못되었는지 모르겠습니다

해결됨

2주만에 통과하는 알고리즘 코딩테스트 (2024년)

강의를 본 후에 아래와 같이 코드를 작성한 후 백준에 제출했는데 왜 틀렸는지 이유를 모르겠습니다 N= int(input()) hint = [list(map(int,input().split())) for _ in range(N)] answer =0 for a in range(1,10): for b in range(10): for c in range(10): if(a==b or b==c or a==c): continue cnt =0 for arr in hint: number = list(str(arr[0])) ball = arr[1] strike = arr[2] ball_count = 0 strike_count =0 if(a== int(number[0])): strike_count+=1 if(b== int(number[1])): strike_count+=1 if(c== int(number[2])): strike_count+=1 if(a== int(number[1]) or a == int(number[2])): ball_count+=1 if(b== int(number[0]) or b == int(number[2])): ball_count+=1 if(c== int(number[1]) or c == int(number[0])): ball_count+=1 if ball_count == ball and strike_count == strike: cnt += 1 if cnt == N: answer=+1 print(answer)

  • python
  • 코딩-테스트
  • 알고리즘
누에보Nuevo 댓글 1 좋아요 1 조회수 553

백준 11724 연결 요소의 개수 문제

해결됨

[파이썬/Python] 문과생도 이해하는 DFS 알고리즘! - 입문편

선생님 안녕하세요 일단 너무 만족스러운 강의 준비해주셔서 감사하고 정말 돈이 하나도 아깝지 않은 강의입니다. DFS 강의 말고도 다른 알고리즘 강의도 준비해주시면 너무 좋을것 같아요 ㅠㅠ 아무튼 질문은요, 선생님 강의를 듣고 아래처럼 제가 코드를 짰는데 선생님 코드랑 몇번을 비교해도 다른 점이 보이질 않는데 백준에서 제출했을 때 계속 메모리 초과라고 나옵니다. 혹시나 제가 바보같은 실수를 했을 수 있으니 미리 사과드립니다 ㅠㅠ!! 감사합니다 import sys sys.setrecursionlimit(10**6) N, M = map(int, sys.stdin.readline().split()) MAX = 1000 + 10 graph = [[False] * MAX for _ in range(MAX)] visited = [False] * MAX answer = 0 for _ in range(M): u, v = map(int, sys.stdin.readline().split()) graph[u][v] = True graph[v][u] = True def dfs(idx): visited[idx] = True for i in range(1, N + 1): if not visited[i] and graph[idx][i]: dfs(i) for i in range(1, N + 1): if not visited[i]: dfs(i) answer += 1 print(answer)

  • python
  • 코딩-테스트
  • 알고리즘
  • dfs
  • python3
noeliden1 댓글 2 좋아요 1 조회수 499

[완전탐색] 1090번 문제 문의

해결됨

2주만에 통과하는 알고리즘 코딩테스트 (2024년)

안녕하세요. 강사님! 완전탐색적방법으로 접근하는 방법을 익히고싶은데 이해하고 있는게 맞는지 궁금해서 질문남겼습니다! 24:10분쪽 내용을 보면서 궁금한 내용이 있습니다! 만약에 x축[] 짱구:5, 철수:7 , 맹구:9 일때 문제 조건에 제시된 1 - 1_000_000까지 전체 순회를 하면서 1번 위치일때 짱구: 1 - 5, 철수 : 1 - 7, 맹구: 1 -9 2번 위치일떄 짱구: 2 - 5, 철수 : 2 - 7, 맹구: 2 -9 x[] 원소를 기준으로 쭉 1_000_000까지 모든경우의수를 다구하는게 맞는지 궁금합니다. 최적화 아이디어를 하기전 완전탐색적인 방법을 제대로 이해하고있는지 체크하기 위함입니다! 감사합니다!

  • python
  • 코딩-테스트
  • 알고리즘
cepe 댓글 2 좋아요 1 조회수 523

AVL 트리 회전 질문

해결됨

그림으로 쉽게 배우는 자료구조와 알고리즘 (심화편)

안녕하세요. 선생님~ [AVL트리 - 개념] 강의 - 회전 관련 질문있습니다. 7:00 즈음 LL회전, RR회전 펼져있는 노드 이미지가 반대로 된것 아닌지? 궁금합니다. 헷갈려서 검색해보니 LL이라는 용어가 회전할 기준이 되는 노드의 왼쪽 노드, 그 다음 왼쪽 노드 형태에서 오른쪽으로 회전해서 균형을 맞추자!로 대체적으로 설명이 되어있는것같습니다. (이미지로는 왼쪽으로 쭉 내려가는 이미지) 위키백과에는 따로 LL,RR이라는 용어설명이 없어서, 블로그 글들 참조하였습니다. 뭔가 관점 차이인 부분일까요?

  • 알고리즘
전우형 댓글 1 좋아요 1 조회수 462

바이러스 백준 2606 dfs 종료는 어떻게 되는건가요?

해결됨

[파이썬/Python] 문과생도 이해하는 DFS 알고리즘! - 입문편

def dfs(idx): global visited, graph, answer visited[idx] = True answer += 1 for i in range(1,N+1): if not visited[i] and graph[idx][i]: dfs(i) 이와 같은 dfs 재귀함수에서 dfs(1)이 맨 처음에 실행되고 조건에 따라 계속 재귀되는데 마지막 dfs(7)까지 간다고 했을 때 range(1,N+1)에 범위는 넘지만 dfs(8), dfs(9), ... 이런식으로 계속 코드가 돌아버릴 수도 있는 것이 아닌가요?? DFS와 재귀함수가 처음이여서 질문을 명확하게 못 작성한 것 같네요. return이라는게 필요한 것이 아닌지, 재귀함수에 종료조건 이 어떻게 되는 것인지 궁금해서 여쭤봅니다. 답변 기다리겠습니다. 감사합니다

  • python
  • 코딩-테스트
  • 알고리즘
  • dfs
  • python3
녜힁 댓글 1 좋아요 1 조회수 215

강의 듣고 난 후 어떤 문제를 풀어야 할까요

미해결

코딩테스트 [ ALL IN ONE ]

안녕하세요! 강의 잘 듣고있습니다. 강의듣고 나서 해당 알고리즘에 맞는 쉬운문제부터 차근차근 풀어보고 싶은데 추천하는 문제 리스트가 있나요? 그리고 디스코드에서 문제를 같이푸는건 어떤건가요??? 저는 디스코드가 안들어가집니다.

  • python
  • 코딩-테스트
  • 알고리즘
김경민 댓글 2 좋아요 1 조회수 486

1520.py

해결됨

2주만에 통과하는 알고리즘 코딩테스트 (2024년)

안녕하세요 ! 강의를 잘 보고있습니다 :) 1520 문제를 처음 접하였을때, dp를 사용하지 않았었는데요 강의를 보니 강사님께서도 처음에는 dp테이블을 사용하지 않고 푸시다가, 나중에 dp를 추가해주시더라구요 .. ! 이, 이유가 백준에서 시간제한이 걸리기 때문에, 이미 방문한곳은 다시 방문하지 않기위해 그러는 것 인가요 .. ? 아직 들어야할 강의가 많아서, 문제가 이렇다 저렇다 말 할 수 없겠지만 만약, 코테에서 위와같이 문제가 나오면, 시간제한이 걸리는지 아닌지를 확인할 방법이 없는데 항상 dp테이블을 생각하는것이 좋은 방법일지 궁금합니다 .. !

  • python
  • 코딩-테스트
  • 알고리즘
rmatlr0112 댓글 1 좋아요 1 조회수 362

다익스트라 final 노드 도착후에 바로 종료하지 않는 이유가 궁금합니다.

해결됨

코딩테스트 [ ALL IN ONE ]

구현하신 코드를 보니 목적지에 도착한 이후에도 우선순위 큐를 모두 비우고 나서 값을 리턴하도록 함수를 작성하셨는데요, 목적지 도달 후 바로 반환 하는 것이 시간상 더 유리할 것 같은데 혹시 다른 이유가 있는걸까요?

  • python
  • 코딩-테스트
  • 알고리즘
윤기석 댓글 2 좋아요 1 조회수 400

12865 배낭문제

해결됨

2주만에 통과하는 알고리즘 코딩테스트 (2024년)

안녕하세요! 제 6강을 수강하고 탑다운 DP 문제 중 냅색문제를 백준에서 풀었을 때 계속 런타임에러가 나네요 ㅠ 혹시 이유를 알 수 있을까요 ? 제가 작성한 코드는 다음과 같습니다. #물건의 수 n와 배낭의 무게 k n,k = map(int,input().split()) #순서대로 배낭의 무게 w와 가치 v item = [list(map(int,input().split())) for _ in range(n)] dp = [[-1 for _ in range(10*6)] for _ in range(n)] #모든 경우의 수 생각하기 def bag(idx , weight ) : if weight > k : return -999 if idx == n : return 0 if dp[idx][weight] != -1 : return dp[idx][weight] #물건을 넣은 경우와 넣지 않은 경우를 비교해준다 dp[idx][weight] = max( bag(idx+1 , weight + item[idx][0]) + item[idx][1] , bag(idx+1 , weight)) return dp[idx][weight] ans = bag(0,0) ans

  • python
  • 코딩-테스트
  • 알고리즘
리치리치뱅뱅 댓글 1 좋아요 1 조회수 543

12865

해결됨

2주만에 통과하는 알고리즘 코딩테스트 (2024년)

def recur(idx, weight): if weight > K : return -99999 if idx == N : return 0 if dp[idx][weight] != -1: return dp[idx][weight] dp[idx][weight] = max(recur(idx + 1, weight + items[idx][0]) + items[idx][1], recur(idx + 1, weight)) return dp[idx][weight] N,K = map(int,input().split()) items = [list(map(int,input().split())) for _ in range(N)] #무게를 고려해서 가치를 담는 dp테이블, 무게는 얼마든지 커질 수 있으므로 10만, 그리고 물건개수만큼 N 작성 dp = [[-1 for _ in range(100_001)] for _ in range(N)] print(recur(0,0)) recur(0,0) 재귀함수를 불렀는데 dp 테이블의 최대값이 찍히는게 잘 이해되지 않습니당...! 당연히 dp테이블에서 max값을 찾아 출력해야 하는 줄 알았는데, 코드를 보니 그냥 print(recur(0,0))을 하네욥..!

  • python
  • 코딩-테스트
  • 알고리즘
rmatlr0112 댓글 1 좋아요 2 조회수 396

재귀 경우의수 14501 퇴사문제

해결됨

2주만에 통과하는 알고리즘 코딩테스트 (2024년)

def recur(idx,money): global answer if idx == n: answer = max(answer, money) return if idx > n: return # idx 해당날에 상담 ㄱㄱ recur(idx + arr[idx][0], money + arr[idx][1]) # pass 하는날 recur(idx + 1, money) n = int(input()) arr = [[] for _ in range(n+1)] for i in range(n): t,p = map(int,input().split()) arr[i+1] = [t,p] answer = -999999 recur(1,0) print(answer) 위는 제 코드입니다. 이 코드를 백준에 제출하면 오답이 나옵니다. 테스트 케이스의 경우에는 맞았는데. 근데 위 코드에서 if에 해당하는 부분을 아래와 같이 고치면 정답이 나오더라고요. if idx == n+1: answer = max(answer, money) return if idx > n+1: return 제가 아직 재귀에 대한 완벽한 이해가 없고, 어떤 식으로 재귀함수가 동작하는 지는 정확히 몰라서 구글링을 통해 재귀 함수는 스택방식으로 작용한다라는 내용도 공부해보고 왜 n+1은 통과고 n은 실패인지 암만 생각해봐도 모르겠네요,, 도와주십시오!!

  • python
  • 코딩-테스트
  • 알고리즘
녜힁 댓글 1 좋아요 1 조회수 356

인기 태그

인프런 TOP Writers

주간 인기글