묻고 답해요
167만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨2026 코딩테스트 올인원 [JAVA]
[문제풀이] network delay time
학습 관련 질문을 남겨주세요. 구체적으로 적을수록 좋아요!마크다운과 단축키를 활용하면 글을 더 편하게 작성할 수 있어요.커뮤니티 질문 & 답변에 비슷한 내용이 있었는지 먼저 검색해보세요.편하게 질문주세요:) 직접 답변 드리도록 하겠습니다~정답 풀이 코드가 이상한거 같아요 ,,!e1[2] - e2[2] 로 코드를 구성하면 OutOfBound에러가 발생해요~e1[0] - e2[0] 이렇게 구성해야하는게 아닌가요 ? curCost + edge[0] 에서 edge[0]가중치가 아니라 출발 노드 이므로edge[2] 을 더 하는게 맞지 않나요? curCost + edge[2] new int[]{curNode, nextCost}큐에 {curNode, nextCost} 추가 → 배열 형식이 {cost, node}여야 하는데 순서와 값이 모두 잘못된거같은데 맞을까요 ?public class NetworkDelayTime { public int solution(int[][] times, int n, int k) { // 그래프 구현 Map<Integer, List<int[]>> graph = Arrays.stream(times) .collect(Collectors.groupingBy(t -> t[0])); // 다익스트라 알고리즘 Map<Integer, Integer> costs = new HashMap<>(); Queue<int[]> pq = new PriorityQueue<>((e1, e2) -> e1[0] - e2[0]); pq.add(new int[]{0, k}); while (!pq.isEmpty()) { int[] cur = pq.remove(); int curCost = cur[0]; int curNode = cur[1]; if (!costs.containsKey(curNode)) { costs.put(curNode, curCost); if (!graph.containsKey(curNode)) continue; for (int[] edge : graph.get(curNode)) { int nextCost = curCost + edge[2]; pq.add(new int[]{nextCost, edge[1]}); } } } // 방문 못한 노드 찾기 for (int node = 1; node < n + 1; node++) { if (!costs.containsKey(node)) { return -1; } } // 최소값중에서 최대값 구하기 return costs.values().stream() .mapToInt(Integer::intValue).max().getAsInt(); } public static void main(String[] args) { NetworkDelayTime solution = new NetworkDelayTime(); int[][] times = { {2, 1, 2}, {2, 3, 5}, {2, 4, 1}, {4, 3, 3} }; int result = solution.solution(times, 4, 2); System.out.println(result); } }이렇게 구현하니 제대로 돌아가서 문의드립니다
-
해결됨2026 코딩테스트 올인원 [JAVA]
위상정렬 구현 관련
package 위상정렬; import java.util.*; public class 위상정렬 { public int[] topologicalSort(int nodesNum, int[][] edges) { // 주어진 입력을 사용하기 편한 형태로 변경 -> 방향그래프로 변경 Map<Integer, List<Integer>> graph = new HashMap<>(); int[] indegree = new int[nodesNum]; // edges의 원소 [v, u]는 u -> v 의 방향을 가지 edge를 뜻한다. for (int[] edge : edges) { graph.putIfAbsent(edge[1], new ArrayList<>()); graph.get(edge[1]).add(edge[0]); indegree[edge[0]]++; } Queue<Integer> queue = new ArrayDeque<>(); boolean[] visited = new boolean[nodesNum]; int[] order = new int[nodesNum]; // 위상정렬을 수행한다. // indegree == 0 인 정점부터 탐색이 시작된다. int count = 0; for (int c = 0; c < nodesNum; c++) { if (indegree[c] == 0) { queue.add(c); visited[c] = true; order[count] = c; count++; } } while (!queue.isEmpty()) { int cur = queue.remove(); if (graph.containsKey(cur)) { // 해당 정점과 연결된 노드들의 진입차수에서 1빼기 for (int next : graph.get(cur)) { indegree[next]--; // 진입차수가 0이면 이제 방문해도 된다는 뜻이기 때문에 queue에 추가해준다. if (indegree[next] == 0) { visited[next] = true; order[count] = next; count++; queue.add(next); } } } } return order; } } 안녕하세요 ~ 위상정렬 관련해서 문의사항이 있어서요 ~ 다름이 아니라 강의의 구현 코드에서 visited를 체크를 하고 있던데 위상정렬의 경우 사이클이 없는 방향 그래프인데 visited가 필요할까요 ?? 현재 코드에서도 visited를 선언만 하고 따로 활용을 하고 있지 않은거같아서 문의 드립니다 ~
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
33강. UserLoanHistory의 관계성에 대한 질문
안녕하세요 선생님.강의를 듣던 중 궁금한 점이 생겨서 이렇게 글을 남기게되었습니다.UserLoanHistory라는 Entitiy는 강의에서 말씀하셨듯이 User와 ManyToOne의 관계를 가져가는데,이게 또 Book과의 관계를 보더라도 ManyToOne이 성립할수 있지 않나 싶습니다.(물론 UserLoanHistory의 변수로 pk인 bookId가 아닌 bookName을 쓰셔서 조금 다를수 있지만...) 따라서 user_loan_history 테이블을 설계할때 칼럼을 book_name이 아닌 book_id로 해서 만든다면 그게 좋은 선택일지 궁금합니다만일 1번의 테이블 설계가 나쁘지 않은 방식이라면 UserLoanHistory Entity에 Book에 대해서도 ManyToOne을 무조건 해주는게 좋은지,아니면 '유저'의 대출기록만 자주 쓰이고'책'의 대출기록은 거의 조회되지않을거 같으면 굳이 ManyToOne을 해줄 필요가 없을지 궁금합니다.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
src/test/resources 테스트 경로 문제
spring boot4 + 이클립스를 사용중입니다.src/test/resources 경로에 applicaion.yaml파일을 넣어도 인식을 못해서 3시간을 해맸습니다..구글링으로 java build path에서 설정 경로를 확인할 수 있다는 사실을 알게되었는데src/test/java 경로로 설정이 되어있더군요.여기 경로에 넣으니까 잘 작동됩니다.어째서 src/test/resources 경로가 기본값이 아니였던걸까요..
-
미해결김영한의 실전 자바 - 중급 2편
제네릭 타입 매개변수 제한과 관련한 문의입니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]영한님, 안녕하세요.강의를 들으며 부족하다고 느껴졌던 기본기를 덕분에 잘 습득하고 있습니다!타입 매개변수 제한 강의를 듣고 나서 궁금한 점이 생겨 Q&A를 남기게 되었습니다.제네릭을 도입하고 타입 매개변수를 제한함으로써,1. 코드의 재사용성 증가2. 타입 안정성 보장위 두 가지의 강력한 장점을 가진다는 부분을 잘 이해했습니다.다만, 클라이언트 코드에서 인스턴스를 생성하는 과정에 타입 매개변수를 아래와 같이 Animal로 지정하게 된다면 개발자의 실수가 발생할 수 있는 부분이 있다고 생각합니다.AnimalHospitalV3<Animal> animalHospital = new AnimalHospitalV3<>(); animalHospital.set(new Dog("dog", 100)); Dog biggerAnimal = (Dog) animalHospital.bigger(new Cat("cat", 100));위와 같은 코드는 다형성만을 사용하여 개션한 코드와 같이 Java 컴파일러가 잡아주지 못하고, 런타임 시점에 오류가 발생하게 됩니다. (Animal 클래스를 추상 클래스, interface로 선언해도 타입 인자로 지정하는 것을 막지 못합니다.)이런 상황일 때, 개발자의 실수를 최대한 방지할 수 있는 방법이 어떤 것이 있을지 궁금합니다.항상 좋은 강의 만들어주셔서 감사합니다.덕분에 잘 배우며 기본기를 다져가고 있습니다!
-
미해결죽음의 Spring Batch: 새벽 3시의 처절한 공포는 이제 끝이다.
[오타][3장][작전1] 형 이건 빨리 해줘
명령어에서 startDateTime, endDateTime 의 jobParameters 부재 코드에서 @StepScope 어노테이션과 startDateTime, endDateTime 의 jobParameters 파라미터 부재 1번은 다른 사람이 심지어 이전에 쓴 문제더라고 ? 아마 형이 반영 안한건 모아서 한번에 수정할 계획인거 같아 보이네.2번의 경우에는 @StepScope 도 빠져서 JobParameter 를 입력해도 오류가 발생했어. 또한 해당 메소드의 파라미터 부분을 1번과 마찬가지로 jobparameter로 받아야 할 것으로 보여져. 읽다가 하나씩 돌려보는데, 오류 터져서 놀라가지고 시간을 좀 썼어, 형. 1번은 내가 이해하는데, 2번은 형 실수가 좀 큰듯.
-
미해결김영한의 실전 자바 - 중급 2편
강의가 좀 버겁다 느껴질 때 학습방법 문의
기본기 부족한 n년차 개발자 입니다.입문, 기본, 중급1까지 완강했고, 현재 중급2 수강중입니다. (최종목표는 자바, 스프링, 데이터베이스 대부분의 강의를 로드맵 따라 익혀가는 것입니다.)컬렉션 프레임워크(ArrayList) 부분부터 좀 버거운 느낌이 있는데, 강의를 어설프게 이해하며 따라가고 있는 것 같아 문의드립니다. (사실 잘 이해 못하고 있는 걸지도...) 우선 강의 듣는 자세는 다음과 같습니다.하나하나 따라치며 강의를 듣기에는 오래 걸리고 하다가 지쳐서 중도포기 할 것 같아 강의를 쭉 돌려본다는 생각으로 학습하고 있습니다. (1배속) IDE에서 소스코드 열고 강의 들으면서 중간중간 눈으로 이해하며 넘어가고 있음 (부분적으로만 아조 조금씩 따라 치고 있음) 강의자료 설명 부분은 어느정도 이해가 가는데 코드 작성 부분에서는 조금 버겁게 느껴짐즉, 과연 내가 이 코드들을 작성할 수 있을까, 다음 강의들을 잘 따라갈 수 있을까 걱정되는 부분이 있음 어떻게 해야 잘 습득해갈 수 있을까요?강의는 더할 나위 없이 만족하고 있습니다
-
미해결2026 벼락치기 합격! 기출문제 집중 정보처리기사 실기
수업노션자료파일 자료 다운로드 건.
안녕하세요수업노션자료파일에 보면 자료 다운로드 가 있는데 받으면 empty zip 파일만 생깁니다. 파일 받을 수 없는건가요?
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
수정또는 삭제시 영속성 엔티티에 값이 무조건 있어야 하나요?
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예/2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 아니오[질문 내용]수정 또는 삭제시에 한번 find 메서드를 호출해서 select하여 데이터의 값을 영속성 컨텍스트에 올려놓은뒤에 수정 또는 삭제시에는 객체의 값만 바꾼후에 commit 을 통해 쿼리가 날라간다고 설명해주셨는데, 보통 수정또는 삭제시에 객체를 조회하지않고 바로 update 또는 delete 쿼리를 사용하는데jpa를 사용하면 무조건 find 메서드를 통해 select후에 update 또는 delete작업을 해야되는건가요?
-
미해결죽음의 Spring Batch: 새벽 3시의 처절한 공포는 이제 끝이다.
[오타] "리스너 활용: 시스템 완전 장악 매뉴얼" 부분
질문 가이드 읽고 삭제 후 오타제보 리스너 활용: 시스템 완전 장악 매뉴얼... 실행 결과에 따른 후속 처리: Job과 Step의 실행 상태를 리스너에서 직접 확인하고 그에 따른 조치를 수 있다.-> ~그에 따른 조치를 할 수 있다.-> 글자가 빠진듯?
-
미해결죽음의 Spring Batch: 새벽 3시의 처절한 공포는 이제 끝이다.
[오타] "JobScope와 StepScope 사용 시 주의사항" 부분
질문 가이드 읽고 삭제 후 오타제보 JobScope와 StepScope 사용 시 주의사항... 2. Step 빈에는 @StepScope와 @JobScope와를 사용하지 말라.-> @Step 빈에는 @StepScope 와 @JobScope 와를 사용하지 말라-> 말이 확실히 이상해
-
미해결죽음의 Spring Batch: 새벽 3시의 처절한 공포는 이제 끝이다.
spring boot 4 + spring batch 6 설정 변경?
형 스프링부트 4에서는 jdbc starter 추가 안하면 안되던데 뭐지```build.gradle.ktsdescription = "batch" dependencies { implementation("org.springframework.boot:spring-boot-starter-jdbc") implementation("org.springframework.boot:spring-boot-starter-batch") implementation("org.springframework.boot:spring-boot-h2console") runtimeOnly("com.h2database:h2") testImplementation("org.springframework.boot:spring-boot-starter-batch-test") }```implementation("org.springframework.boot:spring-boot-starter-jdbc")위 처럼 의존성 명시적으로 처리해주기 전에는 아래 에러떳었어.Could not autowire. No beans of 'PlatformTransactionManager' type found.
-
미해결얄코의 떠먹여주는 객체지향 디자인 패턴
강의 순서에 대한 궁금증
안녕하세요 얄코님객체지향 프로그래밍 섹션 수강 후 디자인 패턴 섹션을 수강하려 하는데 notion의 샘플 코드를 보면Creational PatternsStructural PatternsBehavioral Patterns으로 분류하여 나열해놓으셨는데, 강의 순서는 위의 분류와 상관없이 나열되어 있더라구요.강의 순서에 의도가 있을까요?별다른 의도가 없는 경우 위에서 분류된 패턴별로 강의를 들어볼까 하여 질문드립니다.
-
미해결14 days with Claude Code
이게 도대체 뭐죠?
이게 무엇인데 돈을 받고 설명하는거죠?설명은 맞는지 부터 ... 모르겠네요.
-
미해결토비의 클린 스프링 - 도메인 모델 패턴과 헥사고날 아키텍처 Part 1
헥사고날 아키텍처에서의 배치, 시큐리티, 비동기 이벤트 처리는 어떻게 하나요?
안녕하세요, 이번 강의를 통해 처음으로 헥사고날 아키텍처에 대해서 공부하고 있는 사람입니다. 헥사고날 아키텍쳐를 지키면서 배치, 시큐리티, 이벤트 처리 등등 다양한 기술을 어떻게 사용하나요?제가 공부해본 바로는1. 배치: 애플리케이션 계층에 배치를 통해 이루어질 api를 만들어두고, 어댑터 계층엔 배치(Job, Step, Writer, Reader등 )에 관한 설정들을 위치하게 한다.2. 시큐리티: 전부 어댑터에 위치한다. 이벤트 처리: 이벤트는 도메인으로 간주하고 도메인 계층에 위치시키고, 이벤트 리스너는 어댑터 계층에 위치시킨다. 이벤트를 발행시키는 로직은 애플리케이션 계층에 위치하고, ApplicationEventPublisher 같은 경우는 추상화됐다고 판단하고 그냥 사용하거나, 혹은 인터페이스를 따로 만들어서 사용한다.이정도인데 큰 흐름에서 제가 이해한 게 맞을까요? 특히 궁금한 건 "이벤트가 도메인으로 간주되어도 문제가 없는지" 입니다.(무조건 도메인이기 보다는 로직을 처리하기 위해 존재하는 dto로 볼 수도 있는 거 아닌가 싶어서요.)다른 기술들을 헥사고날 아키텍쳐에 적용시킬 때 주의할만한 사항들도 따로 존재를 할까요?
-
해결됨초심자를 위한 친절한 Java 한바퀴
다음을 위한 준비 알려주세요~
강의 잘 보았습니다!다음단계를 위해 다음 강의가 언제쯤 오픈예정이실지 궁금합니다.그리고 자바 -> 스프링 으로 가기위해서 준비해야하는 조언과 만약 다른강의를 추천해주실 수 있다면 어떤게 좋을지 알려주시면 감사하겠습니다~
-
해결됨(2026 최신!) 일주일만에 합격하는 정보처리기사 실기
이중배열
24:25에서 포인터를 쓰는 이유가 있나요?
-
해결됨(2026 최신!) 일주일만에 합격하는 정보처리기사 실기
hiding 질문
하이딩과 static, 상속 관련해서 질문이 있습니다.일반적인 상속 상황을 가정할 때부모, 자식에게 둘 다 있는 메서드(즉, 오버라이딩): 자식꺼 사용부모, 자식에게 둘 다 있는 static 메서드: 부모꺼 사용부모, 자식에게 둘 다 있는 변수: 객체의 자료형(Parent p = new Child();의 경우 Parent의 변수 사용, Child c = mew Child();의 경우 Child의 변수 사용)에 맞는 변수 사용이 맞을까요?
-
미해결김영한의 실전 자바 - 기본편
매서드 참조값 반환??
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.'클래스 도입'이라는 강의 16:25 쯤 강사님이"마치 method을 호출하고 반환한 것처럼 끝나고 나면 참조값을 딱 반환합니다. " 라고 하셨는데 매서드를 호출하고 반환할 때 원래 위치로 돌아가는 것이 참조값을 반환해서 라고 이해하면 될까요? 무슨 말인지 잘 이해가 안 됩니다.
-
미해결김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
모니터와 synchronized, ReentrantLock, 원자적연산 CAS관련해서 추가적으로 더 깊게 공부했는데 제가 이해한 것이 맞나요??
운영체제 관점의 실제 모니터 명세는 조건변수를 추가할 수 있습니다.synchronized는 자바가 구현한 모니터인데 조건변수의 추가가 불가능해서 생산자 소비자 문제를 해결할 수 없습니다.ReentrantLock은 자체적으로 구현한 락을 사용하지만 그 락의 구현은 실제 조건변수를 추가할 수 있는 모니터의 명세를 따르고 있어 모니터를 구현했다고 할 수 있습니다.모니터는 CAS를 내부적으로 사용합니다. CAS를 반복문으로 돌리며 바쁜대기를 하거나 Park로 락을 획득하고 반환합니다.원자적 연산도 CAS를 구현하지만 단순 속도가 synchronized와 ReentrantLock보다 더 빠른 이유는 락의 존재 유무입니다. 혹시 제가 이해한 내용들이 맞을까요?? 현재 81강까지 들었습니다!