Lowest common ancestor of a binary tree문제에서 아래 코드가 정답 코드로 알고 있는데, # Definition for a binary tree node. # class TreeNode: # def __init__(self, x): # self.val = x # self.left = None # self.right = None class Solution: def lowestCommonAncestor( self, root: "TreeNode", p: "TreeNode", q: "TreeNode" ) -> "TreeNode": if root == None: return None left = self.lowestCommonAncestor(root.left, p, q) right = self.lowestCommonAncestor(root.right, p, q) if root.val == p.val or root.val == q.val: return root elif left and right: return root else: return left or right # elif left: # return left # elif right: # return right # else: # reutrn None 위 코드에서 아래 부분을 해주는 이유가 무엇인지 궁금합니다. if root.val == p.val or root.val == q.val: return root elif left and right: return root else: return left or right
교재의 예제 3번에서 a+b는 30이 되고, a-b는 10이 되어서, 30은 2진수로 11110이고, 10은 2진수로 1010이므로 xor연산 결과로 10100이 되어 답은 20이라고 생각했습니다. 하지만 실행결과는 10이라고 출력됩니다. 구글에서 xor 연산 계산기를 검색하여 나온 계산기로 XOR Calculator Online, MiniWebtool에서는 30과 10의 연산결과가 20이라고 나오는데, 어떤게 맞는건지 모르겠습니다. 아래는 제 코드입니다. #include <stdio.h> int main(void) { int a = 20, b = 10; a = a + b; b = a - b; printf("%d\n", a ^ b); return 0; }
안녕하세요, 공지로 알려주신 캐글 T2-6(시계열데이터가 있는 문제)를 풀고 있는데요! 모델 학습을 하는 과정에서 모델 별 평가 점수가 너무 크게 차이 나서 문의드립니다. 우선 풀이와 조금 다른점이 있다면 , 전처리 과정에서 datetime의 년,월,일 뿐만 아니라 시,분,초까지 칼럼으로 추가했다는 점입니다. train.head() 선형회귀로 학습했을 때) RMSE : 141.97306616836775 R2 : 0.39335324789512727 랜덤포레스트로 학습했을 때) RMSE : 44.64624546594813 (하이퍼파라미터 튜닝x) R2 : 0.9400079312167055 모델을 선형회귀로 학습했을 때랑 랜덤포레스트로 학습했을 때 점수차이가 너무 크게 나는데 뭔가 잘못된 부분이 있는걸까요..? 풀이의 모델들 점수가 오히려 선형회귀모델과 비슷한 0.4 정도가 나오는 것으로 보여서 이렇게 유난히 높게 나오는 랜덤포레스트 모델을 선택해도 괜찮은 것인지 궁금합니다. 확인 부탁드립니다!
이번 강의 코드와 100% 유사한 백준 문제가 있어서 풀었는데 98%에서 오답처리 되었습니다. 강사님의 강의를 이해하고 풀다보니 강의와 코드가 똑같은데 왜 오답이 나오는건가요?? https://www.acmicpc.net/problem/11053 제 코드는 이렇습니다. import java.util.*; class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int[] arr= new int[n]; for(int i=0; i<n; i++) arr[i] = sc.nextInt(); int[] dp= new int[n]; int answer=0; dp[0]=1; //solve for(int i=1; i<n; i++){ int tmp=0; for(int j=i-1; j>=0; j--){ if(arr[i] > arr[j]) tmp=Math.max(tmp, dp[j]); } dp[i]=tmp+1; answer=Math.max(answer,dp[i]); } System.out.println(answer); } }
CTR과 CVR 개념 부분 흥미롭게 들었습니다!CTR이 높은데 CVR이 낮을 수도 있는 콘텐츠가 있을 수 있을텐데,이 때, 특정 콘텐츠를 클릭한 사람 100명 중에 전환한 사람 N명을 알려면어떻게 해야하는지가 궁금합니다! 또, 말씀 주신 것처럼여러 퍼널 중에 이탈할 수도 있고특정 콘텐츠의 영향을 받아서 구매 전환했다고 확실하게 생각하기도 어려운데이럴 때는 어떻게 해야 할까요???
안녕하세요 파이썬 사용 중 제목과 같은 에러가 발생하는데, 따로 건드린 설정 등은 없습니다. 에러는 pip --version, python -m pip install --upgrade pip 등을 사용할 때 발생하고 일반 파이썬 파일 실행 시엔 발생하지 않습니다. (ppirnt 라이브러리 사용시엔 실행x) 에러가 발생하는 파이썬 디렉터리에 보니 pprint_ 1.py 로 되어 있어 pprint.py 로 변경하니 에러는 해결되었습니다. 혹시 이렇게 파이썬 기본 라이브러리명이 변경되는 경우가 있나요??
최종 제출시에 train_test_split을 통해 나누어진 X_tr,y_tr을 학습한 모델로 답을 제출하면 X_val 데이터 만큼의 데이터를 학습하지 못해 손해가 발생할 것 같습니다. 데이터를 X_tr,X_val,y_tr,y_val 로 나누어서 어떤 모델이 가장 성능이 좋은지 검증한 후에 최종 제출할때는 전체데이터를 다시 학습한 모델로 pred 를 만들어 제출할려고 하는데 이렇게 해도 문제가 없을지 궁금합니다
[질문 내용] 여기에 질문 내용을 남겨주세요. 둘다 save 메서드가 있는데 itemRepository 에서 save와 MemberRepository save에서 저장을 하게되면 아직 db에 insert를 한게 아니기 때문에 item이나 member은 id값은 먼저 null인 상태에서 메서드에 들어가고 em.persist을 하게되면 member은 바로 db에 들어가 id를 부여 받고 item도 당연히 null이니까 db에 들어가 id를 부여 받는 것이죠? member은 수정할 일이 없는데 item은 수정할 일이 있기 때문에 item의 id값이 있으면 em.merge로 수정할 수 있는 로직을 넣은 거구요 제가 이해한 것이 맞을까요?
안녕하세요 교수님, 람다 함수 캡쳐 관련 질문이 있어서 글을 올렸습니다. fps 프로젝트를 만들고 있는데, VICharacter 에서 reload 를 호출하면 VIWeaponbase를 상속받는 AKWeapon 에서 Reload 함수가 호출이 되는 형식입니다. VICharacter 에 bIsReloading 을 선언해 놓았는데, AKWeapon에서 캐릭터 참조를 가져와 재장전이 끝난 후 setter 로 false 설정을할 때 Timerdelegate 람다식에서 Character에 액세스를 하지 못합니다. 제 생각에는 참조의 생명 주기에 문제는 없는 것 같은데,, 왜 람다식 안에서만 캐릭터 참조를 사용 못하는지 모르겠습니다. 아래는 Reload 코드와 프로젝트 깃허브 주소입니다. void AVIAKWeapon::Reload() { Super::Reload(); if (UWorld* World = GetWorld()) { APlayerController* PC = UGameplayStatics::GetPlayerController(World, 0); if (PC) { AVICharacter* Character = Cast<AVICharacter>(PC->GetCharacter()); if (Character) { if (AmmoCount < MaxAmmo) { if (!bDoOnceReload && !Character->GetbIsReloading()) { Character->SetbIsReloading(true); Character->GetFirstPersonMesh()->GetAnimInstance()->Montage_Play(AKReloadActionMontage, 1.0f); Mesh->PlayAnimation(ReloadActionAnimation, false); FTimerHandle ReloadTimeHandle; GetWorld()->GetTimerManager().SetTimer(ReloadTimeHandle, FTimerDelegate::CreateLambda([&]() { Character->SetbIsReloading(false); AmmoCount = MaxAmmo; //DF("EndTimer bisRelaoding %d", Character->GetbIsReloading()) // TimerHandle 초기화 GetWorld()->GetTimerManager().ClearTimer(ReloadTimeHandle); }), ReloadTime, false); bDoOnceReload = false; } } } } } } https://github.com/chataeg/VI/tree/Part7
안녕하세요! 마름모 별찍기 문제입니다 ! 우선 위에 마름모는 출력을 하였는데 밑으로 다시 내려오는 마름모가 안되어서 질문 드립니다. for(let j =0; j<6 ;j++){ if(j % 2 ===0) continue for(let i =0; i<3; i++){ for(i+ j+i ===5) console.log(' '.repeat(i)+ '*'.repeat(j)+' '.repeat(3-i)); } } 이 for문 에서 종료식을 바꿔야될것 같은데 지금은 종료식이 1씩 더해지는 것인데 혹시 종료식이 1씩 빼지는 것도 동시에 할수 있는 것 이 있을까요? 아니면 그림에 나온것 처럼 따로 k를 만들어서 해야되는 걸까요? 아니면 콘솔로 나온 결과는 반대로 해서 한번더 다시 나올수 있도록 해야되나? 라는 생각도 해보았습니다.