head가 string이라 가정하면 int(head)-> 변환된 int를 리턴 float(head)->변환된 head를 리턴 case로 비교시 기존 자료형과 변화된 자료형을 비교하여 원래 자료형이 int나 float가 아니면 false 인건가요? 그리고 | 연산자가 있으니 if head원래 자료형 == head를 int로 바꾼 즉 int 자료형 | head 원래 자료형== head를 float으로 바꾼 즉 float 자료형 인건가요?
구현하고 예제 및 반례를 넣어보고 디버깅도 나름 해봤는데 도저히 틀린 점을 못 찾겠습니다. 강의와 접근 방식이 조금 다르지만 비슷한 것 같은데 어떤 점에서 틀린 건지 알려주시면 감사할 것 같습니다 ㅠㅠ #include <bits/stdc++.h> using namespace std; int N, M, K, mp[51][51], temp_mp[51][51], ret=INT_MAX; vector<vector<int>> v; vector<int> choose_v; int visitied[10]={0,}; int dy[4]={1,0,-1,0}, dx[4]={0,1,0,-1}; void rotate(int y,int x,int sz){ for (int i=1;i<=sz;i++){ int start_y=y-i; int start_x=x-i; int start_val=temp_mp[start_y][start_x]; int temp_y=start_y; int temp_x=start_x; for (int j=0;j<4;j++){ int rotate_flag=i*2; while(rotate_flag--){ // printf("%d,%d ",temp_y,temp_x); temp_mp[temp_y][temp_x]=temp_mp[temp_y+dy[j]][temp_x+dx[j]]; temp_y+=dy[j]; temp_x+=dx[j]; } //printf("\n"); } temp_mp[start_y][start_x+1]=start_val; } } void choose(int sz,vector<int> &_choose_v){ // printf("sz: %d\n",sz); // for (int&i:_choose_v){ // printf("%d ",i); // } // printf("\n"); // printf("%d %d\n",visitied[0],visitied[1]); if (sz==K){ for (int i=1;i<=N;i++){ for (int j=1;j<=M;j++){ temp_mp[i][j]=mp[i][j]; } } for (int i=0;i<10;i++){ visitied[i]=0; } for (int&i:_choose_v){ rotate(v[i][0],v[i][1],v[i][2]); for (int j=1;j<=N;j++){ int sum=0; for (int k=1;k<=M;k++){ sum+=temp_mp[j][k]; } if (sum<ret){ ret=sum; } } } //printf("\n"); return; } for (int i=0;i<K;i++){ if (find(_choose_v.begin(),_choose_v.end(),i)==_choose_v.end()){ _choose_v.push_back(i); visitied[i]=1; choose(sz+1,_choose_v); visitied[i]=0; _choose_v.pop_back(); } } } int main() { cin >> N >> M >> K; for (int i=1;i<N+1;i++){ for (int j=1;j<M+1;j++){ cin >> mp[i][j]; } } for (int i=0;i<K;i++){ vector<int> temp_v; for (int j=0;j<3;j++){ int temp; cin >> temp; temp_v.push_back(temp); } v.push_back(temp_v); } choose(0,choose_v); // for (int i=1;i<N+1;i++){ // for (int j=1;j<M+1;j++){ // printf("%d ",temp_mp[i][j]); // } // printf("\n"); // } cout << ret; } choose()함수를 통해 순열을 만들고 choose()의 인자인 sz가 K가 되면, 순열의 순서에 맞게 rotate한 후 최솟값을 찾을 수 있도록 작성했습니다.
sample_decoder = Decoder(num_layers=2, d_model=512, num_heads=8, dff=2048, target_vocab_size=8000, maximum_position_encoding=5000) x = tf.random.uniform((64, 26), dtype=tf.int64, minval=0, maxval=200) output, attn = sample_decoder(x, enc_output=sample_encoder_output, training=False, look_ahead_mask=None, padding_mask=None) output.shape, attn['decoder_layer2_block2'].shape 위 코드 결과 output은 (TensorShape([64, 26, 512]), TensorShape([64, 8, 26, 62])) 인데요. atten output size 64 x 8 x 26 x 62는 batch x head num x seq_len x depth(=len_k) 의 사이즈일것 같은데요. depth의 경우, d_model(512) / num_head(8) = 64 가 되야하는게 아닌지요? 62인 이유가 궁금합니다.
$ yarn android yarn run v1.22.19 $ react-native run-android info Starting JS server... info Launching emulator... info Successfully launched emulator. info Installing the app... > Configure project :react-native-flipper WARNING:Software Components will not be created automatically for Maven publishing from Android Gradle Plugin 8.0. To opt-in to the future behavior, set the Gradle property android.disableAutomaticComponentCreation=true in the `gradle.properties` file or use the new publishing DSL. > Task :app:installDebug Installing APK 'app-debug.apk' on 'Nexus_5_API_30(AVD) - 11' for :app:debug Installed on 1 device. Deprecated Gradle features were used in this build, making it incompatible with Gradle 9.0. You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins. See https://docs.gradle.org/8.0.1/userguide/command_line_interface.html#sec:command_line_warnings BUILD SUCCESSFUL in 7s 72 actionable tasks: 2 executed, 70 up-to-date info Connecting to the development server... 8081 info Starting the app on "emulator-5554"... Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.fooddelivery/.MainActivity } Done in 16.52s. 그냥 yarn android만 입력시에는 터미널이 따로 하나 띄워지는데 메트로 서버 없이 빈 터미널이 띄워집니다. RR로 리셋후 yarn start로 매트로서버를 수동으로 실행시킨뒤에는 에뮬레이터 키고 연결이 잘 되는데 yarn android만 입력했을때는 메트로 서버가 자동으로 실행이 안되는데 해결 방법이 있을까요? 윈도우 11 java 11.0.20 node 18.16.1 사용중에 있습니다.
안녕하세요. 강의 정말 잘 듣고 있습니다! isAdult() 함수를 custom getter를 활용한 프로퍼티 변환에 대한 부분인데요.. fun isAdult(): Boolean { return age >= 20 } fun isAdult2() = age >= 20 val isAdult5 get() = this.age >= 20 var isAdult6 get() = this.age >= 20 set(value) {} var isAdult7 = false get() = this.age >= 20 isAdult() 함수를 변환하는 여러가지 방법들을 시도해 보았는데요. 다 동일한 결과를 얻더라구요. isAdult2() 는 return 하는게 단일값 이면 block 을 없애고 반환 타입도 생략한 방법이고 isAdult5는 수업시간에 보여주신 custom getter를 활용한 방법입니다. Q1. isAdult를 val 이 아닌 var로 바꿔봤고 아래 코드처럼 써보니 빨간줄이 뜨더라구요. var isAdult8 get() = this.age >= 20 val은 getter만 있어야 되지만, var은 setter도 있어야 하는건가 싶어서 isAdult6처럼 custom setter도 명시를 하니까 빨간줄이 사라지더라구요. 그래서.. 'var로 프로퍼티를 선언했고, custom getter를 명시했다면, custom setter를 반드시 명시해줘야 하는건가?' 라고 이해하려 했는데, isAdult7의 경우 따로 custom setter를 명시해주지 않아도 빨간줄이 뜨지 않더라구요. 어떤 방식으로 이해해야 할지 감이 안오네요. 요약: isAdult8는 왜 안되고 isAdult6과 isAdult7은 왜 되는건가요? Q2. val person2 = Person("KIM", 10) println(person2.isAdult5) // false person2.age = 20 println(person2.isAdult5) // true 제가 지금까지 이해하기로는 val은 자바에서 final 같은거라 한번 값이 초기화되면 값을 변경 못해야 될것 같은데,, isAdult5 처럼 val로 선언했을때 isAdult5가 false를 한번 가리키게 되면 계속 false만 가리키고 있어야할것 같은데, Person의 age 값을 10에서 20으로 변경하면 val로 선언한 isAdult5이 true로 변경이 되네요. 물론 성인 여부를 확인해야 되는 기능상 age가 바뀌면 그에 따라 결과도 바뀌는것이 당연히 자연스러운것이긴 한데, 문법적으로 val 프로퍼티의 값이 어떻게 변경될 수 있는지 의아합니다. 요약: val 프로퍼티 인데도 왜 값이 변경될 수 있나요? final 개념으로 이해하면 안되는 건가요 감사합니다.
제가 아직 word embedding 이 NN으로 들어갈 때 어떻게 학습하는지 개념이 헷갈리는것 같습니다. 먼저 기초적인 질문이라 죄송합니다 ^^;; 교재에서 Position-wise Feed Forward NN는 단어별로 별도로 적용된다고 설명해주셨는데요! 예를 들어, 강의 교재의 10(=seq_len=단어의 갯수) x 512(=d model) 이 dff가 2048인 Position-wise Feed Forward NN에 input으로 들어오면, 첫번째 단어(1x512 vector)가 feed forward nn에 들어와서 학습 후 동일한 nn에 두번째 단어(1x512 vector)가 들어와서 학습 ... 열번째 단어도 동일한 과정으로 feed forward nn이 학습되는 개념이라고 이해하면 될까요? 항상 상세한 답변에 감사드립니다.
하노이탑 문제가 어떻게 재귀의 기본문제일까요.. 다른 재귀문제 많이 풀어봤지만, 하노이탑은 정답 안 본 상태에서 며칠이고 고민해도 못풀었었고 지금도 사실 잘 모르겠네요. 그냥 아래 항목들을 외워서 재귀 함수 호출하면 된다고 암기했습니다. n-1만큼 A에서 B로 옮기기 가장 큰 원반 A에서 C로 옮기기 나머지를 B에서 C로 옮기기 영상으로 보면 코드 한 줄 한 줄 실행되는 과정 보여주시면 "되니까 신기하네"라고 생각은 하지만, 1번 과정 중에 3번도 간헐적으로 일어나고, 3번하다가 1번도 계속 일어나면서 얼기설기 엉켜있어서 이해하기 힘드네요. 다들 대략적인 형태를 기억해서 푸는것일뿐 정확히 탑이 이동하는 절차 순서에 대해서 파악하고 쓰는건 아니겠죠?!
사놓고 안 듣다가 이제 제대로 Redis를 학습해보려고 합니다. Redis Template를 사용하는 방식과 그냥 Repository를 사용하는 방식이 있다고 들었습니다. Redis Template 말고 interface RedisRepository extends CrudRepository<> 쿠폰 발급을 이렇게 정의해서 사용할 수 있나요?
우선 강의를 완강하고 추가학습으로 카카오 소셜로그인을 구현해보고 있습니다. (강의 너무 잘들었습니다!) https://github.com/crossplatformkorea/react-native-kakao-login 위 라이브러리 사용해서 카카오 개발자 페이지의 설정도 모두 마치고 플랫폼 등록도 하여 시뮬레이터로 시도하면 아래와 같은 오류가 발생합니다. Optional({ error = misconfigured; "error_code" = KOE009; "error_description" = "invalid android_key_hash or ios_bundle_id or web_site_url"; }) 찾아보니 전부 Xcode의 번들 ID와 카카오에 등록한 IOS 플랫폼 번들 ID가 달라서 그렇다고 하는데 실기기에 연결하면 정상적으로 카카오에 로그인시도 성공되어 응답값도 받고 있습니다. 구글링을 해도 도저히 해결이 안되서 이렇게 질문을 남기게 되었는데 혹시 제가 놓친 부분이 있을까요? 번들 ID 문제인가 싶어서 다른걸로도 바꿔서 시도해봤는데 역시 시뮬레이터에서만 안됩니다ㅠ
질문은 아니고요. 수업자료 버튼을 눌러서 받는 파일은 실제 수업 영상에서 언급하신 서울시에서 제공하는 인구관련 csv 파일이 아니라 다른거네요. 물론 아래 스크롤 해서 링크로 들어가면 되지만 이 부분에 대한 설명이 필요해 보입니다. 혹은 수업자료 버튼 눌러서 받아지는 파일이 잘못 업로드 된건지도 모르겠네요
[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
아래 스크린샷처럼 appbar 중앙 정렬이 안되는데 몇번을 돌려봐도 강사님과 같은 코드입니다. 어떤 옵션이 추가 되어야 할까요?? - 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 코드팩토리 디스코드 https://bit.ly/3HzRzUM Flutter 강의를 구매하시면 코드팩토리 디스코드 서버 플러터 프리미엄 채널에 들어오실 수 있습니다! 디스코드 서버에 들어오시고 저에게 메세지로 강의를 구매하신 이메일을 보내주시면 프리미엄 채널에 등록해드려요! 프리미엄 채널에 들어오시면 모든 질의응답 최우선으로 답변해드립니다!
@Bean public MemberService memberService(){ return new MemberServiceImpl(); } 위 코드에서 스프링 컨테이너는 memberService라는 빈 이름과 return 되는 구현 객체 MemberServiceImpl에 대해 매핑 테이블을 두는 것으로 이해했는데요, 그럼 bean으로 등록되는 class는 MemberServiceImpl 뿐인건가요? MemberService는 Type이기 때문에 또 자동 등록되는건가요?
FName의 경우 전역 풀에 key값으로 저장된다고 하셨습니다. 그렇다면, 예를 들어 함수로 FName타입의 InFName을 받아와서 새로운 FName에 할당을 한다고 한다면, FName temp = InFName; 을 수행하면 알아서 키 값만 복사 저장이 되나요? 아니면 const FName& temp = InFName; 이런 식으로 저장하여 복사 연산이 일어나지 않도록 하는 것이 좋나요? 함수의 파라미터로 FName 값을 받을 때나, (ex) void Func(FName InFName); or void Func(const FName& InFName); 클래스 속성에 FName을 할당하고 싶을때 (ex) class ~~ { // FName은 전역 풀에서 관리가 되니 따로 복사해서 들고 있을 필요가 없을 것 같다? FName* temp; } or class ~~ { FName temp; } 어떻게 해야하는지 궁금한데 엔진 코드에서 할당 연산자 오버로딩을 못 찾겠어서 질문드립니다.
convertUSD(converter, 2); 강의 내용 중 위의 코드가 다시 아래의 코드로 변하던데, 이부분이 이해가 되지 않습니다. convertUSD(public void convert(int USD) { System.out.println(USD + " 달러 = " + (USD * 1400) + " 원"); }, 2); converter은 객체이고, 아래의 코드는 함수인데 왜 이꼴이 되는걸까요?