각각의 todoReducer, memoReducer에 initialState를 전달하는 방법말고 createStore() 함수의 2번째 인자로 preloadedState를 전달하는 방법은 없나요? const preloadedState = { todo: initialTodoState, memo: initialMemoState, }; const store = createStore( rootReducer, preloadedState, applyMiddleware(loggerMiddleware), ); (추가) 위와 같이 작성 후(각 reducer의 초기 상태 전달 안함), 애플리케이션이 동작하지 않더라구요..! (추가) 해서 GPT에게 물어봤습니다! 그랬더니 답변으로 이 방법을 사용하면 preloadedState 를 통해 전체 앱의 초기 상태를 한 곳에서 관리할 수 있어 유용합니다. 하지만 이 방법은 각 리듀서에서 초기 상태를 설정하는 방법과 병행해서 사용해야 합니다. 왜냐하면 preloadedState 는 앱이 시작될 때 한 번만 사용되고, 그 이후에는 각 리듀서에서 정의한 초기 상태가 사용되기 때문입니다. 해서 각 reducer에도 각각의 initialState 배열을 전달하니 동작은 하긴 하는데, 이럴꺼면 굳이 preloadedState 를 전달하는 의미가 없는 것 같아서 조금 헷갈리네요..! 결론적으로 질문은 아래와 같습니다..! 1) 각 reducer에게 초기 상태를 전달하지않고 combine한 reducer를 createStore에 전달할 때, 초기 상태를 전달해서 사용하는 방법이 있나요?
안녕하세요 수강생 입니다. 문의 사항이 있어 글 남깁니다. 다중 구조체에 대해 문의남깁니다. 예를들어 struct test { int a=0; int b=0; }TEST[2][2] *PTEST[2][2]; 이런 식 입니다. 이때, 구조체에 접근할 때 주소연산자가 아닌 대입으로 접근이 가능한데 왜 그런가요? 예를 들어.. PTEST[2][2]->a 는 접근이 안되고 TEST[2][2].a는 접근이 됩니다.
안녕하세요, 학습순서에 대해서 질문드리려고 합니다. 파트 3을 완강했고, 게임서버4, 디비5, 웹서버6까지 강의를 구매해놓았습니다. 저는 컴퓨터공학을 전공했지만 파트4의 내용들이 꽤 어려운 것 같아서, 파트4->파트6순으로 듣는게 맞는것인지 아니면 6->4 순으로 듣는것이 좀더 좋은지, 혹은 아예 독립적인 내용인지 여쭤보려 글 남깁니다. 전부 다 수강한다는 전제하에 파트 별 학습순서를 추천해주실 수 있을까요:? 감사합니다!
안녕하세요 sort 코딩 시간 문제를 풀어보았습니다. 아쉬운 부분이나 틀린 부분 있다면 말씀해주세요! "use strict"; var value = [101, 26, 7, 1234]; value.sort(function(one, two){ return two - one }); //two - one가 양수인 경우는 뒤에 자리한 수가 더 큰 숫자라는 의미가 되고, 해당 식이 양수이면 배열의 순서가 바뀌게 되니 더 이상 변경되지 않을 만큼 진행된다면 역순으로 배열되게 된다. console.log(value);
강의 따라해도 생성이 안되서 골머리를 앓았는데 -- This script does not create a database. -- Run this script in the database you want the objects to be created. -- Default schema is dbo. 이렇게 적혀있더라고요. 이제 테이블을 자동으로 생성해주지 않아요 테이블 만들고 코드 복붙하면 데이터가 생깁니다. 그럼 이만
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 스프링 빈 저장소에 빈 이름은 메소드명으로 저장된다고 하였습니다. 저장되는 빈 이름은 항상 다른 이름을 부여해야 한다고 하셨고, 같은 이름을 부여하면 오류가 발생되거나 무시가 된다고 하셨습니다. 만약, AppConfig라는 class 내에 오버로딩 되어있는 메소드가 있으면 메소드명이 동일하기 때문에 오류가 생기나요? 이런 경우에 빈 이름을 직접 부여해야 하나요?
모의해킹 실무자가 알려주는, SQL Injection 공격 기법과 시큐어 코딩 : PART 1
ORA-12541 에러가 해결되지 않아 질문 드립니다. 현재 instantclient 19.15 버전 사용, Oracle 18c 버전 사용 환경입니다. 오류 > 위의 사진과 같이 오류가 출력이 됩니다. 2. listener.ora, tnsnames.ora 설정 > host 부분에 ip, localhost , pc name 전부 시도했지만 1번과 같은 오류가 출력이 되었습니다. 환경 변수 편집 > 기존 18.0.0 설정을 instantclient경로로 변경을 하면 sqlplus, lsnrctl status명령어가 실행을 할 수 없어 instant 경로를 하나 더 추가 하였습니다. lsnrctl status 실행 결과 > 위의 사진과 같이 정상적으로 READY상태임에도 불구하고 1번 사진과 같이 똑같은 오류가 출력이 됩니다. 서비스 실행 상태 > 모든 oracle 서비스에 대해서 실행 상태임에도 불구하고 오류는 계속 출력 되고 있습니다. 코드 <?php // Connects to the XE service (i.e. database) on the "localhost" machine $conn = oci_connect('c##kim', '1234', 'localhost/XE'); if (!$conn) { $e = oci_error(); trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR); } $stid = oci_parse($conn, 'SELECT user FROM dual'); oci_execute($stid); echo "<table border='1'>\n"; while ($row = oci_fetch_array($stid, OCI_ASSOC+OCI_RETURN_NULLS)) { echo "<tr>\n"; foreach ($row as $item) { echo " <td>" . ($item !== null ? htmlentities($item, ENT_QUOTES) : " ") . "</td>\n"; } echo "</tr>\n"; } echo "</table>\n"; ?> 현재 작성되어 있는 코드입니다. 커뮤니티에 있는 오류 해결 방법에 대해서 모두 시도해보았는데 진전이 없었습니다. 답변 부탁 드리겠습니다.
질문1. 앞으로의 강의를 css-in-js 방식으로 진행하신다고 하셨는데 실무에서 기존 css 방식으로 사용할땐 코드 작성법을 따로 공부해야 할까요? 질문2. css-in-js 방식을 사용했을때 지원종료는 했지만 아직 ie11버전을 맞추는 고객들이 있는데 그 경우에서도 사용이 가능한가요? 질문3. css-in-js 방식을 사용했을때 - 유지보수나, - 웹접근성 표준, - 그리고 일반적으로 id나class 값을 부여하지 않아도 되는 요소에 들어가는 이름의 용량같은 버려지는 용량에 대한 부분에 있어서 기존 css 보다 알맞고?(적절하고?) 좋은가요 아니면 단순히 작성자의 편의를 위해 사용하는 건가요?
함수가 객체라고 하셨는데 함수가 객체이기 때문에 함수의 type을 opration2처럼 설정하면 type Operation2 = { (a: number, b:number) : number name: string } 이전에 배운, 객체의 업캐스팅 때문에 함수로도 사용할 수 있고 add2.name으로도 사용할 수 있는 것인가요?
uuid를 통해서 file의 원본이름을 변경해서 mysql의 image컬럼에 아래처럼 저장하고있습니다. \images\042c8bb1-e0fd-4005-85e9-68d7c587c02d.png 홈페이지를 접속하면(로그인 안되면 로그인 페이지로 이동) 로그인했을때만(jwt 토큰을 발행해서 cookie에 보내주고) 홈페이지를 접속가능하게 하였습니다. 홈페이지로 이동하면 이미지들을 볼수있도록 했습니다. 근데 이미지주소 복사하면 로그아웃해도 해당이미지가 나옵니다. 제가 하고자는건 로그인했을때만 이미지보여주고 해당 이미지주소입력하면(로그인 안됐을때) 이미지가 안보이도록 하고싶은데 어떻게 해야할까요? db에 image컬럼에 원본이름만 저장하고 다른폴더에 이미지를 저장하고 db 인덱싱을통해서 이미지를 가져와서 이미지를 보여주도록 할려면 어떻게 해야할까요?(db인덱싱을통해(원본이름) 다른폴더에있는 해당이미지 가져오도록 하려면 어떻게해야할지 잘 모르겠습니다). 하나의 게시글에 다중이미지를 업로드하면 다중이미지를 보여주게 할려면 어떻게해야할까요? 현재는 db에 넣으면 num에(ai를통해서) 예를 들어 3장을 업로드하면 num이 1,2,3으로 생성되어서 이미지 경로도 각각 저장되고 홈페이지에서 하나하나씩 보입니다. 그럼 db에 저장을 어떻게해야하나요? 사진을보면 밀리미터까지 똑같이 저장이 되는데 하나의 구분에 다중이미지의 주소를 넣을려면 어떻게해야할지요?... 이렇게해놔도 여기로 들어오지도 않고 바로 이미지주소로 검색하면 바로 이미지가 나옵니다. 초보자라서 자세히 설명해주시면 감사하겠습니다.
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] java.lang.IllegalStateException: Failed to load ApplicationContext for [WebMergedContextConfiguration@6eeb29c0 testClass = jpabook.jpashop.MemberRepositoryTest, locations = [], classes = [jpabook.jpashop.JpashopApplication], contextInitializerClasses = [], activeProfiles = [], propertySourceLocations = [], propertySourceProperties = ["org.springframework.boot.test.context.SpringBootTestContextBootstrapper=true"], contextCustomizers = [org.springframework.boot.test.autoconfigure.actuate.observability.ObservabilityContextCustomizerFactory$DisableObservabilityContextCustomizer@1f, org.springframework.boot.test.autoconfigure.properties .PropertyMappingContextCustomizer@0, org.springframework.boot.test.autoconfigure.web.servlet.WebDriverContextCustomizerFactory$Customizer@769e7ee8, org.springframework.boot.test.context.filter.ExcludeFilterContextCustomizer@159f197, org.springframework.boot.test.json.DuplicateJsonObjectContextCustomizerFactory$DuplicateJsonObjectContextCustomizer@7c469c48, org.springframework.boot.test.mock.mockito.MockitoContextCustomizer@0, org.springframework.boot.test.web.client.TestRestTemplateContextCustomizer@60d8c9b7, org.springframework.boot.test.context.SpringBootTestAnnotation@7894f3e7], resourceBasePath = "src/main/webapp", contextLoader = org.springframework.boot.test.context.SpringBootContextLoader, parent = null] at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext( DefaultCacheAwareContextLoaderDelegate.java:143 ) at org.springframework.test.context.support .DefaultTestContext.getApplicationContext( DefaultTestContext.java:127 ) at org.springframework.test.context.web.ServletTestExecutionListener.setUpRequestContextIfNecessary( ServletTestExecutionListener.java:191 ) at org.springframework.test.context.web.ServletTestExecutionListener.prepareTestInstance( ServletTestExecutionListener.java:130 ) at org.springframework.test.context.TestContextManager.prepareTestInstance( TestContextManager.java:241 ) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest( SpringJUnit4ClassRunner.java:228 ) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner$1.runReflectiveCall( SpringJUnit4ClassRunner.java:289 ) at org.junit.internal.runners.model.ReflectiveCallable.run ( ReflectiveCallable.java:12 ) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.methodBlock( SpringJUnit4ClassRunner.java:291 ) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild( SpringJUnit4ClassRunner.java:247 ) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild( SpringJUnit4ClassRunner.java:97 ) at org.junit.runners.ParentRunner$4.run( ParentRunner.java:331 ) at org.junit.runners.ParentRunner$1.schedule( ParentRunner.java:79 ) at org.junit.runners.ParentRunner.runChildren( ParentRunner.java:329 ) at org.junit.runners.ParentRunner.access$100( ParentRunner.java:66 ) at org.junit.runners.ParentRunner$2.evaluate( ParentRunner.java:293 ) at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate( RunBeforeTestClassCallbacks.java:61 ) at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate( RunAfterTestClassCallbacks.java:70 ) at org.junit.runners.ParentRunner$3.evaluate( ParentRunner.java:306 ) at org.junit.runners.ParentRunner.run ( ParentRunner.java:413 ) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run ( SpringJUnit4ClassRunner.java:191 ) at org.junit.runner.JUnitCore.run ( JUnitCore.java:137 ) at org.junit.runner.JUnitCore.run ( JUnitCore.java:115 ) at org.junit.vintage.engine.execution.RunnerExecutor.execute( RunnerExecutor.java:42 ) at org.junit.vintage.engine.VintageTestEngine.executeAllChildren( VintageTestEngine.java:80 ) at org.junit.vintage.engine.VintageTestEngine.execute( VintageTestEngine.java:72 ) at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute( EngineExecutionOrchestrator.java:147 ) at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute( EngineExecutionOrchestrator.java:127 ) at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute( EngineExecutionOrchestrator.java:90 ) at org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0( EngineExecutionOrchestrator.java:55 ) at org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams( EngineExecutionOrchestrator.java:102 ) at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute( EngineExecutionOrchestrator.java:54 ) at org.junit.platform.launcher.core.DefaultLauncher.execute( DefaultLauncher.java:114 ) at org.junit.platform.launcher.core.DefaultLauncher.execute( DefaultLauncher.java:86 ) at org.junit.platform.launcher.core.DefaultLauncherSession$DelegatingLauncher.execute( DefaultLauncherSession.java:86 ) at org.junit.platform.launcher.core.SessionPerRequestLauncher.execute( SessionPerRequestLauncher.java:53 ) at com.intellij.junit5.JUnit5IdeaTestRunner.startRunnerWithArgs( JUnit5IdeaTestRunner.java:57 ) at com.intellij.rt.junit.IdeaTestRunner$Repeater$1.execute( IdeaTestRunner.java:38 ) at com.intellij.rt.execution.junit.TestsRepeater.repeat( TestsRepeater.java:11 ) at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs( IdeaTestRunner.java:35 ) at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart( JUnitStarter.java:232 ) at com.intellij.rt.junit.JUnitStarter.main( JUnitStarter.java:55 ) Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]: Could not determine recommended JdbcType for jpabook.jpashop.domain.Category at org.springframework.beans.factory.support .AbstractAutowireCapableBeanFactory.initializeBean( AbstractAutowireCapableBeanFactory.java:1770 ) at org.springframework.beans.factory.support .AbstractAutowireCapableBeanFactory.doCreateBean( AbstractAutowireCapableBeanFactory.java:598 ) at org.springframework.beans.factory.support .AbstractAutowireCapableBeanFactory.createBean( AbstractAutowireCapableBeanFactory.java:520 ) at org.springframework.beans.factory.support .AbstractBeanFactory.lambda$doGetBean$0( AbstractBeanFactory.java:326 ) at org.springframework.beans.factory.support .DefaultSingletonBeanRegistry.getSingleton( DefaultSingletonBeanRegistry.java:234 ) at org.springframework.beans.factory.support .AbstractBeanFactory.doGetBean( AbstractBeanFactory.java:324 ) at org.springframework.beans.factory.support .AbstractBeanFactory.getBean( AbstractBeanFactory.java:200 ) at org.springframework.context.support .AbstractApplicationContext.getBean( AbstractApplicationContext.java:1154 ) at org.springframework.context.support .AbstractApplicationContext.finishBeanFactoryInitialization( AbstractApplicationContext.java:931 ) at org.springframework.context.support .AbstractApplicationContext.refresh( AbstractApplicationContext.java:608 ) at org.springframework.boot.SpringApplication.refresh( SpringApplication.java:734 ) at org.springframework.boot.SpringApplication.refreshContext( SpringApplication.java:436 ) at org.springframework.boot.SpringApplication.run ( SpringApplication.java:312 ) at org.springframework.boot.test.context.SpringBootContextLoader.lambda$loadContext$3( SpringBootContextLoader.java:137 ) at org.springframework.util.function.ThrowingSupplier.get( ThrowingSupplier.java:58 ) at org.springframework.util.function.ThrowingSupplier.get( ThrowingSupplier.java:46 ) at org.springframework.boot.SpringApplication.withHook( SpringApplication.java:1406 ) at org.springframework.boot.test.context.SpringBootContextLoader$ContextLoaderHook.run( SpringBootContextLoader.java:545 ) at org.springframework.boot.test.context.SpringBootContextLoader.loadContext( SpringBootContextLoader.java:137 ) at org.springframework.boot.test.context.SpringBootContextLoader.loadContext( SpringBootContextLoader.java:108 ) at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContextInternal( DefaultCacheAwareContextLoaderDelegate.java:187 ) at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext( DefaultCacheAwareContextLoaderDelegate.java:119 ) ... 41 more Caused by: org.hibernate.type.descriptor.java .spi.JdbcTypeRecommendationException: Could not determine recommended JdbcType for jpabook.jpashop.domain.Category at org.hibernate.type.descriptor.java .spi.UnknownBasicJavaType.getRecommendedJdbcType( UnknownBasicJavaType.java:37 ) at org.hibernate.type.descriptor.java .spi.BasicCollectionJavaType.getRecommendedJdbcType( BasicCollectionJavaType.java:74 ) at org.hibernate.boot.model.process.internal.InferredBasicValueResolver.from( InferredBasicValueResolver.java:222 ) at org.hibernate.mapping.BasicValue.buildResolution( BasicValue.java:480 ) at org.hibernate.mapping.BasicValue.resolve( BasicValue.java:310 ) at org.hibernate.mapping.BasicValue.resolve( BasicValue.java:300 ) at org.hibernate.boot.internal.InFlightMetadataCollectorImpl.lambda$processValueResolvers$4( InFlightMetadataCollectorImpl.java:1842 ) at java.base/java.util.ArrayList.removeIf( ArrayList.java:1682 ) at java.base/java.util.ArrayList.removeIf( ArrayList.java:1660 ) at org.hibernate.boot.internal.InFlightMetadataCollectorImpl.processValueResolvers( InFlightMetadataCollectorImpl.java:1841 ) at org.hibernate.boot.internal.InFlightMetadataCollectorImpl.processSecondPasses( InFlightMetadataCollectorImpl.java:1827 ) at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete( MetadataBuildingProcess.java:328 ) at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.metadata( EntityManagerFactoryBuilderImpl.java:1380 ) at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build ( EntityManagerFactoryBuilderImpl.java:1451 ) at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory( SpringHibernateJpaPersistenceProvider.java:75 ) at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory( LocalContainerEntityManagerFactoryBean.java:376 ) at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory( AbstractEntityManagerFactoryBean.java:409 ) at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet( AbstractEntityManagerFactoryBean.java:396 ) at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.afterPropertiesSet( LocalContainerEntityManagerFactoryBean.java:352 ) at org.springframework.beans.factory.support .AbstractAutowireCapableBeanFactory.invokeInitMethods( AbstractAutowireCapableBeanFactory.java:1816 ) at org.springframework.beans.factory.support .AbstractAutowireCapableBeanFactory.initializeBean( AbstractAutowireCapableBeanFactory.java:1766 ) ... 62 more
안녕하세요 강사님, 좋은 강의 잘 듣고 있습니다! 다름 아니라, 아래 캡쳐와 같이(캡쳐하기 위해 일부러 sleep을 걸고 진행했습니다.), resetMapOptions를 실행하면서, morph를 못찾겠다면서 그냥 화면을 새로고침만 해버립니다. 제가 사용하는 환경은 아래와 같고, "next": "^13.4.9", "react": "^18.2.0", "react-dom": "^18.2.0", "@types/navermaps": "^3.6.5", next.config.js도 말씀주신대로 잘 따라했고 /** @type {import('next').NextConfig} */ const nextConfig = { reactStrictMode: false, } module.exports = nextConfig 모든 컴포넌트 제일 상단에 'use client'도 명시했는데 왜 안되는지 모르겠네요 ㅜㅜ 도움주시면 감사하겠습니다..! 어쩌면 버전의 문제일 수도 있을 것 같은데.. 주변에 물어볼 사람이 없어서 강사님께 한 번 고민 부탁드려봅니다! 감사합니다.
안녕하세요 섹션 12-7의 코딩시간 풀이 내용 올려봅니다. 아쉬운 부분이나 틀린 사항이 있다면 알려주세요! "use strict"; var list = []; //html에 들어갈 배열 자리 생성 list.push("<ul>"); //push를 활용하여 html에 먼저 자리 잡아야할 ul 태그를 list 배열에 삽입 for (let i = 1; i < 11; i++){ //1~10까지의 li를 넣기 위해서 for문 작성 list.push("<li id=id" + i + ">" + "id" + i + "</li>") }; //id값의 숫자는 1~10까지를 표현하기 위해 숫자가 아닌 변수 i로 작성필요 list.push("</ul>"); //배열의 마지막에 ul 닫는 태그를 넣어줌 document.body.innerHTML = list.join(""); //최종적으로 html에 넣어줄 때는 콤마 없이 배열의 모든 요소를 하나로 연결해 주기 위해 join에 인자를 ""로 설정하여 준다.
안녕하십니까 큰돌님 Q. 3 * 3 맵을 입력받아야 함. 이 맵은 1과 0으로 이루어져있고 {0, 0}은 무조건 1임을 보장한다. {0, 0}부터 4방향을 기준으로 한칸씩 탐색해나가며 방문한 정점은 다시 방문하지 않으며 방문하는 좌표를 출력하는 코드. 0은 갈 수 없는 지역. 1은 갈 수 있는 지역을 구현하시오. 1. 문제의 뜻이 {0, 0}을 기준으로 4방향으로 탐색하는데 다 0이면 그 다음 칸인 {0, 1}로 이동하는데 0이니까 그 다음 칸인 {0, 2}를 기준으로 4방향을 탐색하는데 밑에 1이 있으니까 {1, 2}를 기준으로 또 4방향으로 탐색하고~, 이렇게 하라는 뜻이 아닌 거죠 ?? 저는 0 : 0 1 : 0 0 : 2 1 : 2 2 : 2 2 : 1 이렇게 출력되게 해야하는 줄 알았는데 위 문제의 답 코드를 실행시키면 0 : 0 1 : 0 이렇게 나와서 제가 이해력이 안 좋아서 질문드립니다 ㅎ dfs까지 추가로 강의를 들었는데 위 퀴즈의 go 함수 로직이 사실 dfs 로직인 건가요 ?? 종화는 방구쟁이야! 문제의 dfs 로직과 위 퀴즈의 go 함수 로직과 거의 유사해보여서요 ) 트리 순회의 조건문 visited[here] == 0 안의 로직에서 중위 순회에서만 else-if 문을 사용하는데 http://boj.kr/9ed45ee550c0492081f5cbd187a7c71d 이런식으로 전위, 후위에서도 자식 노드가 한 개 아니면 두 개 둘 중에 하나니까 두 번 if문 볼 필요없게 else-if문 사용해도 되는거죠 ??