묻고 답해요
130만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
점프가 동기화가 되지 않습니다..
안녕하세요! 루키스님 강의를 토대로 2D 플랫포머 형태의 멀티플레이어 게임을 만들어보고 있습니다! 항상 감사합니다. 현재 제가 액션들을 구현하고 동기화를 해보고 있는데,걷기, 뛰기, 구르기까지는 동기화가 잘 되는데 점프가 동기화가 되질 않습니다.. 점프는 Rigidbody2D의 AddForce를 사용하여 작동되고,다른 이동 액션들은 루키스님이 보여주신 방식처럼 다음 프레임의 transform.position을 계산하여 PosInfo에 넣어 패킷을 전송하고 있는데요. 점프는 우선 클라이언트에서 AddForce를 통해 점프를 먼저 한 뒤,현재 위치를 PosInfo에 넣어 패킷을 보내는 방식을 써보았습니다..그런데 다른 빌드의 화면에서 볼 때, 점프 애니메이션만 작동하고 실질적인 점프는 작동하질 않습니다. 디버깅 해보았을 때, 클라이언트 -> 서버로 패킷을 보낼 경우에는 패킷이 정상적으로 송신되는 것으로 보이고,서버 -> 클라이언트로 패킷을 보내는 경우에도 정상적으로 송신이 되는 것 같은데,클라이언트에서 서버에서 받은 패킷을 디버깅 하는 방법을 모르겠습니다.. 좀 오랜시간 붙잡고 있던 문제라 장황하게 늘어놓아 버렸는데, 궁금한 점은 아래와 같습니다.Q. Rigidbody를 사용한 물리 작용(점프)을 패킷으로 보내기 위해서 제가 사용한 방법이 틀린걸까요?(정말 될 것 같은데 왜 안되는지 모르겠네요..)
-
해결됨[초중급편] 안드로이드 데이팅 앱 만들기(Android Kotlin)
firebase 세팅 후 실행 오류
mingreen0107/test1 (github.com)안녕하세요!혹시 몰라 깃허브 주소도 남겨둡니다.처음엔 이 오류가 뜨다가나중엔 이 오류가 뜹니다.어떻게 해야 하나요?감사합니다 :)
-
미해결스프링 시큐리티 OAuth2
액세스 거부
/home 에서 AuthorizationCode Grant 를 누르면 액세스 거부(403 에러)가 발생합니다..OAuth2ClientConfig 에서 auth.requestMatchers("/home").permitAll().anyRequest().authenticated()) 도 설정했는데.. 왜 인증 받는 화면으로 가지 못 하고 액세스 거부가 생기는건가요..??
-
미해결스프링 핵심 원리 - 기본편
문서 오타네요 disConnect -> disconnect
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.
-
미해결야, 너도 AI 서비스 만들 수 있어. [이미지 AI 서비스 서버리스 풀스택]
npx sst dev 오류
위 명령어를 실행했을때 아래와같은 오류가 나타납니다..어떻게 해결해야할까요. 시작부터 막히네요.. SST v2.40.3 ready!➜ App: raymong-lecture-follow Stage: dev Console: https://console.sst.dev/local/raymong-lecture-follow/devError: Invalid character in header content ["authorization"]Trace: TypeError: Invalid character in header content ["authorization"] at __node_internal_captureLargerStackTrace (node:internal/errors:490:5) at new NodeError (node:internal/errors:399:5) at __node_internal_ (node:_http_outgoing:643:11) at ClientRequest.setHeader (node:_http_outgoing:666:3) at new ClientRequest (node:_http_client:292:14) at request (node:https:360:10) at C:\Users\user\Documents\GitHub\raymong-lecture-follow\node_modules\@smithy\node-http-handler\dist-cjs\index.js:233:19 at new Promise (<anonymous>) at _NodeHttpHandler.handle (C:\Users\user\Documents\GitHub\raymong-lecture-follow\node_modules\@smithy\node-http-handler\dist-cjs\index.js:189:12) at async C:\Users\user\Documents\GitHub\raymong-lecture-follow\node_modules\@smithy\middleware-serde\dist-cjs\index.js:33:24 at async C:\Users\user\Documents\GitHub\raymong-lecture-follow\node_modules\@smithy\core\dist-cjs\index.js:165:18 at async StandardRetryStrategy.retry (C:\Users\user\Documents\GitHub\raymong-lecture-follow\node_modules\@aws-sdk\middleware-retry\node_modules\@smithy\middleware-retry\dist-cjs\StandardRetryStrategy.js:51:46) at async C:\Users\user\Documents\GitHub\raymong-lecture-follow\node_modules\@aws-sdk\middleware-logger\dist-cjs\index.js:33:22 at async file:///C:/Users/user/Documents/GitHub/raymong-lecture-follow/node_modules/sst/iot.js:7:22 at async file:///C:/Users/user/Documents/GitHub/raymong-lecture-follow/node_modules/sst/iot.js:24:22 at async file:///C:/Users/user/Documents/GitHub/raymong-lecture-follow/node_modules/sst/cli/commands/dev.js:304:25 at async Promise.all (index 2) at async Object.handler (file:///C:/Users/user/Documents/GitHub/raymong-lecture-follow/node_modules/sst/cli/commands/dev.js:327:9) at process.<anonymous> (file:///C:/Users/user/Documents/GitHub/raymong-lecture-follow/node_modules/sst/cli/sst.js:58:21) at process.emit (node:events:525:35) at process.emit (node:domain:489:12) at process._fatalException (node:internal/process/execution:149:25) at processPromiseRejections (node:internal/process/promises:288:13) at process.processTicksAndRejections (node:internal/process/task_queues:96:32)Need help with this error? Post it in #help on the SST Discord https://sst.dev/discord
-
해결됨Next + React Query로 SNS 서비스 만들기
client-side exception has occurred와 관련하여 질문드립니다.
강의 10:09에서 해당 에러가 나온 경우는 인터셉트 라우트에 해당하는 폴더와 패러렐라우트 경로에 해당하는 폴더가 동시에 존재해서 나타날 수 있다고 하였는데, 생각해보니 그렇다면 이 부분이 패러렐라우트 기능 구현할 때 주의해야 할 부분인 것 같아서 질문 드립니다.혹시 어떤 경우에 지금 이런 에러가 발생하고 이런 에러를 추후에 방지하거나 오류를 수정하려면 어떤 부분부터 확인해야 하는지 미리 조언 얻고 싶습니다.
-
미해결[왕초보편] 앱 8개를 만들면서 배우는 안드로이드 코틀린(Android Kotlin)
메인엑티비티에 내용이 들어있어요
처음 초기 설정한 화면인데요 선생님처럼 비어있지 않고 코드들이 차있어요 설치할 때 잘못한 걸까요?아님 그냥 지우면 될까요?
-
미해결내러티브 있는 문서와 프레젠테이션
강의자료 메일로 보내주시면 감사하겠습니다.
안녕하세요, 몇년전 파워포인트 블루스 책을 우연히 구매하고, 강사님 팬인 수강생입니다.강의자료도 받아보고 싶어서 문의드립니다.강의자료 아래의 메일로 보내주시면 감사하겠습니다.메일주소는 cloudy88@naver.com 입니다.소중한 자료 감사히 잘 받겠습니다.
-
해결됨Next + React Query로 SNS 서비스 만들기
영상 3:45 위치에서 질문이 있습니다.
강의를 위해 준비된 코드 붙여넣고 그 유용함은 이해하였습니다.그거랑 별개로 혼자서 구상해서 만들어보려고 할 때 미리 스타일을 눈으로 보면서 넣는게 아니다보니 무엇부터 배치해서 넣을지 좀 생각하기 까다로운 부분이 있더라고요. 그림 크기나 박스 크기나 아무래도 다르다보니 좌측위에서부터 우측아래로 차례대로 입력하려고 해도 배치 순서를 정하는게 조금 까다로운 부분이 있고요. 그리고 막상 넣다 보면 기존 스타일이 생각한 대로 맞아 들어가지 않아서 스타일 방식을 수정하다보면 간섭도 생겨서 배치를 수정하고서 다시 정렬 시키기도 하고요. 이와 관련해서 클론코딩이 아니라 실제 디자인을 구상한다고 할 때 style이랑 컴포넌트 배치를 어떻게 구상하는지 시행착오를 줄일 노하우를 알고 싶습니다. 예를 들면 화면의 큰 부분부터 채워 넣어 가는게 맞는지 전체적으로 구상을 하고 좌측위부터 아래로 쭉 진행하는게 맞는지... 일단 클론코딩 강의 여기까지 보면서 느낀 바로는 큰 부분부터 채워 넣는게 유리하다는 느낌은 받았지만 그것만으로는 어렵다라고 느끼는데 그냥 경험으로 쌓이는 것일지 알고 싶습니다.
-
해결됨자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
13강 마지막 부분 질문 있습니다.
제가 람다식, 익명클래스, 제네릭에 대한 개념이 확실하게 안 잡혀서 코드이해가 너무 안 되길래 개념부터 다시 찾아보고 공부하고 있는데요 ㅠㅠㅠ 이렇게 공부하는 게 조금 과할 수 있지만 완벽하게 이해를 하고 넘어가고 싶습니다.제가 궁금한 점은query함수를 실행하면 sql이 적용된 결과데이터베이스 전체가 mapRow함수의 파라미터 rs로 들어가게 되는 것 같은데 데이터베이스의 자료형이 ResultSet인가요?rowNum 변수의 필요성입니다. mapRow메서드를 오버라이딩을 해줄 때 rowNum사용을 전혀 안 하고 있는 것 같은데, 어떤 값이 rowNum으로 들어가고 어떻게 작동하는 건가요?mapRow메서드의 반환값은 UserResponse객체 형태인데 결과적인 getUsers메서드의 반환값이 어떻게 List<UserResponse> 형태로 변환될 수 있나요? query함수의 역할인가요?감사합니다.
-
미해결김영한의 실전 자바 - 기본편
intellij package import 문제입니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요?예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요?예3. 질문 잘하기 메뉴얼을 읽어보셨나요?예[질문 내용]안녕하세요. 섹션6 접근 제어자 사용 - 필드, 메서드 파트 청강 중 AccessOuterMain 클래스를 생성하여 AccessData 클래스를 import할 때 문제가 생겼습니다. 현재 저는 windows 환경에서 intellij community Edition 2023.1.2 버전을 사용중입니다. 디렉토리 구조는 다음과 같습니다. > src > access > a - AccessData - AccessInnerMain > b - AccessOuterMain - Speaker - SpeakerMain 다음은 access.a.AccessData 의 코드 내용입니다.package access.a; public class AccessData { public int publicField; int defaultField; private int privateField; public void publicMethod() { System.out.println("publicMethod 호출: " + publicField); } void defaultMethod() { System.out.println("defaultMethod 호출: " + defaultField); } private void privateMethod() { System.out.println("privateMethod 호출: " + privateField); } public void innerAccess() { System.out.println("내부 호출"); publicField = 100; defaultField = 200; privateField = 300; publicMethod(); defaultMethod(); privateMethod(); } } 다음은 access.b.AccessOuterMain 의 코드 내용입니다.package access.b; public class AccessOuterMain { public static void main(String[] args) { AccessData data = new AccessData(); // 해당 부분에서 AccessData가 code suggestions도 안나오고 직접 import를 해도 import를 할 수 없습니다. } } access.b.AccessOuterMain 의 코드에서 AccessData 가 import가 되지 않습니다. intellij에서 code suggestion도 안되고(다른 코드는 code suggestion 잘 됩니다.) 직접 import를 해도 AccessData에 빨간불이 들어옵니다. 왜 그럴까요?
-
미해결나도코딩의 자바 기본편 - 풀코스 (20시간)
ArrayList 사이즈 값 초기화
안녕하세요 나도코딩 선생님:)따로 코드를 작성해서 연습중에 있습니다. 클래스 내에서 멤버변수로 ArrayList와 int를 지정했습니다.하지만 ArrayList 내에 사이즈가 초기화 되지 않아서 이유가 무엇인지 질문드립니다! private int heapSize; private ArrayList<PointerAddress> memory = new ArrayList<>(heapSize); // 여기 ArrayList의 사이즈가 변하지 않습니다! public void init(int heapSize) { if (validateInit(heapSize)) { int memorySize = heapSize / BYTE_LENGTH; this.heapSize = memorySize; } else { System.out.println("[ERROR] : 잘못된 값을 입력했습니다."); } }
-
미해결Java/Spring 테스트를 추가하고 싶은 개발자들의 오답노트
테스트 코드에서 @BeforeEach가 아니라 sql 사용하시는 이유 문의드립니다.
안녕하세요!실무에서 테스트 코드 적용을 위해 강의를 열심히 듣고 있는 중 궁금한 부분이 있습니다. 테스트코드 사용 시 @BeforeEach를 사용하는 경우도 있는데, sql로 초기 데이터 추가를 사용하시는 이유가 궁금합니다. 작은 서비스가 아니고 복잡한 서비스의 경우 sql로 넣는게 편할것 같기는 한데, 상태에 따라 id값이 필요한 경우도 있고, sql로 작성 시 테스트 마다 데이터가 적용이 동일하지 않을 것 같기도 해서 실제 복잡한 프로젝트에서 어떻게 사용하시는지 궁금해서 문의드립니다.@BeforeEach가 한눈에 들어오지 않아서 잘 사용하지 않으신다고 설명해 주시기는 했지만, SQL로 사용 시 조회 등의 테스트에서는 특정 상태의 데이터 id를 알아야 하고, 그럼 SQL에서 해당 데이터의 id값과 상태값을 다시 확인해야 하는 형태는 동일하게 한눈에 안 들어올 것 같아서 고민이 되더라고요. 저도 SQL로 초기 데이터를 추가하는 형태로 사용하다가 이후에 테스트 코드의 유지보수가 쉽지 않은 경험이 있어서 강사님께서는 복잡한 비즈니스의 실무에서는 어떻게 사용하시는 궁금합니다. 감사합니다.
-
해결됨김영한의 실전 자바 - 기본편
생성자 관련 질문드립니다.
public class MemberConstruct { String name; int age; int grade; MemberConstruct(String name, int age){ this(name, age, 50); } MemberConstruct(String name, int age, int grade){ System.out.println("생성자 호출 name= " + name + "age= " + age + "grade= " + grade); this.name = name; this.age = age; this.grade =grade; } }this(name, age, 50); this.name = name; this.age = age; this.grade =grade;안녕하세요. 생성자와 관련하여 질문드립니다.this(name, age, 50) 을 실행시키기 위해서는 this.name = name, this.age = age, this.grade = grade 코드가 최소 한번은 작성되어있어야 하나요? MemberConstruct(String name, int age, int grade){ System.out.println("생성자 호출 name= " + name + "age= " + age + "grade= " + grade); this.name = name; this.age = age; this.grade =grade; } }제 생각으로는 System.out.println("생성자 호출 name= " + name + "age= " + age + "grade= " + grade); 코드 앞에 this.name = name, this.age = age, this.grade = grade 코드가 있어야 될 것 같습니다. 제가 이해한 바로는 MemberConstruct 메서드의 매개변수 name, age, grade를 받고, this.name, this.age, this.grade를 사용하여 생성된 객체의 맴버변수(name, age, grade)에 대입하는 과정으로 이해했습니다. 그렇다면 this.name, this.age, this.grade가 먼저 실행되어야 되는 것 아닌가요? (대입한 값을 넣은 뒤 실행해야 되는 것 아닌가요?) 위 사진으로 첨부한 코드가 (생성자 호출 name = null age=0, grade =0)으로 실행되지 않고, 어떻게 정상적으로 실행되는지 궁금합니다.
-
해결됨스프링 DB 1편 - 데이터 접근 핵심 원리
왜 계속 커넥션 풀 내 새로운 커넥션을 사용하는 건가요?
트랜잭션 매니져 사용하는 service 테스트 하는 MemberServiceV3_1Test 실행시키면 나오는 로그입니다. 제가 이해가 안가는 것은find by id , save, delete 같은 repository 함수들은 항상 close를 마지막으로 끝내잖아요?그럼 항상 커넥션 하나 사용한 다음에 다시 pool에 반환되니, 매번 conn0만 사용해야하는거 아닌가요? 그리고 지금 여러명이 DB에 들락거리는 것도 아니고 저 혼자만 테스트해보는건데왜 한개의 커넥션이 아닌 여러개의 커넥션을 사용하게 되는 건가요? 커넥션 풀에 있는 다른 커넥션을 사용해야한다는 것은 특정 커넥션들이 트랜잭션 상태에 있기 때문에어쩔 수 없이 풀에 남아있는 커넥션을 사용해야하는거잖아요?근데 저 혼자만 테스트하면 매번 DB작업한 다음에 커넥션을 다시 커넥션풀에 갖다 놓을텐데(모든 repository 함수들이 close로 끝나기 때문에) 왜 conn0이 아닌 5 6 7번까지 사용하게 되는걸까요??
-
해결됨Next + React Query로 SNS 서비스 만들기
이번 강의 영상 제목의 타이핑 외우기가 무슨 의미인가요?
inlay hints를 얘기하는 것일까요?영상제목에 있는 만큼 해당 개념을 인지해두고 넘어가려는데, PostForm 만드는 과정 중에 해당 개념이 어떤 기능의 무엇인지 영상을 봤을 때 잘 모르겠네요.
-
미해결HTML+CSS+JS 포트폴리오 실전 퍼블리싱(시즌2)
반응형이 안먹힐때 뭐가 문제일까요?? ㅜㅠ
■ 질문 남기실 때 꼭! 참고해주세요. font-size: 2.2em; 을했는데 크롬 디바이스툴에서는 전혀 줄어들지 않네요 ㅜㅠ 어떻게 해야할지 질문드립니다 저 크롬이 문제인가요??
-
미해결[왕초보편] 앱 8개를 만들면서 배우는 안드로이드 코틀린(Android Kotlin)
글씨가 잘려서 뜹니다.
이렇게 뜨고요 xml 소스코드는 다음과 같습니다. <?xml version="1.0" encoding="utf-8"?> <layout> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#008000" android:orientation="vertical" tools:context=".MainActivity"> <LinearLayout android:layout_width="match_parent" android:layout_height="200dp" android:layout_margin="100dp"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:textSize="30sp" android:textColor="@color/black" android:layout_margin="20dp" android:gravity="center" android:textStyle="bold" android:text="인생은 주사위 한방에 가는거 아니겠습니까?"/> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="200dp" android:weightSum="2"> <ImageView android:src="@drawable/dice_1" android:layout_width="120dp" android:layout_height="120dp" android:layout_weight="1"/> <ImageView android:src="@drawable/dice_1" android:layout_width="120dp" android:layout_height="120dp" android:layout_weight="1"/> </LinearLayout> <Button android:id="@+id/diceStartBtn" android:text="인생 고고" android:layout_width="match_parent" android:background="@color/black" android:textColor="@color/white" android:layout_height="50dp" android:layout_margin="50dp"/> </LinearLayout> </layout>
-
미해결데이터 분석 SQL Fundamentals
조인실습02 fromdate 날짜 형식 질문
안녕하세요, 과제를 하다가 fromdate가 컬럼 성질이 'date'라고 해서 year()를 사용했었는데요. year()가 postgreSQL에서는 작동하지 않는 것은 이해했습니다. 하지만 to_date를 사용하는 이유가 문자열로 저장된 날짜 데이터를 날짜 형식으로 변환하기 위해서라는데, fromdate의 성질이 이미 date니까 변환하지 않아도 되는 것 아닌가요? '문자열로 저장된 날짜 데이터'와 '날짜 형식' 사이의 차이점을 잘 알지 못하겠습니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-K 시간초과 & 학습 방법 고민있어요
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요. 강의 잘 듣고 있습니다.강의를 참고하여 풀었는데. 시간초과가 뜹니다#include <bits/stdc++.h> using namespace std; int R, C; vector<vector<char>> lake; queue<vector<int>> candidates_Swan, candidates_SwanTemp; queue<vector<int>> candidates_Water, candidates_WaterTemp; vector<vector<int>> delta = {{-1,0},{1,0},{0,-1},{0,1}}; vector<vector<int>> visitedSwan, visitedWater; bool moveSwan(){ while(candidates_Swan.size()){ vector<int> now = candidates_Swan.front(); candidates_Swan.pop(); for(auto d : delta){ int next_i = now[0]+d[0]; int next_j = now[1]+d[1]; if (next_i >= 0 && next_j >= 0 && next_i < R && next_j < C){ if (visitedSwan[next_i][next_j] == 0){ visitedSwan[next_i][next_j] = 1; if (lake[next_i][next_j] == '.'){ candidates_Swan.push({next_i, next_j}); } else if (lake[next_i][next_j] == 'X'){ candidates_SwanTemp.push({next_i, next_j}); } else if (lake[next_i][next_j] == 'L') return true; } } } } return false; } void waterMelting(){ while(candidates_Water.size()){ vector<int> now = candidates_Water.front(); candidates_Water.pop(); for(auto d : delta){ int next_i = now[0] + d[0]; int next_j = now[1] + d[1]; if (next_i >= 0 && next_j >= 0 && next_i < R && next_j < C){ if (visitedWater[next_i][next_j] == 0){ if (lake[next_i][next_j] == 'X'){ candidates_WaterTemp.push({next_i, next_j}); visitedWater[next_i][next_j] = 1; lake[next_i][next_j] = '.'; } } } } } return; } int main(){ ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); cin >> R >> C; lake = vector<vector<char>>(R, vector<char>(C)); visitedSwan = vector<vector<int>>(R, vector<int>(C,0)); visitedWater = vector<vector<int>>(R, vector<int>(C,0)); for(int i = 0 ; i < R ; ++i){ string s; cin >> s; for(int j = 0 ; j < C; ++j){ lake[i][j] = s[j]; if (lake[i][j] == 'L' && candidates_Swan.empty()){ candidates_Swan.push({i,j}); // 백조는 한마리 위치에서만 시작 visitedSwan[i][j] = 1; } if (lake[i][j] == 'L' || lake[i][j] == '.'){ candidates_Water.push({i,j}); visitedWater[i][j] = 1; } } } int day = 0; while(true){ if (moveSwan()) break; waterMelting(); // cout << endl; // for(auto ll : lake){ // for(auto l : ll) cout << l; // cout << endl; // } // cout << endl; candidates_Swan = candidates_SwanTemp; candidates_Water = candidates_WaterTemp; candidates_WaterTemp = queue<vector<int>>(); candidates_SwanTemp = queue<vector<int>>(); day++; } cout << day << "\n"; return 0; } 강의를 듣기 전에 먼저 문제를 풀고 강의를 듣는 방식을 고수하고 있는데, 한 문제를 푸는데 점점 시간이 늘어나 두시간 정도를 써야 겨우 한문제를 풀고 있습니다.이런 방식을 고수하는것이 좋을지,어떻게 해야하나 질문드려요. 감사합니다. ^^