inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

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

1912번 DP테이블 N에서 끝나는, N까지 살펴 봤을 때 질문입니다.

해결됨

세계 대회 진출자가 알려주는 코딩테스트 A to Z (with Python)

안녕하세요 강의 듣다가 궁금한 점이 생겨서 질문 드립니다. DP 테이블을 생성할 때, N에서 끝나는, N까지 살펴봤을 때 로 보통 접근한다고 하셨는데, 모든 DP풀이에 해봄직한 생각이라고 보면 될까요? 테이블을 세우는게 뭔가 제 멋대로 세우는 것 같아서 어렵게 느껴지는 것 같습니다. 그리고 knapsack 같은 DP세우는게 쉽지 않던데, 어려운 DP문제들은 어떤 부분을 주목해서 DP테이블을 세우려고 집중하면 될까요? 풀면서 느끼는 점이 DP식을 잘못 세우면 완탐처럼 세우게 되는 것 같습니다.

  • python
  • 코딩-테스트
  • 알고리즘
lee 댓글 2 좋아요 0 조회수 230

머신러닝 모델 선택 방법

미해결

[개정판] 파이썬 머신러닝 완벽 가이드

안녕하세요 강사님. 강사님의 강의를 토대로 kaggle, dacon에서 제공하는 데이터를 가지고 분석을 하면서 궁금한 점이 생겼습니다. 데이터를 예측할 때 가장 좋은 모델을 비교를 하지 않고 선택할 수 있는 방법이 있을까요? 예를 들어 분류에서는 boosting 알고리즘에서도 XGBoost, LightGBM, CatBoost 등 여러 모델이 있는데 이 중에서 가장 좋은 모델 즉, 해당 데이터 셋에서 가장 적절한 모델을 찾을 수 있는 방법이 있을까요?? 데이터의 크기가 현재는 모든 모델을 사용하면서 성능을 비교할 수 있는 크기지만, 나중에는 매우 많은 데이터를 다루게 된다면 비교하기에 어려울 것 같다는 생각이 들어서 이렇게 질문을 남깁니다.

  • python
  • 머신러닝
  • 모델
  • 알고리즘
장태훈 댓글 2 좋아요 0 조회수 230

방법론 질문 있습니다

해결됨

세계 대회 진출자가 알려주는 코딩테스트 A to Z (with Python)

안녕하세요, 강의를 듣고 계신 여러분! 여러분의 학습을 돕기 위해 질문 안내를 드리고자 합니다. 1. chatGPT를 이용해보기 단순한 의문은 chatGPT를 이용해도 해답을 찾을 수 있는 경우가 종종 있습니다! 2. 강의의 어떤 부분에 대한 질문이고, 어떤 부분이 궁금한지 명확히 알려주세요! 강의의 어느 파트에서 의문을 느끼고, 어떤 부분이 궁금한지 를 명확히 제시해 주시면 답변에 도움이 됩니다! 자신은 어떻게 이해했는지 또한 적어주면 좋습니다! ex) 섹션5의 '그래프 순회 (DFS & BFS) [개념]' 강의 에서 DFS와 BFS 모두 그래프의 모든 노드를 탐색하는 알고리즘이라고 하셨고 시간 복잡도 또한 똑같다고 이해 했습니다. 그러면 DFS와 BFS 중에서 어떤 알고리즘이 더 효율적인지 구별하는 것은 의미가 없는 것일까요? 어느 파트 섹션5의 '그래프 순회 (DFS & BFS) [개념]' 강의 자신은 어떻게 이해했는지 DFS와 BFS 모두 그래프의 모든 노드를 탐색하는 알고리즘이라고 하셨고 시간 복잡도 또한 똑같다고 이해 어떤 부분이 궁금한지 DFS와 BFS 중에서 어떤 알고리즘이 더 효율적인지 구별하는 것은 의미가 없는 것일까요? 일단, 강의 내용에서 약간 벗어난 질문이긴 합니다. 백준 11054번 문제를 먼저 풀었는데, 선택하거나 선택하지 않았을 경우를 분리해서 dp1과 dp2를 튜플 쌍으로 갱신해주었는데요, 근데 딱히 필요가 없는데, 하던 대로 하게 된 것 같아서요,, 그래서, 질문은 `구현 없이 생각만으로 타당성을 따져보는 것이 엄밀하고 구체적으로 따져지지 않다보니 생각이 뭔가 추상적이고 편하거나 해오던 방식에서 벗어나지 못하는 것 같습니다. 구체성 있게 따져보는 방법과 정리에 대한 조언 부탁 드려도 될까요??`입니다. 항상 답변 감사합니다. 아래는 참고 코드입니다. #boj11054 import sys input = lambda : sys.stdin.readline().rstrip() n = int(input()) arr = list(map(int, input().split())) increase = [[0, 0] for _ in range(n)] decrease = [[0, 0] for _ in range(n)] total = [0 for _ in range(n)] for i in range(n): for j in range(i): if arr[j] < arr[i]: increase[i][0] = max(increase[i][0], increase[j][0] + 1) increase[i][1] = max(increase[j][0], increase[j][1]) for i in range(n, -1, -1): for j in range(n - 1, i, -1): if arr[i] > arr[j]: decrease[i][0] = max(decrease[i][0], decrease[j][0] + 1) decrease[i][1] = max(decrease[j][0], decrease[j][1]) for i in range(n): total[i] = max(increase[i][0], increase[i][1]) + max(decrease[i][0], decrease[i][1]) print(max(total) + 1)

  • python
  • 코딩-테스트
  • 알고리즘
