전체 글
-
[프로그래머스/C++] 내적C++ 문제 풀이/프로그래머스 2024. 1. 14. 17:40
1. 문제 설명 2. Solution #include #include using namespace std; int solution(vector a, vector b) { int answer = 0; for(int i = 0;i < a.size();i++) { answer += a[i] * b[i]; } return answer; } 이 문제는 그냥 벡터의 모든 요소들을 내적하면 되는 아주 간단한 문제이고 곱해서 더해주어 간단하게 해결하였다. 하지만 뭔가 내적을 해주는 라이브러리가 있을 것 같았고 다른 사람의 풀이를 보다가 찾았다. #include #include using namespace std; int solution(vector a, vector b) { return inner_product(a.b..
-
[프로그래머스/C++] 제일 작은 수 제거하기C++ 문제 풀이/프로그래머스 2024. 1. 14. 17:35
1. 문제 설명 2. Solution #include #include #include using namespace std; vector solution(vector arr) { int min_idx = min_element(arr.begin(), arr.end()) - arr.begin(); arr.erase(arr.begin() + min_idx); if(arr.empty()) arr.push_back(-1); return arr; } 이 문제는 제일 작은 수를 제거하는 것이다. 처음에는 arr를 sort 시킨 후 가장 처음의 원소가 작은 수 이므로 해당 원소를 제거하는 쪽으로 생각을 했는데 아무리 생각을 해도 좀 더 효율적인 방법이 있을 것 같아서 구글링을 하던 결과 algorithm 헤더파일의 라이..
-
[프로그래머스/C++] 없는 숫자 더하기C++ 문제 풀이/프로그래머스 2024. 1. 14. 17:25
1. 문제 설명 2. Solution #include #include #include using namespace std; int solution(vector numbers) { int answer = 0; for(int i = 0;i < 10;i++) { if(find(numbers.begin(), numbers.end(), i) == numbers.end()) answer += i; } return answer; } 본 문제는 0~9까지의 숫자 중 일부가 들어있는 정수 배열에서 없는 수를 모두 더한 수를 return 하는 것인데 본인은 find 함수를 통해서 for문에서 i 숫자를 가지고 있지 않은 수를 더해주었다. 하지만 다른 사람들의 풀이를 보다가 굉장히 신기한 풀이를 발견하였는데 #include..
-
[프로그래머스/C++] 콜라츠 추측C++ 문제 풀이/프로그래머스 2024. 1. 14. 17:19
1. 문제 설명 2. Solution #include #include using namespace std; int solution(int num) { int answer = 0; long long ln = num; while(ln != 1) { if(answer == 500){ answer = -1; break; } ln % 2 == 0 ? ln /= 2 : ln = ln * 3 + 1; answer++; } return answer; } 이 문제는 겉으로 보면 굉장히 쉬운문제이다. 하지만 치명적인 함정이 숨어있었다. 처음에 이 문제를 풀었을 때 코드 실행은 되지만 채점에서 몇가지 케이스에서 실패가 나왔다. 그 이유는 홀수의 경우 3을 곱하고 1을 더한다. 제한사항에서 num은 8,000,000미만인 정..
-
[물리 기반 시뮬레이션/PBD] 위치 기반 동역학(PBD) 소개그래픽스/물리 기반 시뮬레이션 2023. 7. 11. 20:34
1. 기존 방식 기존에 동역학을 구현하는 방식은 각각의 입자의 2차 ODE를 1차 ODE 2개로 분리할 수 있다. 이 ODE에서 내부, 외부 힘을 적용하여 Euler's Method를 풀어낸뒤 다음 위치를 추정하여 추정한 위치로 이동한다. 하지만 이런 방식의 단점은 오차가 스텝 크기에 따라 달라지고 힘을 적용하는 방식이 많아지면 더욱 더 복잡해지는 것이 단점이다. 2. Position Based Dynamics란? (PBD) Position Based Dynamics는 한국말로 위치 기반 동역학이고 앞의 Particle System Dynamics에서 다뤘듯이 입자의 위치와 속도를 사용자가 직접 할당해주는 방식이다. 직접 어떻게 할당을 할까? 기존 방식과 같이 Euler's Method를 적용하는 것 까..
-
[물리 기반 시뮬레이션/동역학] Particle system Dynamics그래픽스/물리 기반 시뮬레이션 2023. 7. 5. 22:48
1. Particle System Dynamics이란? Particle은 입자로 물체를 구성하는 가장 기본적인 요소이고 질량, 위치 속도를 가진다. Particle의 동작을 시뮬레이션할 수 있으면 물체의 운동또한 기술할 수 있기 때문에 상호작용적인 시뮬레이션의 기본인 입자 역학을 다룬다. 2. Phase Space(상태 공간) 뉴턴의 운동 제 2법칙은 익숙한 f=ma로 표시된다. 이때 가속도는 시간에 대한 위치의 2차 미분이기 때문에 다음과 같이 표시된다. 2차 미분 방정식을 푸는 방법은 여러가지가 있는데 지금은 시간에 대한 위치의 1차 미분인 속도를 도입하여 1차 미분 방정식 두개로 분리해서 풀어낼 수 있다. 이를 3차원 공간으로 확장하면 위치, 속도에 대한 축 3개로 확장하여 6차원 미분 방정식으로 ..
-
[프로그래머스/C++] 짝수와 홀수C++ 문제 풀이/프로그래머스 2023. 7. 4. 16:46
문제 이름 : 짝수와 홀수 1. 문제 설명 2. Solution #include using namespace std; string solution(int num) { string answer = ""; if(num%2==0) answer = "Even"; else answer = "Odd"; return answer; } 이 문제는 짝수와 홀수를 판별하는 매우 간단한 문제이다. 짝수와 홀수를 판별하는 방법은 매우 간단한데 2로 나눈 나머지가 0으면 짝수이고 1이면 홀수이다. 따라서 다음과 같이 각각의 경우에 Even과 Odd를 할당하면 된다. GitHub - leejy811/AlgorithmStudy: 코딩 테스트 스터디 코딩 테스트 스터디. Contribute to leejy811/AlgorithmSt..