분류 전체보기
-
[PS] 백준 9935번: 문자열 폭발문제해결 2023. 11. 20. 15:58
문자열 폭발 int pos = str.find(bomb); while (pos != string::npos) { str.erase(str.begin() + pos, str.begin() + pos + bomb.size()); pos = str.find(bomb); } 혹시나 싶어 이런식으로 날먹을 시도해봤는데, 역시 안되더라 #include using namespace std; #define endl "\n" #define FOR(i, N) for (int i = 0; i > str >> bomb; FORL(e, st..
-
[PS] 백준 11689번: GCD(n, k) = 1문제해결 2023. 11. 20. 14:44
GCD(n, k) = 1 1'000'000까지의 소수를 모두 만들고, 소인수분해 한 후 오일러 곱 공식을 이용해서 풀려고 했다. 하지만 반례를 못찾아서 계속 끙끙대다 결국 답지를 열어버렸다. 반례는, 소인수분해를 했을 때, 소인수가 p, q, r, s일 경우 $ans = n\times \left ( 1-\frac{1}{p} \right )\times \left ( 1-\frac{1}{q} \right )\times \left ( 1-\frac{1}{r} \right )\times \left ( 1-\frac{1}{s} \right )$ 이 답이 되는데, s가 만약 1'000'000보다 큰 수라면, 해당 연산에 포함되지 못해 생기는 문제였다. 남은 s를 소인수에 추가해서 해결했다. 저번에도 정확히 같은 문..
-
[PS] 백준 17390번: 이건 꼭 풀어야 해! (입출력 관련)문제해결 2023. 11. 9. 16:40
이건 꼭 풀어야 해! 엄청 쉬운 문제인데 입출력 관련 이슈를 깨달아서 블로그 쓴다. 아래 코드로 시간초과가 나는데 30만개를 정렬만 해주는 코드가 1초가 넘을리가 없고 너무 이상했다. #include using namespace std; #define FOR(i, n) for(int i = 0; i > N >> Q; FOR(i, N) cin >> arr[i]; sort(&arr[0], &arr[N]); sum[0] = arr[0]; for(int i = 1; i < N; i++) sum[i] = sum[i - 1] + arr[i]; ..
-
[PS] 백준 1882번: 분수 찾기, 30449번: Reafy 수열문제해결 2023. 11. 7. 23:59
분수 찾기 Reafy 수열 이 링크 참고해서 어거지로 풀었다. 요약하자면, 이런식으로 a/b, c/d를 알 때 다음항인 p/q를 알 수 있다는 뜻이다. 이걸로 Reafy 수열은 간단하게 해결. 근데 이걸로 분수 찾기를 하려고 하니 너무 당연하게도 시간초과가 났다. Reafy 수열의 다른사람들 코드를 보니깐 int find_pos(int a, int b) { int ret = 0; for(int i = 1; i > K; int a = 0, b = 1, c = 1, d = N; if (K == 1) { cout
-
[드론] unilidar + pointlio 세팅완료개발 로그/바코드 드론 2023. 11. 4. 19:14
ros2 + lio-sam을 쓰고싶어서 계속 시도해봤는데, 결국 그냥 유니트리가 만든 pointlio 쓰기로 했다. 하루종일 lio-sam 세팅했던게 무색하게 도커에 pointlio 깔자마자 바로 매핑이 되었다. 이제 오프보드컨트롤을 해봐야겠다. 실행 명령어 xhost +si:localuser:root docker run -it -e DISPLAY --device=/dev/ttyUSB0 --privileged -v /docker_folder:/docker_folder -v /dev:/dev -v /tmp/.X11-unix:/tmp/.X11-unix --network=host soar:2.0 깃허브 링크 참고 unilidar, pointlio 실행 명령어 # run unilidar cd unilidar_s..
-
[PS] 백준 13908번: 비밀번호문제해결 2023. 11. 2. 00:30
브루트포스문제에 어느정도 자신감이 붙은 상태였는데 실버문제에 별안간 꺾여버렸다. 제한이 생각보다 많이 타이트했던 것... 아래 코드블럭 중 1번 코드블럭으로 아무리 제출해도 TLE가 나던데, 아무리 생각해도 실버 브루트포스문제가 이것보다 더 어려울 것 같지가 않아서 궁리를 했다. 결국 문제를 찾았는데 if (!flag0) return; 이자식. 이자식으로 쓸모없는 탐색을 스킵해줘야한다! if (str.find(c) == string::npos) 앞으로는 그냥 깔끔하게 이걸 쓰자... string::npos 기억해두자!! #include using namespace std; #define endl "\n" #define FOR(i, N) for (int i = 0; i < int(N); i++) #defi..