zhu 댓글 2 좋아요 0 조회수 184

SortMain2 클래스의 DescComparator 메서드 return 부분이 수정되어야 할 것 같습니다.

미해결

김영한의 실전 자바 - 중급 2편

영한님 강의 너무 잘 보고 있습니다. 다름이 아니라 Comparator를 공부하며 혼자 이것저것 해보던 중에 SortMain2 클래스의 DescComparator 메서드가 3,2,1 배열을 정렬하면 오름차순 으로 정렬되는 것을 확인하여 문의 드립니다. static class DescComparator implements Comparator<Integer> { @Override public int compare(Integer o1, Integer o2) { System.out.println("o1=" + o1 + " o2=" + o2); return (o1 < o2) ? -1 : ((o1 == o2) ? 0 : 1) * -1; } } 강의에서는 오름차순 정렬된 1,2,3 배열을 내림차순 정렬해서 정렬이 문제가 없었지만 만약 3,2,1 배열을 내림차순 정렬 하게 된다면, return (o1 < o2) ? -1 : ((o1 == o2) ? 0 : 1) * -1; 첫번째 삼항 연산자 부분에서 앞에 o1, o2를 비교하고 -1 이 반환되며 오름차순으로 정렬 되는 것 같습니다. 리턴 부분이 전체 비교 값에 -1이 곱해질 수 있도록 return ((o1 < o2) ? -1 : ((o1 == o2) ? 0 : 1)) * -1; 로 수정 되어야 할 것 같아 문의 드립니다.

  • java
  • 객체지향
  • 코딩-테스트
  • 알고리즘
이준영 댓글 2 좋아요 1 조회수 249

노션이 사라졌습니다.

해결됨

코딩테스트 [ ALL IN ONE ]

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 혹시 노션 기간이 있는걸까요??? 갑자기 사라졌습니다. 다시 초대해주시면 감사드리겠습니다 ㅠㅠ

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

소리 크기 조정 문의

미해결

C++로 만들면서 배우는 게임 개발과 알고리즘 with Windows API

안녕하세요. 앞으로 강의가 많이 기대가 됩니다. 다름이 아니라 강의 소리가 매우 작은데, 조만간 개선 계획이 있으시다면 꼭 반영 해 주셨으면 합니다. 자막을 키지 않고는 수강이 어려울 정도입니다. 앞으로도 좋은 강의 잘 부탁드립니다. 감사합니다. 명절 잘 보내세요 ㅎㅎ

  • c++
  • 게임수학
  • 알고리즘
  • winapi
  • 게임-물리
배도협 Dohyup Bae 댓글 1 좋아요 0 조회수 241

2110번 문제 ispossible 함수 내부에서 조건문이 궁금합니다

