묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
질문드립니다!
안녕하세요 큰돌님.문제를 풀 때 다음 함수가 필요하다 생각했습니다.1. 심을 수 있는지 체크가격을 합하는 함수방문 처리더했던 가격을 빼는 함수방문 처리 해제여기서 2, 3 과 4, 5 는 함께 이뤄지는 로직이므로 두 과정을 묶었습니다.큰돌님의 코드와 다른 점은 아무래도 합에 대한 부분인데, 저는 합을 전역으로 설정했습니다. 제 생각으론 합을 전역으로 설정했지만,2,3재귀4,5무조건 이 순서대로 흘러간다고 생각했기에 합을 전역으로 설정해도 문제가 없다고 봤습니다.제 생각과 로직 중 어떤 부분이 틀렸을까요?http://boj.kr/71892c4f7dc3477d8f44ae4079d0f763
-
해결됨넓고 얕게 외워서 컴공 전공자 되기
동기화와 Queue
안녕하세요. 강의를 듣던 중 동기화랑 Queue 가 밀접한 관련이 있다라는 말씀과 그 예시가 잘 이해가지 않아 질문을 남깁니다.은행 예시에서 손님(=처리해야 할 일)을 순서대로 Queue 에 넣고 은행원들(=처리주체, Thread) 이 하나씩 그 일을 처리해 나가는 부분까지는 이해를 했습니다.앞선 강의 중 동기화 부분에서 "공유되는 자원을 여러 Thread 가 동시에 접근할 때 그 교통정리를 하는 작업"이 "동기화" 라고 이해했습니다.은행 예시에서는 Queue 를 이용해 스케쥴링을 한 건 맞지만 동기화와는 다소 거리가 멀어보이는데 어떤 포인트에서 해당 사례가 동기화와 연관이 있는지 설명해주시면 감사드리겠습니다.
-
미해결Next + React Query로 SNS 서비스 만들기
필터옵션이 많은 페이지에서 서버 fetch를 하는게 맞는걸까요??
next 공식문서에서 서버 fetch를 권장하고 있지만필터옵션이 다수 포진된 페이지에서도 서버 fetch를 해야할까 의문점이 듭니다.필터 버튼 하나 누를때마다 다시 fetch 해야하니까 route.push나 replace 할 수 밖에 없는데 이게 과연 좋은 방법인가 의구심이 듭니다.리액트 쿼리를 사용하는게 더 나을지, 서버 fetch를 사용하는게 나은지 선생님의 의견이 궁금합니다. 추가로 window.history.replaceState webAPI를 사용하면 단순 url만 변경하고 페이지 로드나 컴포넌트 리렌더링은 일어나지 않는걸로 알고 있는데요. 근데 리액트 쿼리로 클라이언트 fetch 할 땐 window.history.replaceState 로 url만 변경해도 다시 fetch가 되더라구요?? 어떤 원리로 동작하게 되는지 궁금합니다!
-
해결됨Next.js 까보기: "쓸 줄 아는 개발자"에서 "알고 쓰는 개발자"로
필터옵션이 많은 페이지에서도 서버 fetch를 사용하는게 맞을까요??
강의에서 말씀해준 내용도 그렇고, next 공식문서에서도 서버 fetch를 권장하고 있지만필터옵션이 다수 포진된 페이지에서도 서버 fetch를 해야할까 의문점이 듭니다. 필터 버튼 하나 누를때마다 다시 fetch 해야하니까 route.push나 replace 할 수 밖에 없는데 이게 과연 좋은 방법인가 의구심이 듭니다.리액트 쿼리를 사용하는게 더 나을지, 서버 fetch를 사용하는게 나은지 선생님의 의견이 궁금합니다. 추가로 window.history.replaceState webAPI를 사용하면 단순 url만 변경하고 페이지 로드나 컴포넌트 리렌더링은 일어나지 않는걸로 알고 있는데요. 근데 리액트 쿼리로 클라이언트 fetch 할 땐 window.history.replaceState 로 url만 변경해도 다시 fetch가 되더라구요?? 어떤 원리로 동작하게 되는지 궁금합니다!
-
해결됨(2025) 일주일만에 합격하는 정보처리기사 실기
22분 this 체인 질문입니다.
7번째 줄부터 Child5(int n) {this(n, "hi");System.out.println("Child5(int)");이 부분에서 출력 부분의 ("Child5(int)") 대신 ("Child5(n)")이면 Child(1)이 출력되는건가요?
-
미해결38군데 합격 비법, 2025 코딩테스트 필수 알고리즘
선택 정렬 질문
1. 현재 학습 진도몇 챕터/몇 강을 수강 중이신가요? 3주차 2강어떤 알고리즘을 학습하고 계신가요? 선택 정렬여기까지 이해하신 내용은 무엇인가요? 선택 정렬 원리 2. 어려움을 겪는 부분어느 부분에서 막히셨나요? 교재 잘못 나온 부분코드의 어떤 로직이 이해가 안 되시나요?어떤 개념이 헷갈리시나요? 3. 시도해보신 내용문제 해결을 위해 어떤 시도를 해보셨나요?에러가 발생했다면 어떤 에러인가요?현재 작성하신 코드를 공유해주세요 이렇게 구체적으로 알려주시면, 더 정확하고 도움이 되는 답변을 드릴 수 있습니다! 😊 딩코님 안녕하세요! 교재에 잘못 나온 부분인가 싶어서 질문 남깁니다.3주차 선택 정렬 부분에서요딩코님께서도 이렇게 설명을 하시고,직접 파이참에서 돌려봤을 때해당 결과가 이렇게 나왔습니다. 그런데 교재에는실행결과가 다르게 나와있어서 혹시 교재 잘못나온 건 아닌지 여쭤봅니다.교재 보면서 혼자 생각정리 하고 있었는데, 아무리 생각해도 실행결과가 저게 아닌 것 같아서 직접 돌려보고 강의도 봤는데 교재에 나온 결과가 안 나오더라고요
-
해결됨(2025) 일주일만에 합격하는 정보처리기사 실기
케이스 7번의 this.name = name; 구문질문
7분2초에 케이스 7에 this.name = name 은 child 객체를 의미하는건가요? 부모의 클래스라도?
-
해결됨(2025) 일주일만에 합격하는 정보처리기사 실기
2:23 질문이 있습니다.
왜 b가 자기자신을 호출하는데 D가 출력이 되는지 잘 모르겠습니다. this.draw()가 왜 D를 출력하는지 궁금합니다. 그리고 네번째 D를 출력하는데 b.paint()에서 출력한 건지 모르겠네요. 저는 바로 밑에 줄인 b.draw()에서 이미 D출력해서 끝났다고 생각했습니다. 해설 부탁드립니다.
-
미해결토비의 클린 스프링 - 도메인 모델 패턴과 헥사고날 아키텍처 Part 1
영상 편집에 오류가 있는것 같습니다.
3:10 MemberRegisterResponse 생성3:23 MemberRegisterResponse 생성같은 과정이 반복되는데 편집이 잘 못 된것 같습니다.
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
스프링부트 프로젝트를 windows로 빌드하고 실행한 이후..
[질문 내용]그 이후부터는 intellij에서 localhost:8080으로 접속이 안됩니다. 설정에서 이렇게 변경을 해도 프록시서버 설정을 바꿔야하는건지 알수가 없네요. 프로젝트 다시 만드는 방법보다 설정바꿔서 실행해보고 싶은데 어느 쪽을 변경해야하나요?
-
해결됨(2025) 일주일만에 합격하는 정보처리기사 실기
java 기출변형 22분
22분에 나오는 코드의 실행 순서에 질문이 있습니다.자식 클래스 생성자에 this나 super로 생성자가 적혀있지 않은 경우 자바에서 자동으로 super()를 만들어준다고 알고 있는데 맞나요? 그럼 Chi()에서 this(20)으로 Chi(20)이 실행된 다음, 이 생성자에는 따로 this나 super로 생성자가 적혀있지 않기 때문에 super()로 Par() 생성자가 호출된다고 이해하면 될까요?질문을 정리하자면, 코드의 정확한 실행 순서가Chi() -> Chi(int y) -> Par()인지,Chi() -> Par() -> Chi(int y)인지 알고 싶습니다.
-
미해결[개정판] 딥러닝 컴퓨터 비전 완벽 가이드
강의 구성 관련해서 질문이 있습니다
선생님 안녕하세요 혹시 이 강의는 tensorflow 로 만들어진 강의인가요? 선생님의 torch cnn강의를 듣고도 이 강의를 들을 수 있는 것인지, 아니면 tensorflow 강의를 들어야만 이 강의를 들을 수 있는것인지 궁금합니다.
-
해결됨(2025) 일주일만에 합격하는 정보처리기사 실기
2025년 1회 기출 문제 1번 문제 질문
4분 58초에 for(i=0;i<4;++i){if(Data[i]>'c'){break;}이 문항에서 위에 나온 배열에 B A D E 가 존재하는데요 c 의 아스키코드는 99 로 인지한 상태로 풀고 나머지 배열에있는 값들은 각각 66 , 65 ,68 ,69 이렇게 해서 브레이크가 안걸리고 i가 3까지 나열한 뒤로 끝나는 것으로 인지했었습니다 그런데 영상 강의에선 D의 값에서 break가 걸린다고 들었는데 왜 그런건지 질문드립니다.
-
미해결홍정모의 따라하며 배우는 C언어
14.14 예제 질문
#define CRTSECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <conio.h>#define SLEN 101struct book{ char name[SLEN]; char author[SLEN];};void print_books(const struct book* books, int n);void write_books(const char* filename, const struct book* books, int n);struct book* read_books(const char* filename, int* n);int main(){ int temp; int n = 3; struct book* my_books = (struct book*)malloc(sizeof(struct book) * n); if (!my_books) { printf("Malloc failed"); exit(1); } my_books[0] = (struct book){ "The Great Gatsby", "F. Scott Fitzgerald" }; my_books[1] = (struct book){ "Hamlet", "William Shakespeare" }; my_books[2] = (struct book){ "The Odyssey", "Homer" }; print_books(my_books, n); printf("\nWriting to a file.\n"); write_books("books.txt", my_books, n); free(my_books); n = 0; printf("Done.\n"); printf("\nPress any key to read data from a file.\n\n"); temp = _getch(); my_books = read_books("books.txt", &n); print_books(my_books, n); free(my_books); n = 0; return 0;}void print_books(const struct book* books, int n){ for (int i = 0; i < n; ++i) { printf("Book %d : \"%s\" written by \"%s\"\n", i + 1, books[i].name, books[i].author); }}void write_books(const char* filename, const struct book* books, int n){ FILE* fw; if ((fw = fopen(filename, "w")) == NULL) { fprintf(stderr, "Can't open \"%s\" file.\n", filename); exit(EXIT_FAILURE); } fwrite(books, sizeof(struct book), n, fw); fclose(fw);}struct book* read_books(const char* filename, int* n){ FILE* fp; if ((fp = fopen(filename, "r")) == NULL) { fprintf(stderr, "Can't open \"%s\" file.\n", filename); exit(EXIT_FAILURE); } fseek(fp, 0, SEEK_END); long file_size = ftell(fp); rewind(fp); struct book* all_books; int si = file_size / sizeof(struct book); *n = si; all_books = (struct book*)malloc(sizeof(struct book) (n)); if (all_books == NULL) { printf("Failed"); return NULL; } fread(all_books, sizeof(struct book), *n, fp); fclose(fp); return all_books;}예제를 풀다보니 바이너리형식으로 추가,저장되는 코드로 만들어 버렸는데 이 경우에는 메모장에서 텍스트를 추가할 수 없으니 틀렸다고 보는게 맞겠죠?
-
미해결한 입 크기로 잘라먹는 Next.js(v15)
백엔드 서버를 배포했는데, 어쩔 땐 정상적으로 로딩이 되는데 어쩔 땐 500 에러가 발생합니다
무엇이 문제일까요? 간헐적으로 새로고침을 하면 제대로 로딩이 됐다 안 됐다 하는데 그로 인해 당연히 한입북스에 백엔드 데이터도 못 불러오는 거 같습니다!
-
해결됨(2025) 일주일만에 합격하는 정보처리기사 실기
23:29 질문입니다
메인 클래스에서 parent.getA()를 출력하는데 부모와 자식클래스에 똑같이 getA() 함수가 있으면 오버라이딩으로 자식클래스를 호출하나요? parent.getA()로 직접적으로 부모클래스를 호출하더라도요?
-
미해결반드시 알고 넘어가야 할 웹 기술 기초편
URL 인코딩 (18:25)
pw : cre &#cre(공백부분) 인코딩 %20 으로,userpw=cre%20%26%23 아닌가요? '+'기호는 어느 타입의 상황일 때 %20을 대신하여 사용되는지 궁금합니다 좋은 강의 제공해주셔서 감사합니다
-
미해결[개정3판] Node.js 교과서 - 기본부터 프로젝트 실습까지
<7-5. 시퀄라이즈 사용하기>수업 질문 드립니다.
안녕하세요. 수업 중 막히는 것이 있어서 질문 글 올립니다.수업을 다 따라가고 연결테스트를 하려고 했는데,이렇게 에러가 생겼습니다.분명히 config폴더가 있고 그안에 config.json 파일이 존재하는데 없다고 하길래, 일단 npx sequelize init 을 했더니 이번에는 config 파일이 이미 존재한다는 소리를 하길래 --force 를 하긴했습니다.그런 다음에 다시 실행하니까,이렇게 오류메시지가 생겼어요.강의에는 models 폴더에 user라는 파일을 만들라는 건 듣도보도 못했는데, 뭐가 잘못된건지 잘 모르겠습니다.
-
해결됨6주 완성! 백엔드 이력서 차별화 전략 4가지 - 똑같은 이력서 속에서 돋보이는 법
eventPublisher.publishEvent 시 @Transactional을 걸어야 하지 않나요?
딩코님! 강의 너무 잘 듣고 있습니다~! 강의를 따라가며 디비와 트랜잭션 그리고 락에 관해 심화 내용도 듣고 포폴도 하나하나 잘 채워가고 있습니다! 다름이 아니라 딩코님이 내주신 과제 중에 의문이 있어 질문을 드리게 되었습니다. 1. 현재 학습 진도4주차 수강 후 락과 트랜잭션 최적화를 수행하고 있습니다. 현재 여러가지 작업(일기 작성, 포인트 적립, AI 댓글 작성 예약, 알림 이벤트 발생)에 대해 facade 계층을 만들어 중요한 작업(일기 작성, 포인트 적립)에 대해서는 트랜잭션을 묶어 우선적으로 처리되게 하고 AI 댓글은 TaskScheduler로 특정 시간 후에 비동기적으로 이루어지게 하며 알림은 spring event로 after commit 후 처리하려 합니다. 2. 어려움을 겪는 부분현재 이벤트 발행 (트랜잭션 커밋 후 실행됨, after-commit)에 대해 의문이 있습니다.현재 딩코님이 올려주신 코드에는@Component @RequiredArgsConstructor @Slf4j public class ImprovedEventJoinWithExternalApiUpdateFacade { private static final String TEST_PHONE_NUMBER = "01012341234"; private final EventExternalUpdateService eventJoinService; private final ExternalEventApi externalEventApi; private final ApplicationEventPublisher eventPublisher; public void joinEvent(Long eventId, Long memberId) { // 1. 기존 서비스로 이벤트 참가 처리 EventWithLockParticipant participant = eventJoinService.joinEventWithTransaction(eventId, memberId); // 2. 외부 API 호출 ExternalEventResponse response = externalEventApi.registerParticipant( eventId, memberId, participant.getEvent().getName() ); if (!response.isSuccess()) { throw new RuntimeException("외부 API 호출 실패: " + response.getErrorMessage()); } // 3. 외부 API 응답으로 참가자 정보 업데이트 eventJoinService.updateExternalId(participant, response.getExternalId()); // 4. 이벤트 발행 (트랜잭션 커밋 후 실행됨) eventPublisher.publishEvent(new EventJoinCompletedEvent( eventId, participant.getEvent().getName(), TEST_PHONE_NUMBER )); } }이렇게 코드 내에 @Transactional이 걸려있지 않습니다. 그런데 이벤트 리스너에는@Component @RequiredArgsConstructor @Slf4j public class EventJoinEventListener { private final KakaoTalkMessageApi kakaoTalkMessageApi; @Async @TransactionalEventListener(phase = TransactionPhase.AFTER_COMMIT) public void handleEventJoinCompleted(EventJoinCompletedEvent event) { try { kakaoTalkMessageApi.sendEventJoinMessage( event.getPhoneNumber(), event.getEventName() ); } catch (Exception e) { log.error("알림 발송 실패. eventId={}, eventName={}", event.getEventId(), event.getEventName(), e); } } } 이렇게 transaction이 커밋된 후에 실행되도록 AFTER_COMMIT이 걸려있는데, 이렇게 되면 이벤트 리스너가 제대로 실행이 안되지 않나요? 제대로 이벤트 리스너가 실행이 되려면 joinEvent부터 @Transactional이 걸려있어야 하지 않나요?3. 시도해보신 내용따로 간단하게 코드를 작성하여 테스트해보았습니다. @RequiredArgsConstructor @Component public class StudyFacade { private final StudyService studyService; private final ApplicationEventPublisher eventPublisher; // @Transactional : 주석 처리하면 밑에 eventEvent가 실행되지 않음 public void execute() { studyService.saveStudy(); eventPublisher.publishEvent("event published"); } @Async @TransactionalEventListener(phase = TransactionPhase.AFTER_COMMIT) public void executeEvent(String event) { System.out.println("event = " + event); } } @RequiredArgsConstructor @Service public class StudyService { private final StudyRepository studyRepository; @Transactional public void saveStudy() { studyRepository.save(new Study("test")); } } 실제로 execute 메서드의 @Transactional을 주석처리하면 밑의 이벤트 리스너인 executeEvent가 실행이 되지 않더라구요. 이러면 ImprovedEventJoinWithExternalApiUpdateFacade의 joinEvent부터 트랜잭션을 걸어야 하니까 딩코님이 말씀하신 트랜잭션을 최대한 작게 나누는 트랜잭션 최적화가 어렵지 않나요? 항상 강의 잘 듣고 있습니다! 감사합니다!
-
미해결Airflow 마스터 클래스
chatGPT API 실습은 이제 유료인 거 맞나요??
안녕하세요 강사님 수업 잘 듣고 있습니다!다름이 아니라 이제 chatGPT API 강의를 듣고 있는데print(resp.text)에서 에러가 계속 나서 보니5$이상 결제를 해야 API 이용이 가능하다는 말이 있어서 혹시 맞는지 확인 부탁드립니다..!