묻고 답해요
163만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결38군데 합격 비법, 2025 코딩테스트 필수 알고리즘
Linked List Element Delete Explanation Problem
1. 현재 학습 진도몇 챕터/몇 강을 수강 중이신가요?어떤 알고리즘을 학습하고 계신가요?여기까지 이해하신 내용은 무엇인가요? 2. 어려움을 겪는 부분어느 부분에서 막히셨나요?코드의 어떤 로직이 이해가 안 되시나요?어떤 개념이 헷갈리시나요? 3. 시도해보신 내용문제 해결을 위해 어떤 시도를 해보셨나요?에러가 발생했다면 어떤 에러인가요?현재 작성하신 코드를 공유해주세요 이렇게 구체적으로 알려주시면, 더 정확하고 도움이 되는 답변을 드릴 수 있습니다! 😊 아래 코드(TODO; 제가 만든 삭제코드, 정답지; 제공된 교재 답 풀이본) 에 대해 문의드립니다. 5,9,12,27 일때 정답지를 통해 결과를 뽑아보면 삭제가 안되는 현상이 일어납니다. 이와 관련해 어떻게 생각하실지 여쭙습니다!class Node: def __init__(self, data): self.data = data self.next = None class LinkedList: def __init__(self, value): self.head = Node(value) def append(self, value): cur = self.head while cur.next is not None: cur = cur.next cur.next = Node(value) def print_all(self): cur = self.head while cur is not None: print(cur.data) cur = cur.next def get_node(self, index): node = self.head count = 0 while count < index: node = node.next count += 1 return node def add_node(self, index, value): new_node = Node(value) if index == 0: new_node.next = self.head self.head = new_node return node = self.get_node(index - 1) next_node = node.next node.next = new_node new_node.next = next_node # def delete_node(self, index): # TODO # if index == 0: # 첫번째 노드를 불러와야 출력이 가능하므로 0번째 인덱스를 제거하려고하면 1번쨰 인덱스를 head로 지정 # self.head = self.head.next # return # before_node = self.get_node(index-1) # 1. 제거해야할 노드 이전 노드 찾기 # delete_node = self.get_node(index) # before_node.next = delete_node.next # 2. 이전 노드 next를 제거할 노드의 next로 # delete_node.next = None # 3. 제거할 노드의 next 를 None # return "index 번째 Node를 제거해주세요!" def delete_node(self, index): # 정답지 if index == 0: # 첫번째 노드를 불러와야 출력이 가능하므로 0번째 인덱스를 제거하려고하면 1번쨰 인덱스를 head로 지정 self.head = self.head.next return before_node = self.get_node(index-1) # 1. 제거해야할 노드 이전 노드 찾기 before_node = before_node.next.next return "index 번째 Node를 제거해주세요!" linked_list = LinkedList(5) linked_list.append(9) linked_list.append(12) linked_list.append(27) print("제거 전") linked_list.print_all() print("제거 후") linked_list.delete_node(3) linked_list.print_all()
-
미해결원클릭으로 AI가 생성해주는 Youtube 쇼츠 만들기 자동화(with n8n)
EDIT 영상편집요청 에러
사진과 같이 Bad request - please check your parameters [item 0]400 - "{\"hint\":\"No template was found with that ID.\",\"documentation\":\"https://creatomate.com/docs/api/quick-start/introduction\"}"라고 뜹니다 뭐가 문제일까요 ??
-
미해결한 입 크기로 잘라먹는 실전 프로젝트 - SNS 편
참고 소스 질문
이번 강의를 통해 만든 소스를 github에 있나요? 있으면 링크 알려주세요.
-
미해결[AUTOSAR] 신입사원에게 들려주는 AUTOSAR기초 개념 완성
플랫폼
Application layer를 제외한 RTE, BSW 영역을 플랫폼이라고 하는건가요?
-
미해결한시간만에 끝내는 영어 : 시드니개발자의 영어PT
생략 여부
관계부사는 대상이 나와도 생략이 안되는건가요? 관계부사랑 관계대명사는 다른건가요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
테스트 관련 공부에 대한 조언을 얻고 싶습니다
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 아니오2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]솔직히 강의에 관련된 질문과는 거리가 먼 내용이어서 질문을 해야 하나 말아야 하나 고민하다가 결국 질문하는 게 좋겠다고 생각되어 질문을 올립니다. 강의 중에 강사님께서 중간중간에 test관련 공부를 열심히 해야한다고 하셨는데 혹시 어떤 식으로 공부해야 하는지 그리고 강사님께서는 어떻게 하셨는지, 또 추천하시는 서적이 있다면 그 서적의 제목이 어떻게 되는지 알고 싶습니다.
-
미해결모던 웹 인터렉티브 CSS3 부트캠프 [Full vers.]
수강 기한 연장 문의
쌩초보, 비전공자를 위한 [HTML 스타터] 부트캠프모던 웹 인터렉티브 CSS3 부트캠프 [Full vers.][자바스크립트부터 리액트까지] 포기없는 React로 가는 길 [Full vers.] 이렇게 강의를 수강 중입니다. 수강 기한을 무제한으로 연장시켜주시면 감사하겠습니다!
-
미해결신입사원에게 들려주는 - MCU SW 직무 기초 개념완성
PWM
PWM 관련 강의가 있을까요? 아님 제작중이신가요?
-
미해결[2026년 빅분기 실기 준비] 빅데이터 분석 기사 실기 시험 100% 합격 ! 기출 문제의 패턴이 보인다 !
수강 기한 연장 문의
안녕하세요, 강사님.강의의 수강 기한이 곧 만료되어 문의드립니다.최근 1년간 다른 직종에 관련된 일을 하느라 강의를 거의 수강하지 못했습니다.이번 연도에 강의를 들으며 빅데이터분석기사 실기를 준비하고 싶은데, 혹시 수강기한을 연장해 주실 수 없을까요?제 메일은 ksforuo@gmail.com 입니다.
-
미해결[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
수강 기한 연장 문의
안녕하세요, 강사님.강의의 수강 기한이 곧 만료되어 문의드립니다.최근 1년간 다른 직종에 관련된 일을 하느라 강의를 거의 수강하지 못했습니다.이번 연도에 강의를 들으며 빅데이터분석기사 실기를 준비하고 싶은데, 혹시 수강기한을 연장해 주실 수 없을까요?제 메일은 ksforuo@gmail.com 입니다.
-
미해결모의해킹 실무자가 알려주는, 파일 다운로드 취약점 공격 기법과 실무 사례 분석
26.01.10 기준 해당 설정은 안해주어도 되나요?
xss 강의 부터 구매하여 수강중입니다.xss 강의에서는 APM Setup에서 랜섬웨어 취약점으로 인해 WAMP로 변경하여 진행해주셨는데 APM Setup 굳이 설치 안하고 진행하여도 되는지 여부와 magic_quotes_gpc 설정이 PHP 최신버전에서 지원 안하는 기능으로 파악하였으니 그대로 진행하여도 문제 없는지 궁금합니다.
-
미해결CS 지식의 정석 | 디자인패턴 네트워크 운영체제 데이터베이스 자료구조
Path MTU 발견하였음에도 패킷 분할이 필요한 이유?
안녕하세요! MTU 강의를 듣다가 이해하지 못한 부분이 있어 질문드립니다. 교재에,"데이터는 전송 전에 패킷 단위로 쪼개지며, 이때 MTU를 기준으로 크기가 결정됩니다" 부분을 읽고 처음 패킷을 만드는 시점 즉, "전송 전"에 이미 PMTUD를 통해 '최대 패킷 크기'를 파악하고 그에 맞춰 패킷 크기를 정했다고 이해했습니다. 그런데 그렇다면 이후 패킷 분할하는 과정은 원래 필요가 없는 거 아닌가요??처음 패킷이 생성되는 시점에 이미 Path MTU에 맞춰서 패킷이 생성되었을거라 생각했습니다.
-
미해결스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
path 쿼리 관련 질문드립니다!
학습 관련 질문을 최대한 상세히 남겨주세요!고민 과정도 같이 나열해주셔도 좋습니다.먼저 유사한 질문이 있었는지 검색해보세요.인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요!20:15 경 작성해주신 findByPath 의 함수에서article_id 의 경우 함께 조회할 필요가 없나요?이전에 생성했던 unique index 구조를 생각해보면 article_id 와 path 2개로 복합 인덱스를 생성하였기 때문에 게시글마다 path 에 대한 unique 함을 보장하는 것이기 때문에 조회 시에 findByArticleIdAndPath 과 같은 식으로 해야 할 것 같은데, 제가 잘못 이해한 부분이 있는지 궁금합니다!
-
미해결쉽게 시작하는 쿠버네티스(v1.30) - {{ x86-64, arm64 }}
deployment 관련 문의
질문 답변을 제공하지만, 강의 비용에는 Q&A는 포함되어 있지 않습니다. 다만 실습이 안되거나, 잘못된 내용의 경우는 알려주시면 가능한 빠르게 조치하겠습니다![질문 전 답변]1. 강의에서 다룬 내용과 관련된 질문인가요? [예 | 아니요]2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? [예 | 아니요]3. 질문 잘하기 법을 읽어보셨나요? [예 | 아니요](https://inf.run/DvsRD)4. 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.5. vagrant up 에서 발생하는 문제는 주로 호스트 시스템(Windows, MacOS)과 연관된 다양한 조건에 의해 발생합니다. 따라서 이를 모두 제가 파악할 수 없어서 해결이 어렵습니다. vagrant up으로 진행이 어렵다면 제공해 드리는 가상 머신(VM) 이미지를 import해서 진행하시기 바랍니다. (https://inf.run/Ljaer)[질문 하기]안녕하세요. 얼마전에 OVA 인증서 관련하여 질문드렸었고, 해당 부분 수정조치를 통해서 해결했고 지금은 잘 수강중인 수강생입니다.이번엔 조금 다른 인증 문제로 추측되는 부분이 보여 문의드리고자 합니다. 지금 발생한 문제는 Deployment로 생성한 nginx Pod가 ContainerCreating 상태에서 멈춰 있고, 아무리 기다려도 컨테이너가 뜨지 않는 현상입니다.Pod는 w2-k8s 노드로 정상 배치되었지만, 컨테이너 실행 직전 단계에서 계속 실패하는 중이며 직접적인 에러는 Pod sandbox 생성 실패로 보입니다.FailedCreatePodSandBox 이벤트와 함께, Calico CNI가 Pod 네트워크를 구성하는 과정에서 kube-apiserver 접근 권한이 거부되고 있는게 맞나 모르겠습니다만 이런저런 검색을 통해 확인해본 결과Calico 자체가 죽어 있거나 미배포된 문제는 아닌 것 같습니다.calico-node와 calico-kube-controllers Pod는 전 노드에서 모두 Running 상태였고, 프로세스는 살아 있어 보이는데 클러스터 인증이 정상이지 않은 것은 아닌가.. 하여 문의드립니다.Calico의 API 요청이 현재 kube-apiserver 인증 정보와 맞지 않아 거부되고 있는건지 맞다면 이것도 지난번 인증문제의 연장선인지 궁금합니다. root@cp-k8s:~# kubectl create deployment deploy-nginx --image=nginx deployment.apps/deploy-nginx created oot@cp-k8s:~# kubectl get pods NAME READY STATUS RESTARTS AGEchk-info 1/1 Running 1 (2d23h ago) 3d21hdeploy-nginx-74d7d6d848-qfm9t 0/1 ContainerCreating 0 9m2snginx 1/1 Running 1 (2d23h ago) 3d21h deployment 배포 시 계속 creating 중인것을 확인하여 이것저것 확인해보았습니다. root@cp-k8s:~# kubectl describe pod deploy-nginx-74d7d6d848-qfm9t Name: deploy-nginx-74d7d6d848-qfm9tNamespace: defaultPriority: 0Service Account: defaultNode: w2-k8s/192.168.1.102Start Time: Sat, 10 Jan 2026 19:55:18 +0900Labels: app=deploy-nginx pod-template-hash=74d7d6d848Annotations:Status: PendingIP:IPs:Controlled By: ReplicaSet/deploy-nginx-74d7d6d848Containers: nginx: Container ID: Image: nginx Image ID: Port: Host Port: State: Waiting Reason: ContainerCreating Ready: False Restart Count: 0 Environment: Mounts: /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-8xmt6 (ro)Conditions: Type Status PodReadyToStartContainers False Initialized True Ready False ContainersReady False PodScheduled TrueVolumes: kube-api-access-8xmt6: Type: Projected (a volume that contains injected data from multiple sources) TokenExpirationSeconds: 3607 ConfigMapName: kube-root-ca.crt ConfigMapOptional: DownwardAPI: trueQoS Class: BestEffortNode-Selectors:Tolerations: node.kubernetes.io/not-ready:NoExecute op=Exists for 300s node.kubernetes.io/unreachable:NoExecute op=Exists for 300sEvents: Type Reason Age From Message ---- ------ ---- ---- ------- Normal Scheduled 9m42s default-scheduler Successfully assigned default/deploy-nginx-74d7d6d848-qfm9t to w2-k8s Warning FailedCreatePodSandBox 9m41s kubelet Failed to create pod sandbox: rpc error: code = Unknown desc = failed to setup network for sandbox "00b664464bf90cf3b54ba9fc929062889571285e8bf0c25021b3a66691fd3f7f": plugin type="calico" failed (add): error getting ClusterInformation: connection is unauthorized: Unauthorized Normal SandboxChanged 4m30s (x25 over 9m41s) kubelet Pod sandboxchanged, it will be killed and re-created.root@cp-k8s:~# kubectl get pods -n kube-system | grep calico calico-kube-controllers-546f76d588-pft8d 1/1 Running 2 (2d23h ago) 11dcalico-node-98wj4 1/1 Running 2 (2d23h ago) 11dcalico-node-99qnn 1/1 Running 2 (2d23h ago) 11dcalico-node-mpfgs 1/1 Running 2 (2d23h ago) 11dcalico-node-qtflz 1/1 Running 1 (2d23h ago) 11d
-
미해결[Season 2] Spring AI 실전: Multi AI 에이전트 시스템 개발
강의 자료 질문
안녕하세요. 혹시 1탄처럼 pdf 파일로 전체 코드랑 설명하는 자료는 없나요?
-
해결됨[매일 완독 챌린지] 저자와 함께하는 <FastAPI로 기획에서 출시까지>
4주 2회차 과제
안녕하세요. 과제를 잘 못 이해한건가 싶기도 하지만 아래와 같은 조건하에 구현을 해 봤습니다. 수업 과정에서 Front-end는 고정인 상황이기 때문에 기존 API는 변경이 없다는 가정하에 변경 해 봤습니다. 시간대1개와 요일n개의 설정이 하나의 row로 묶여있는 상태로는 요일별 시간대 변동에 대응하기 까다로운 것 같아 요일별 개별 row로 저장하도록 일부 수정 하였습니다. API endpoint 모델 변경을 피하기 위해서 내부적으로 여러개의 요일별 row로 나누어 저장하도록 했습니다. 고민중에 작가님께서 올려 놓으신 레퍼런스 코드를 봤는데, 책에서 언급하신 것 처럼 postgres 경우와 sqlite 경우로 코드가 분기 되는 것을 보았고, 지금은 교육 과정이기 때문이라고 생각 하지만 배포 코드와 개발 환경 코드가 다른것은 여러모로 좋지 않은 것 같아 현재는 sqlite 기준으로 개별 DB구현에서만 지원하는 것은 배제하는 방향으로 구현 했습니다. 1과 같이 변경 함으로써, 기 등록된 정보의 수정에서는 개별 날짜 별 시간대 설정 면에서 자유도가 생겼다고 생각 됩니다.타임슬롯의 변경과 삭제에 관해서는 내부적으로는 time-slot으로 관리하지만, 외부공개 id는 아니므로, 키 로서 start-time, end-time, weekday (API형태로서는 리스트)조합으로 정의 해서 동작 하도록 구현했습니다.특히 삭제의 경우는 부득이 delete method의 경우는 payload가 포함되는것이 받아들여지지 않는 경우도 있는것을 고려해서, 새 등록 값 두가지(new_start_time과, new_end_time) 값이 모두 제공되고 같은 경우를 특정하여 삭제 동작으로 정의하여 동작하도록 구현했습니다. class TimeSlotUpdateByGroupIn(SQLModel): start_time: time end_time: time weekdays: Weekdays new_start_time: time | None = None new_end_time: time | None = None new_weekdays: Weekdays | None = None @model_validator(mode="after") def check_update_fields(self): update_fields = { "new_start_time": self.new_start_time, "new_end_time": self.new_end_time, "new_weekdays": self.new_weekdays, } if not any(value is not None for value in update_fields.values()): raise ValueError("최소 하나의 수정 필드는 반드시 제공되어야 합니다.") return self @router.post("/time-slots", status_code=status.HTTP_201_CREATED, response_model=TimeSlotOut) async def create_time_slot( user: CurrentUserDep, session: DbSessionDep, payload: TimeSlotCreateIn, ) -> TimeSlotOut: if not user.is_host: raise GuestPermissionError() weekdays = sorted(set(payload.weekdays)) # dup. check with already exist one stmt = select(TimeSlot).where( and_( TimeSlot.calendar_id == user.calendar.id, TimeSlot.weekday.in_(weekdays), TimeSlot.start_time < payload.end_time, TimeSlot.end_time > payload.start_time, ) ) result = await session.execute(stmt) existing_time_slot = result.scalars().first() if existing_time_slot: raise TimeSlotOverlapError() time_slots = [ TimeSlot( calendar_id=user.calendar.id, start_time=payload.start_time, end_time=payload.end_time, weekday=weekday, ) for weekday in weekdays ] session.add_all(time_slots) await session.commit() if not time_slots: raise TimeSlotOverlapError() return TimeSlotOut( start_time=time_slots[0].start_time, end_time=time_slots[0].end_time, weekdays=weekdays, created_at=time_slots[0].created_at, updated_at=time_slots[0].updated_at, ) @router.get( "/time-slots/{host_username}", status_code=status.HTTP_200_OK, response_model=list[TimeSlotOut], ) async def get_host_timeslots( host_username: str, session: DbSessionDep, ) -> list[TimeSlotOut]: stmt = ( select(User) .where(User.username == host_username) .where(User.is_host.is_(true())) ) result = await session.execute(stmt) host = result.scalar_one_or_none() if host is None or host.calendar is None: raise HostNotFoundError() stmt = select(TimeSlot).where(TimeSlot.calendar_id == host.calendar.id) result = await session.execute(stmt) time_slots = result.scalars().all() grouped: dict[tuple[time, time], TimeSlotOut] = {} for time_slot in time_slots: key = (time_slot.start_time, time_slot.end_time) if key not in grouped: grouped[key] = TimeSlotOut( start_time=time_slot.start_time, end_time=time_slot.end_time, weekdays=[time_slot.weekday], created_at=time_slot.created_at, updated_at=time_slot.updated_at, ) continue grouped[key].weekdays.append(time_slot.weekday) if time_slot.created_at < grouped[key].created_at: grouped[key].created_at = time_slot.created_at if time_slot.updated_at > grouped[key].updated_at: grouped[key].updated_at = time_slot.updated_at if not grouped: raise TimeSlotNotFoundError() for time_slot in grouped.values(): time_slot.weekdays = sorted(set(time_slot.weekdays)) return list(grouped.values()) @router.patch( "/time-slots", status_code=status.HTTP_200_OK, response_model=TimeSlotOut | None, ) async def update_time_slot( user: CurrentUserDep, session: DbSessionDep, payload: TimeSlotUpdateByGroupIn, ) -> TimeSlotOut | None: if not user.is_host: raise GuestPermissionError() current_weekdays = sorted(set(payload.weekdays)) stmt = select(TimeSlot).where( and_( TimeSlot.calendar_id == user.calendar.id, TimeSlot.start_time == payload.start_time, TimeSlot.end_time == payload.end_time, ) ) result = await session.execute(stmt) current_slots = result.scalars().all() if not current_slots: raise TimeSlotNotFoundError() existing_weekdays = sorted({slot.weekday for slot in current_slots}) if existing_weekdays != current_weekdays: raise TimeSlotNotFoundError() delete_only = ( payload.new_start_time is not None and payload.new_end_time is not None and payload.new_start_time == payload.new_end_time ) if delete_only: current_ids = [slot.id for slot in current_slots] await session.execute(delete(TimeSlot).where(TimeSlot.id.in_(current_ids))) await session.commit() return None new_start_time = payload.new_start_time or payload.start_time new_end_time = payload.new_end_time or payload.end_time new_weekdays = sorted(set(payload.new_weekdays or payload.weekdays)) if new_start_time >= new_end_time: raise HTTPException( status_code=status.HTTP_422_UNPROCESSABLE_CONTENT, detail="시작 시간은 종료 시간보다 빨라야 합니다.", ) current_ids = [slot.id for slot in current_slots] stmt = select(TimeSlot).where( and_( TimeSlot.calendar_id == user.calendar.id, TimeSlot.weekday.in_(new_weekdays), TimeSlot.start_time < new_end_time, TimeSlot.end_time > new_start_time, TimeSlot.id.not_in(current_ids), ) ) result = await session.execute(stmt) existing_time_slot = result.scalars().first() if existing_time_slot: raise TimeSlotOverlapError() await session.execute(delete(TimeSlot).where(TimeSlot.id.in_(current_ids))) new_time_slots = [ TimeSlot( calendar_id=user.calendar.id, start_time=new_start_time, end_time=new_end_time, weekday=weekday, ) for weekday in new_weekdays ] session.add_all(new_time_slots) await session.commit() return TimeSlotOut( start_time=new_start_time, end_time=new_end_time, weekdays=new_weekdays, created_at=new_time_slots[0].created_at, updated_at=new_time_slots[0].updated_at, )
-
미해결[CS 기술면접 1] 말이 트이는 컴퓨터 구조
5:20 오타 발견했습니다
ALU인데 ARU라고 되어 있습니다.감사합니다.
-
미해결350개의 개인 앱을 만들어 월급의 7배 수익을 달성한 방법
초기 광고 세팅시 캠페인/광고그룹 개수
안녕하세요! 강의 두 번째 복습 중 궁금한 점이 생겼습니다.광고 실험 시 여러 개의 광고 그룹·캠페인을 만든다고 하셨는데, 이는 초기 광고 단계에서도 동일하게 적용되는 방법인가요?초기 광고는 소액(일 2,000~5,000원)으로 세팅한다고 하셨는데, 이 예산 안에서 여러 광고 그룹·캠페인을 동시에 운영할 수 있는지 궁금합니다. (5,000원을 쪼개서 2~3개의 캠페인을 돌리시는지? 아니면 안정성이 확보되고 예산을 늘릴 때 캠페인도 같이 늘리시는지..?)
-
해결됨원클릭으로 AI가 생성해주는 Youtube 쇼츠 만들기 자동화(with n8n)
IMG - JSON 병 및 ID추가에서 ID가 추가가 안됩니다.
merged["ID"] = _('IMG - 시트 행 가져오기').first().json.ID이부분에서 = 뒤로 지우고 IMG 시트 행 가져오기에서 ID를 드래그엔 드롭했을때 강사님처럼 아이디가 입력이 안되는데 이유가 뭘까요?일단은 복사 붙여넣기로 진행했는데 궁금해서 질문 남깁니다.
-
미해결UX 입문자들 모여라! 1시간에 끝내는 UX 포트폴리오 강의
PDF파일 다운로드 위치
PDF은 어디서 다운받을 수 있나요?자료제공하신다고 기재되어있는데 안보여서요~