해결됨

세계 대회 진출자가 알려주는 코딩테스트 A to Z (with Python)

안녕하세요 파라매트릭 서치 2110 풀다가 오답처리된 코드에 궁금한 점 생겨 질문드립니다. 정답처리된 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; import java.util.StringTokenizer; public class P2110 { static int N, C; static long result; static int[] home; static long parametricSearch() { long left=0; long right=home[N-1]-home[0]; long mid = (left+right)/2; while(left<=right) { if(isPossible(mid)) { left = mid+1; result = mid; } else { right = mid-1; } mid = (left+right)/2; } return result; } static boolean isPossible(long mid) { //그리디한판단 : 맨 첫번째를 두는게 이득 + 거리 mid만큼 떨어진 바로 다음 집에 두는게 이득 int cnt=1; int lastIdx=0; for (int i = 1; i < N ; i++) { if(home[i]-home[lastIdx]>=mid) { lastIdx=i; cnt++; } } return C<=cnt; } public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine()); N = Integer.parseInt(st.nextToken()); C = Integer.parseInt(st.nextToken()); home = new int[N]; for (int i = 0; i < N; i++) home[i] = Integer.parseInt(br.readLine()); Arrays.sort(home); System.out.println(parametricSearch()); } } 75%에서 오답처리된 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; import java.util.StringTokenizer; public class P2110 { static int N, C; static long result; static int[] home; static long parametricSearch() { long left=0; long right=home[N-1]-home[0]; long mid = (left+right)/2; while(left<=right) { if(isPossible(mid)) { left = mid+1; result = mid; } else { right = mid-1; } mid = (left+right)/2; } return result; } static boolean isPossible(long mid) { //그리디한판단 : 맨 첫번째를 두는게 이득 + 거리 mid만큼 떨어진 바로 다음 집에 두는게 이득 int cnt=1; int lastIdx=0; for (int i = 1; i < N ; i++) { if(home[i]-home[lastIdx]>=mid) { lastIdx=i; cnt++; } if(cnt==C) return true; } return false; } public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine()); N = Integer.parseInt(st.nextToken()); C = Integer.parseInt(st.nextToken()); home = new int[N]; for (int i = 0; i < N; i++) home[i] = Integer.parseInt(br.readLine()); Arrays.sort(home); System.out.println(parametricSearch()); } } 다른 부분은 전부 동일하고 최소거리가 mid일 때 공유기 C개를 두는 것이 가능한지 판별하는 isPossible 내부에서 return만 다릅니다. for (int i = 1; i < N ; i++) { if(home[i]-home[lastIdx]>=mid) { lastIdx=i; cnt++; } if(cnt==C) return true; } return false; 설치할때마다 cnt를 증가시키고, cnt==C가 되는 시점에 도달하면 어차피 현재의 mid로 공유기 C개를 두는게 가능하단 의미니까 true를 리턴해서 끝내고, cnt==C에 도달하지 못한다면 C보다 적은 개수만 설치할 수 있으니 false를 리턴한다고 작성했습니다. 반면에 강의안으로 제공해주신 코드에서는 반복문 안에서 판단해서 리턴하는 것이 아니라, 반복문 전부 돈 결과인 cnt와 C를 비교해서 리턴하는 것으로 이해했습니다. 정답풀이가 맞는 방식이라는 점은 이해가 가는데 오답풀이가 어떤 반례가 있는지는 잘 모르겠습니다

  • 코딩-테스트
  • 알고리즘
  • java
kje010907 댓글 2 좋아요 0 조회수 162

반복문 강의에서

해결됨

코딩테스트 [ ALL IN ONE ]

반복문 강의에서 다중반복문을 단축키로 한번에 만드시던뎅.. 어떤 단축키를 사용해야 하나요? c에서는 '*' 사용해서 했던 것 같은데.. 가물가물...

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

백준 2110문제

해결됨

세계 대회 진출자가 알려주는 코딩테스트 A to Z (with Python)

def is_possible(k): # return True if k이상이 가능하면 global N, C, arr bef_idx = 0 cnt = 1 for idx in range(1, N): if arr[idx] - arr[bef_idx] >= k: bef_idx = idx cnt += 1 return (cnt >= C) 파라매트릭문제인 2110문제에서 k가 1이라면 cnt는 5가되는거고(예제기준으로) cnt >= C라는기준이 사용해야하는 공유기 갯수(cnt) 그리고 주어진공유기 갯수(C)로 해석하면 cnt가 C보다 크거나 같으면 주어진공유기보다 많이사용한거니까 false가 나와야하지않나요??? 그러면 k=1일때는 공유기가3개주어졌는데 5개를써야하는데 k가 2일때부터 설명을 해주셔서 k=1일때의 설명이 없는이유가 궁금합니다

  • python
  • 코딩-테스트
  • 알고리즘
의성 댓글 2 좋아요 0 조회수 122

답을 보면서 공부하는 게 좋을까요?

해결됨

코딩테스트 [ ALL IN ONE ]

가끔 어려운 거는 답을 봐도 왜 이게 답인지 모르겠는 경우가 간혹 있는데요 여튼 코테 문제를 풀 때 너무 답이 안 나오면 답을 보는 게 좋을까요 아니면 붙잡는 게 좋을까요? 사람마다 다 이야기가 달라서 혼동이 됩니다.

  • python
  • 코딩-테스트
  • 알고리즘
박민호 댓글 2 좋아요 1 조회수 393

고급 BFS, DFS 는 어떻게 공부해야 할까요?

해결됨

세계 대회 진출자가 알려주는 코딩테스트 A to Z (with Python)

안녕하세요! 하반기 채용 때문에 코딩테스트 찾아보다가 제가 너무 원했던 강의라서 결제 후에 개념 위주로 빠르게 보는 중입니다. 요약하자면 코딩테스트에서 DFS나 BFS 문제들이 나올 시에 기본적인 내용 + 문제해결력(테크닉) 으로 나오는 것 같은데 테크닉 적인 부분은 어떻게 공부를 해야될까요? 가령 https://school.programmers.co.kr/learn/courses/30/lessons/1832 풀이를 찾아보면 3차원(checked)으로 풀면 풀리긴 하는데, 제 직관으로는 각 그래프 경로를 분리해낸다는 컨셉이 당연하게 느껴지지가 않더라구요. 이런 까다로운 문제를 상대하려면 어떤 부분이 잘 준비되어 있어야 할까요? 강의 중에 비슷한 문제가 있다면 그부분 해설강의 꼼꼼히 봐보려고 합니다

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

강의에 있는 c++ 자료는 공개 예정이 없나요?

해결됨

세계 대회 진출자가 알려주는 코딩테스트 A to Z (with Python)

c++로 코딩 테스트를 준비해야 되는데, 파이썬이라도 괜찮다고 생각해 결제하긴 했지만, 동영상에 c++ 자료가 보여서 혹시 질문 드립니다! 현재 노션에는 싹 빠져있는 것 같아서요 따로 공개는 되지 않나요?

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

공간 복잡도 1mb = 100만개 질문 드립니다!

해결됨

세계 대회 진출자가 알려주는 코딩테스트 A to Z (with Python)

제가 알기로는 int 자료형이 4바이트로 알고 있는데 보통 1바이트라고 하셔서 제가 오개념을 알고 있는 것 같은데 아무리 생각해도 맞지 않는 것 같아서 질문 드립니다! int 자료형인데 왜 1바이트인지 궁금합니다!

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

브루트 포스 BOJ 1182번에 관한 질문이 있습니다!

해결됨

세계 대회 진출자가 알려주는 코딩테스트 A to Z (with Python)

풀이 1번 (기본)에서 대부분의 코드를 이해했습니다. 그런데 # 인덱스가 lev인 원소 선택 X search(lev + 1) 에서 잘 이해가 되지 않습니다. 혹시 lev이 0일 경우인가요?

  • python
  • 코딩-테스트
  • 알고리즘
내꿈은프로틴부자 댓글 1 좋아요 0 조회수 111

제네릭클래스는 타입매개변수를 통해 타입을 결정하는데 이 타입을 메인에서 전달받는다면 의존성 주입과 IoC로 볼수 있나요?

미해결

김영한의 실전 자바 - 중급 2편

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 제네릭클래스는 타입매개변수를 통해 타입을 결정하는데 이 타입을 메인에서 전달받는다면 의존성 주입과 IoC로 볼수 있나요? 제가 생각하는 IoC는 한 오브젝트에서 무언가를 결정해야하는데 이것이 다른 오브젝트에 의해 결정되는 것입니다. 이때 제 기준으로는 제네릭클래스는 내부적으로 타입을 결정해야하지만 이 타입이 메인과 같은 함수에 의해 타입을 전달받아 전달받은 타입으로 타입을 결정하므로 IoC에 부합한다고 생각합니다. 또한 외부에서 타입을 주입받으므로 의존성 주입에도 부합하다고 생각합니다. 혹시 제 생각이 틀렸나요?

  • java
  • 객체지향
  • 코딩-테스트
  • 알고리즘
예비군갈나이 댓글 1 좋아요 1 조회수 172

해시 충돌 구현 링크드리스트 사용이유!

미해결

김영한의 실전 자바 - 중급 2편

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 안녕하세요! 강사님께서 링크드 리스트를 사용하시는 이유를 설명해주셨는데 잘 이해가 안가서 질문을합니다! 어레일이스트를 사용하는것보다 링크드 리스트를 사용하는 이유가.. 충돌?이 덜나서라고 하셨는데 이부분을 자세하게 설명해주실수있나요? 잘 이해가 안가네요 ㅜㅜ

  • java
  • 객체지향
  • 코딩-테스트
  • 알고리즘
냠냠냠 댓글 1 좋아요 1 조회수 212

String[]에서 for-each가 작동하는 이유는 뭔가요?

미해결

김영한의 실전 자바 - 중급 2편

[섹션 11. 순회, 정렬, 전체 정리] 강의를 들으면서 학습 자료에서 다음과 같은 내용을 볼 수 있었습니다. "자바는 Iterable 인터페이스를 구현한 객체에 대해서 향상된 for문을 사용할 수 있게 해준다" 근데, String[]에는 Iterable 인터페이스가 구현되어 있지 않은 것 같은데 어떻게 for-each를 사용할 수 있는지 궁금합니다.

  • java
  • 객체지향
  • 코딩-테스트
  • 알고리즘
레토 댓글 1 좋아요 1 조회수 208

다익스트라 코드 중에 궁금한 것이 있습니다.

해결됨

코딩테스트 [ ALL IN ONE ]

def dijkstra(graph, start, final): costs = {} # 방문 여부 pq = [] # 우선순위 큐 heapq.heappush(pq, (0, start)) # 시작 노드 추가 while pq: cur_cost, cur_v = heapq.heappop(pq) if cur_v == final: return cur_cost if cur_v not in costs: # 방문여부 확인 costs[cur_v] = cur_cost # 인접 노드 탐색하면서 비용 업데이트 for next_v, cost in graph[cur_v]: # 현재노드와 연결된 인접노드와 그 비용 next_cost = cur_cost + cost heapq.heappush(pq, (next_cost, next_v)) return costs[final] 정말 사소한건데요, while pq: 내용 중 for cost, next_v in graph[cur_v]: 를 for next_v, cost in graph[cur_v]: 로 고쳐도 되는지 묻고 싶습니다. 우선순위 큐는 비용을 기준으로 하니까 (E,V)가 맞는거 같은데요. 그래프가 G=(V,E) 수식을 따르다 보니까 그래프로 초기화할 때도 ("A", 3)과 같이 노드와 비용 순서대로 하잖아요? 그래서 이러한 논리를 for문에도 적용하면 훨씬 이해하기 쉽지 않을까 개인적으로 생각이 듭니다. (아! 이건 제 개인적인 생각이니 코드를 고쳐달라고 요구를 하는 건 절대 아닙니다 😅 )

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

14719

해결됨

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

텐트 세우기 문제 백준 14719 이 문제를 어떤 식으로 접근해서 누적합으로 풀어야할지 가이드 좀 주실 수 있을까요?

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

인기 태그

인프런 TOP Writers

주간 인기글