전체 글
-
백준 16455번: K번째 수 찾는 함수문제해결 2023. 11. 1. 20:55
K번째 수 찾는 함수 Reafy 수열 이 문제를 풀어보려고 이것저것 찾다가 16455번까지 오게되었다. 결국 저건 카운팅 소트로 했지만... quick selection이라는 알고리즘이 존재한다더라. 이를 이용해서 빠른 시간 이내에 k번째 수를 찾는게 정답. quick selection을 대충 조사해보니 일종의 이진탐색과 비슷해보이는데 우선 아무거나 하나를 골라서, 그 수보다 작은건 왼쪽, 큰건 오른쪽에 몰아넣으며 탐색공간을 줄여나가는 것이다. 위 그림의 4번, 5번 과정if (pivval < a[lidx] && a[ridx] < pivval) { swap(a[lidx], a[ridx]); lidx++, ridx--; }코드로는 위 부분에서 조건을if (pivval
-
백준 30446번: 회문수문제해결 2023. 10. 28. 20:53
속으로 '되게 어려운데 이게 왜 실버지' 하고 꾸역꾸역 풀어서 맞췄다. 523456789의 숫자가 나오면 우선 1~9 : 9개 10~99 : 9개 100~999 : 90개 ... 이런식으로 다 더해서 99999999까지 다 처리해두고 100000000부터 523456789까지를 셈한다 그럼 여기서도 100000000부터 499999999까지는 4 * 90000 / 9이니 이만큼 더해주고 이런식으로 가운데숫자(홀수면 한자리, 짝수면 두자리)만 제외하고 남기고 다 처리해준다. 5234 5 6789. 왼쪽을 뒤집은 4325보다 오른쪽의 6789가 더 크면 추가로 5를 더해주고 만약 숫자가 523453215라 5234 5 3215 이렇게 오른쪽이 더 작으면 추가로 4만 더해준다... 암튼 이런식으로 꾸역꾸역 해..
-
Unitree Lidar ROS2 세팅 정리개발 로그/드론 2023. 10. 27. 16:37
Unitree ROS2 SDK 공식 깃허브 링크 연결 확인 ls /dev/ttyUSB*/dev/ttyUSB0 가 뜨면 잘 연결된 것 다운 및 빌드 # download from github git clone https://github.com/unitreerobotics/unilidar_sdk.git # build cd unilidar_sdk/unitree_lidar_ros2 colcon build 실행 # 노드 실행 source install/setup.bash ros2 launch unitree_lidar_ros2 launch.py# rviz2 rviz2 -d src/unitree_lidar_ros2/rviz/view.rviz Permissin Denied 오류 serial::IOException' wh..
-
백준 2749번: 피보나치 수 3 / 11444번: 피보나치 수 6문제해결 2023. 10. 26. 20:06
피보나치 수 3 피보나치 수 6 인풋이 100경이다보니깐 O(N)으로만 해도 분명히 타임아웃이 날거라고 생각했다. 100경을 다 훑을순 없고, 100만으로 나눈 나머지만 출력하라니 대충 규칙이 있겠거니 싶었다. 여러가지 숫자로 실험하며 확인해보니 어떤 숫자 M으로 나눈 나머지로 피보나치를 하면 M - 1, 1, 0, 1, 1, 2, 3, ... 이런 구간이 존재하는 듯 했다. 미리 "M - 1, 1"이 나올때까지의 피보나치 수열을 만들어 두고 Fibonacci[N % 주기]를 출력하면 끝. 끝인줄 알았는데 0ms안에 끝나는 다른 사람들 답을 보고 답을 찾아봤다. 피보나치 수를 구하는 여러가지 방법 $\begin{pmatrix} F_{n+1}&F_n \\ F_n&F_{n-1} \end{pmatrix} = ..
-
백준 1748번: 수 이어 쓰기1문제해결 2023. 10. 25. 23:30
수 이어 쓰기1 121의 경우 한자리수가 9개 두자리수가 90개 세자리수가 121 - 100 + 1개 있을거란거 이용해서 계산해낸다.#include using namespace std; int main() { int N; cin >> N; long long ans = 0; for(int i = 0; i < int(log10(N)); i++) ans += (i + 1) * 9 * pow(10, i); ans += (int(log10(N)) + 1) * (N - pow(10, int(log10(N))) + 1); cout
-
백준 23291번: 어항 정리문제해결 2023. 10. 25. 17:30
어항 정리 하라는 대로만 하니깐 그냥 풀렸는데 하라는게 너무 많다.... ㅡ,ㅡ 큐빙에 이어서 솔브닥에 등록된 내 두번째 플레 문제이다. 다른 유형이었으면 플레 손도 못댔을텐데, 역시 날 도와주는건 구현 유형밖에 없다. #include #define FOR(i, n) for(int i = 0; i < int(n); i++) #define FORL(e, s) for(auto &e : s) #define endl "\n" #define vi vector using namespace std; int N, K; int MAP[100][100]; int dr[4] = { -1, +0, +1, +0 }; int dc[4] = { +0, +1, +0, -1 }; #define iib(r, c) (0 0) { MAP[..
-
백준 2448번: 별 찍기 - 11문제해결 2023. 10. 25. 17:28
별 찍기 - 11 log2값이 0일때 삼각형을 추가하고, 아닐 경우 위가운데, 왼쪽아래, 오른쪽아래 이 세곳으로 재귀적으로 함수를 부르면 끝! 삼성 구현 문제들 풀다보니 이정도 구현은 너무 쉽다! 삼성 고마워! 어제 풀었던 선물할인 문제가 훨씬 어려웠어.. #include #define FOR(i, n) for(int i = 0; i < int(n); i++) #define FORL(e, s) for(auto &e : s) #define endl "\n" using namespace std; int N; char MAP[4000][8000]; void print_map() { FOR(i, N) { FOR(j, 2 * N) cout N; draw(0, N - 1, log2(N / 3)); print_map..