본문 바로가기

전체 글330

피보나치 수 수학에서 피보나치 수(Fibonacci numbers)는 첫째 및 둘째 항이 1이며 그 뒤의 모든 항은 바로 앞 두 항의 합인 수열이다. 처음 여섯 항은 각각 1, 1, 2, 3, 5, 8이다. 편의상 0번째 항을 0으로 두기도 한다. 재귀함수를 통해 푸는 방법은 가장 기본적이지만 수가 커질수록 함수 오버플로우가 발생한다. 즉, 시간초과. #include #include using namespace std; int fibonacci(int n) { if(n == 1 || n == 2) return 1; return fibonacci(n - 1) + fibonacci(n - 2); } 시간초과를 해결하는 방법은 Bottom to Top 의 방향으로 쉽게 구현할 수 있다. n번째 피보나치 수를 구하기 위해 .. 2023. 8. 12.
문자열 밀기 #include #include #include using namespace std; int solution(string A, string B) { int answer = 0; if(A == B) return 0; int i = 0; while(i < A.size()) { // 1만큼 시계 반대방향으로 이동 rotate(A.begin(), A.begin() + A.size() - 1, A.end()); i++; if(A == B) return i; } return -1; } // 발상의 전환이 필요한 코드..awesome.. int solution(string A, string B) { B += B; return B.find(A); } 2023. 8. 8.
OX퀴즈 - 문자열 파싱 #include 과 istringstream 에 대해 더 찾아보고 공부하자. >> 연산자를 사용해 정해진 타입에 대한 파싱이 가능! #include #include #include #include using namespace std; vector solution(vector quiz) { vector answer; // quiz = ["3 - 4 = -3", "5 + 6 = 11"] / result = ["X", "O"] for(auto& q : quiz) { istringstream iss(q); char separator = ' '; vector vs; string strBuff; while (getline(iss, strBuff, separator)) { // separator을 구분자로 strBu.. 2023. 8. 8.
TimerManager /** * 설정된 간격으로 지정된 기본 함수를 호출하도록 타이머를 설정합니다. * 이 핸들에 타이머가 이미 설정되어 있으면 현재 타이머를 대체합니다. * * @param InOutHandle 전달된 핸들이 기존 타이머를 참조하는 경우 새 타이머를 추가하기 전에 삭제됨. 두 경우 모두 새 타이머의 새 핸들이 반환됨. * @param InObj 타이머 기능을 호출할 개체. * @param InTimerMethod 타이머가 작동할 때 호출하는 메서드. * @param InRate 설정과 실행 사이의 시간(초). 를 사용할 경우. */ template FORCEINLINE void SetTimer(FTimerHandle& InOutHandle, UserClass* InObj, .. 2023. 7. 6.
explicit 자신이 원하지 않은 형변환이 일어나지 않도록 제한하는 키워드 class A { public: int num = 1; public: // 1. non explicit A(int n) : num(n) {}; // 2. explicit explicit A(int n) : num(n) {}; void printA(A a) { cout 2023. 7. 6.
Optimization 언젠가는 도움이 되길 바라며.. [참고 영상 링크] https://www.youtube.com/watch?v=PqNm22br7y8 추후 정리해야지.. 예를 들어 오브젝트를 돌리는 함수가 있다면 모아서 실행하는게 좋음. L1캐쉬에 올려져서 다음 함수 실행 시간이 줄어듬. 2023. 7. 5.