묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨은행 서버 프로젝트 실습을 통해 배우는 코틀린 마스터 클래스
와 이리 게시판이 조용하노
이 강의 느낌 왔습니다.찍먹이 아닌 부먹하겠습니다.평일 저녁, 주말이 심심하지 않겠다 ㅎㅎ(벚꽃 어디갔노)강의 찍어주셔서 감사합니다.
-
미해결[Unity] 멀티플레이 게임 필수 기능 구현 - 서버 & 데이터 관리까지!
FirebaseUser null 문제
3:00에서 로컬에 UID가 저장되어 있는 경우, Early Exit 합니다. 이로인해 user(FirebaseAuth)가 할당되지 않습니다. 나중에 user를 참조할 경우 이 부분이 문제가 됩니다. 혹시 제가 놓치고 있는 부분이 있나요?
-
해결됨(2025) 일주일만에 합격하는 정보처리기사 실기
2024년 3회 10분 50초대 Python 질문
(기출) 2024년 3회 10분 50초대 Python 문제질문elif 문 type(value) == type(""): 에서"" 이거는 빈 문자열 같은데 이 경우에도 type이 'str'로 나오나요?C언어에서 빈 문자열은 NULL로 인식된다고 했던 거 같아 질문드립니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
8-F 유형의 문제를 풀 때 어려운 점
안녕하세요 큰돌님.8-F처럼 톱니바퀴나 다이얼을 돌려서특정한 상태로 만드는 데 필요한 최소 횟수를 구하는 문제를 풀 때 어려운 점이 있습니다.이런 문제의 풀이는 주로 왼쪽 아니면 위쪽부터 탐색을 진행해 답을 찾습니다.하지만, 저는 내심 이런 불안감이 듭니다.'만일 최적의 횟수가 맨 위가 아니라, 중간이나 맨 하단에서 다이얼을 돌리는 방법에서 비롯된 거면 어떡하지'.'현재 위치 N에서 다이얼을 맞추지 않고, 그 다음의 위치에 있는 다이얼을 먼저 맞춘 후, 다시 위치 N으로 돌아와서 다이얼을 맞추는 게 최적일 수도 있지 않을까.'위와 같이 다양한 가능성을 염두하니, 풀이법을 떠올리는 데 어려움이 많습니다.제가 문제를 접근하는 방식이 어디가 잘못되었는지, 어떻게 고쳐야 하는 지 궁금합니다
-
해결됨외워서 끝내는 네트워크 핵심이론 - 기초
host 내부 process 통신
127.0.0.1을 사용하면 DNS질의 없이 프로세스간 통신이 가능한 것으로 이해했습니다. 그런데 어떤 프로세스와 통신할지 127.0.0.1 뒤에 포트 번호도 있어야 TCP 소켓을 이용해서 통신이 가능한게 맞겠죠?
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
72강 method1Ref 질문
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (아니오)[질문 내용]아래에 public static int add(int a, int b) 이 부분에서 빨간줄이 그어지며 실행이 안되는 상황입니다. 해결방법이 있을까요?
-
미해결AI 에이전트로 구현하는 RAG 시스템(w. LangGraph)
에이전틱 루프에서의 병렬 노드 구현 문의
안녕하세요, 강사님워크플로우가 아닌 에이전틱 루프에서 병렬 노드 구현이 가능한지 문의드립니다. 구체적으로 다음과 같은 두 가지 시나리오에 대한 가능 여부가 궁금합니다 쿼리에 따라 1, 2번 작업을 순차적으로 진행한 후, 그 결과를 aggregate하여 3번으로 전달하는 방식1, 2, 3번 작업을 동시에 병렬로 수행한 후 한 번에 취합하는 방식 어떤 방식이 가능한지 조언 부탁드립니다. 감사합니다
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
백준 1911번 문제 정렬후 현재 위치를 갱신해가면서 찾을 수도 있지 않나요?
저는 물웅덩이가 시작되는 위치를 기준으로 정렬을 한 뒤에 현재 위치를 0으로 잡고 만약 물웅덩이가 시작되는 위치가 현재 위치보다 크다면 현재 위치는 물웅덩이 위치로 한뒤 현재 위치 = 현재 위치 + 널빤지 위치, 만약 현재 위치가 물웅덩이가 시작되는 위치보다 크고 물웅덩이가 끝나는 위치보다 작은 경우 현재 위치 = 현재 위치 + 널빤지 위치.이런식으로 현재 위치를 갱신해가면서 답을 구했는데 이 접근법은 이 문제에서만 유효한가요?아래는 자바 코드 입니다.package _5thweek; import java.util.PriorityQueue; import java.util.Scanner; public class Baekjoon1911 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int l = sc.nextInt(); PriorityQueue<int[]> pq = new PriorityQueue<>((a, b) -> { if (a[0] > b[0]) { return 1; } else if (a[0] < b[0]) { return -1; } return 0; }); for (int i = 0; i < n; i++) { int start = sc.nextInt(); int finish = sc.nextInt(); pq.add(new int[]{start, finish}); } int ans = 0; int cur = 0; while (!pq.isEmpty()) { int[] poll = pq.poll(); int start = poll[0]; int end = poll[1]; while (cur < end) { if (cur < start) { cur = start; } ans += 1; cur += l; } } System.out.println(ans); } }
-
미해결스프링 핵심 원리 - 기본편
초기화 콜백과 생성자 DI
[질문 템플릿]1. 강의 내용과 관련된 질문인가요?예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]안녕하세요, 빈 생명주기 콜백에서 질문이 생겨 여쭤봅니다.이전 강의에서는 '생성자 주입'을 사용하는 것이 좋다고 하셨는데, 이번 NetworkClient 클래스에서는 setter로 DI를 하시면서 스프링 빈의 이벤트 라이프사이클을 설명해주고 계십니다.그러면, 생성자 주입으로 의존관계를 주입할 경우 이번 강의 주제인 '초기화 콜백'은 동작하지 않는 것일까요 ?설명해주신 스프링 빈의 이벤트 라이프사이클이 생성자DI 기준에서는컨테이너 생성 -> 빈 생성,의존관계 주입 -> 사용 -> 종료가 되는 것일까요 ? 혹여나 제가 잘못 이해하고 있는 부분이 있다면 지적 부탁드립니다, 좋은 강의 제공해주셔서 항상 감사드립니다 !!
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
중복_회원_예외 에서 예외가 안터지는 문제 + 터미널에서 해보세요
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]선생님 질문이 있는데요중복 회원 예외에서예외가 안터지고 그냥 테스트를 성공해버립니다 뭐가 문제일까요? 아래 구글 드라이브 링크 걸어뒀습니다.@Test public void 중복_회원_예외() throws Exception { //given Member member1 = new Member(); member1.setName("kim"); Member member2 = new Member(); member2.setName("kim"); //when memberService.join(member1); memberService.join(member2); //then fail("예외가 발생해야 한다."); }예외가 발생하지 않습니다. 코드 압축해서 드라이브에 올렸습니다. https://inf.run/CFDK6
-
미해결이득우의 언리얼 프로그래밍 Part1 - 언리얼 C++의 이해
디버깅 및 빌드가 갑자기 안됩니다 ㅠ
갑자기 디버깅 및 빌드가 안됩니다 ㅠㅠ
-
해결됨김영한의 실전 자바 - 고급 2편, I/O, 네트워크, 리플렉션
instance의 다운캐스팅 문제
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용]지금 강의에서 instance를 이런식으로 선언해서 사용하고 있습니다. Object instance = constructor.newInstance("hello"); 이렇게 사용한다는건 instance가 Object타입으로 선언이 된거고 그렇다면 BasicData로 다운캐스팅을 해준 후에 call 메서드를 불러야 맞는게 아닌가요? 이게 Object 타입인데 call 메서드가 문제 없이 작동하는게 조금 괴리감이 들어서 질문드립니다..!
-
미해결쿠버네티스 어나더 클래스-Sprint 1, 2 (#실무기초 #설치 #배포 #Jenkins #Helm #ArgoCD)
소스파일이 안가져와지네요?
jenkinsfile을 보면코드가 주신대로 아래와 같고요여기에서 [소스파일 체크아웃] 부분이 지나면 jenkins디렉토리 workspace 밑으로 해당 소스파일이 가져와서 폴더가 생성되어야 하는게 아닌지..궁금합니다. 폴더가 일단 생성이 안되구요...맨밑에 이미지 추가한것처럼 helm쪽 파일만 릴리즈파일 체크아웃통해 받아진것 같아요.또한가지는 [소스빌드] 스텝인데 echo로만 그냥 찍는거지 실제 빌드하는거 아니죠?체크아웃자체도 안받아져서 빌드도 안될것 같구요.마지막으로 [컨테이너빌드] cp부분도 echo로 찍는부분이지 실제 copy명령어를 실행하는것도 아니고..그런데 docker build 명령어는 실제로 하는데...위에서 빌드도 문자열만 찍는거고 ...소스도 안받아졌는데 어떻게 docker build는 또 실제로 할수잇는지도 궁금합니다. stage('소스파일 체크아웃') { steps { // 소스코드를 가져올 Github 주소 git branch: 'main', url: 'https://inf.run/M45Zm' } } stage('소스 빌드') { steps { // 755권한 필요 (윈도우에서 Git으로 소스 업로드시 권한은 644) echo "chmod +x ./gradlew" echo "gradle clean build" } } stage('릴리즈파일 체크아웃') { steps { checkout scmGit(branches: [[name: '*/main']], extensions: [[$class: 'SparseCheckoutPaths', sparseCheckoutPaths: [[path: "/${CLASS_NUM}"]]]], userRemoteConfigs: [[url: "${GITHUB_URL}"]]) } } stage('컨테이너 빌드') { steps { // jar 파일 복사 echo "cp ./build/libs/app-0.0.1-SNAPSHOT.jar ./${CLASS_NUM}/build/docker/app-0.0.1-SNAPSHOT.jar" // 도커 빌드 echo "docker build -t ${DOCKERHUB_USERNAME}/api-tester:v1.0.0 ./${CLASS_NUM}/build/docker" } }
-
해결됨(2025) 일주일만에 합격하는 정보처리기사 실기
업캐스팅 문제 예시 3번 11:50
코드상 자식에서 draw를 없애면 부모의 draw를 실행하게되어 계속 무한반복인데,무한반복이 없다고 치고 자식클래스의 this.draw는 출력이 어떻게 되는지 궁금합니다.
-
해결됨딥러닝을 활용한 자연어 처리 (NLP) 과정 (기초부터 ChatGPT/생성 모델까지)
강의 교재 최신화 요청
강의에 나오는 내용과 교재 내용의 차이가 있습니다.교재 최신화 부탁드립니다.
-
미해결한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지
[9.2 투두리스트 업그레이드] id undefined
안녕하세요. 투두리스트 업그레이드 중 "UPDATE" 에서 질문있습니다.업그레이드 하며 체크박스를 선택했을 때 다음과 같은 오류가 발생합니다.업그레이드 이전까지는 잘 돌아가서 업그레이드 하며 오타 문제가 아닐까 하는데 원인을 찾기가 어려워 질문 드립니다.. ㅜ APP.jsx 와 List.jsx 코드 올려드립니다.- APP.jsximport "./App.css"; import Header from "./components/Header"; import Editor from "./components/Editor"; import List from "./components/List"; import { useState, useRef, useReducer } from "react"; const mockData = [ { id: 0, isDone: false, content: "Study React.js", date: new Date().getTime(), }, { id: 1, isDone: false, content: "do laundry", date: new Date().getTime(), }, { id: 2, isDone: false, content: "wanna go home", date: new Date().getTime(), }, ]; function reducer(state, action) { switch (action.type) { case "CREATE": return [action.data, ...state]; case "UPDATE": return state.map((item) => { item.id === action.targetId ? { ...item, isDone: !item.isDone } : item; }); case "DELETE": return state.filter((item) => item.id !== action.targetId); default: return state; } } function App() { const [todos, dispatch] = useReducer(reducer, mockData); const idRef = useRef(3); const onCreate = (content) => { dispatch({ type: "CREATE", data: { id: idRef.current++, isDone: false, content: content, date: new Date().getTime(), }, }); }; const onUpdate = (targetId) => { dispatch({ type: "UPDATE", targetId: targetId, }); }; const onDelete = (targetId) => { dispatch({ type: "DELETE", targetId: targetId, }); }; return ( <div className="App"> <Header /> <Editor onCreate={onCreate} /> <List todos={todos} onUpdate={onUpdate} onDelete={onDelete} /> </div> ); } export default App; List.jsx import "./List.css"; import TodoItem from "./TodoItem"; import { useState } from "react"; const List = ({ todos, onUpdate, onDelete }) => { const [search, setSearch] = useState(""); const onChangeSearch = (e) => { setSearch(e.target.value); }; const getFilteredData = () => { if (search === "") { return todos; } return todos.filter((todo) => todo.content.toLowerCase().includes(search.toLowerCase()) ); }; const filteredTodos = getFilteredData(); return ( <div className="List"> <h4>Todo List 🎈</h4> <input value={search} onChange={onChangeSearch} placeholder="검색어를 입력하세요" /> <div className="todos_wrapper"> {filteredTodos.map((todo) => { return ( <TodoItem onDelete={onDelete} onUpdate={onUpdate} key={todo.id} {...todo} /> ); })} </div> </div> ); }; export default List;
-
해결됨(2025) 일주일만에 합격하는 정보처리기사 실기
2024년 2회 기출문제 (43분대, Java 문제)
(기출) 2024년 2회 기출문제(영상) 43분대질문return 값이 dcba가 되는 것이 이해가 잘 되지 않습니다. 1) 코드 흐름을 보면 처음에 result - comp(str, 7, seen); 실행 2) idx가 0보다 크므로, char c = str.charAt(7) 즉 여기서 char c는 d가 됨 3) 그리고 String result = comp(str, 6, seen)으로 comp 함수를 다시 부르는 거죠? (재귀함수) 4) if (!seen[c])는 seen[d]는 처음에는 False이므로, !를 만나 True 5) result = d + result 6) char c = str.charAt(6) 이제 char c는 c가 됨 // 3번에서 호출한 재귀함수 실행 7) 이런식으로 해서 처음 들어오는 값만 result에 저장되다 보니 dcba가 출력되는게 맞나요? 추가로 재귀함수를 만나면 아래 if문은 재귀함수가 모두 끝난 이후에 진행되는 것인지, 병렬(?)로 진행되는 것인지 궁금합니다.
-
해결됨(2025) 일주일만에 합격하는 정보처리기사 실기
쓰레기값
#include <stdio.h> int intArr[5]; // int형 배열 float floatArr[5]; // float형 배열 double doubleArr[5]; // double형 배열 char charArr[5]; // char형 배열 int main() { printf("int 배열 초기값: "); for (int i = 0; i < 5; i++) { printf("%d ", intArr[i]); } printf("\n"); printf("float 배열 초기값: "); for (int i = 0; i < 5; i++) { printf("%f ", floatArr[i]); } printf("\n"); printf("double 배열 초기값: "); for (int i = 0; i < 5; i++) { printf("%lf ", doubleArr[i]); } printf("\n"); printf("char 배열 초기값: "); for (int i = 0; i < 5; i++) { printf("%d ", charArr[i]); // %d로 출력하면 ASCII 값이 출력됩니다 } printf("\n"); return 0; } 에서 출력값이 쓰레기값이 나온다고 하셨는데 출력값으로 작성해 놓으신거는 그냥 임의로 쓰레기값 형태로 작성해놓으신거죠?
-
미해결비전공자도 이해할 수 있는 AWS 입문/실전
완강 처리가 되지 않습니다.
강사님 모든 학습을 들었지만,완강 처리가 되지 않습니다.
-
해결됨코딩없이 시작하는 엑셀 크롤링. WEB부터 ChatGPT API까지
새로운 조달청 버전으로 다시 알려주실 수 있을까요?
간절합니다. ㅠ