목록전체 글 (59)
이우의 개발일지
https://www.acmicpc.net/problem/1654랜선 자르기 시간 제한2 초메모리 제한128 MB제출60448정답13186맞은 사람8508비율20.165%문제집에서 시간을 보내던 오영식은 박성원의 부름을 받고 급히 달려왔다. 박성원이 캠프 때 쓸 N개의 랜선을 만들어야 하는데 너무 바빠서 영식이에게 도움을 청했다.이미 오영식은 자체적으로 K개의 랜선을 가지고 있다. 그러나 K개의 랜선은 길이가 제각각이다. 박성원은 랜선을 모두 N개의 같은 길이의 랜선으로 만들고 싶었기 때문에 K개의 랜선을 잘라서 만들어야 한다. 예를 들어 300cm 짜리 랜선에서 140cm 짜리 랜선을 두 개 잘라내면 20cm는 버려야 한다. (이미 자른 랜선은 붙일 수 없다.)편의를 위해 랜선을 자르거나 만들 때 손..
7월달에 올렸던 글을 이어서 쓰자면, 결과적으로 STM32보드에 AI Model을 올리는 것은 실패로 끝났다. 그 이유는, STM32H747I-DISCO 보드가 기존에 쓰던 STM32 시리즈의 보드와는 다르게 GPIO, UART 등의 핀으로 설정할려고 봤는데 밑에 사진 처럼 Pin name과 MCU pin 이름이 달라서 헷갈렸고, 내가 설정한 Pin 어딨는지 찾는 것이 문제였다. 또한, 쓸 수 있는 핀의 개수가 너무 한정적이여서 우리가 할려는 로봇팔의 모터 구동 및 AI ML 모델을 돌리기에 부족했다고 생각했다. 그래서, ML 모델은 라즈베리파이4로 돌리고 로봇팔의 모터는 STM32F427i로 돌리기로 했다. 그래도 임베디드용 ML 모델이기 때문에 경량화와 최적화가 잘되어있어서 라즈베리파이로 돌리면 성..
백준 11651번 좌표 정렬하기 문제 이 문제는 간단하게 y좌표를 오림차순으로 정렬하고, 만약 y좌표가 같다면 x좌표의 오름차순으로 정렬하는 문제이다. 간단하게 x,y 를 동시에 받을려면 pair 를 써서 x,y를 한 묶음으로 저장해놓는다. 또한, sort 함수를 쓰는데 이때 x를 따지는 것이 아닌 y를 따지고, y가 같다면 x를 따져야하기 때문에 sort함수에 넣을 조건문을 따로 써준다.bool comp(pair& a, pair& b) { if (a.second == b.second) { return a.first 이런식으로 따로 쓰면 되는데, 자주 나오는 개념이니 까먹지 않는 것이 좋다. 11651번 좌표 정렬하기 C++ 전체 코드 #include #include // syst..
백준 1018번 체스판 다시 칠하기 문제 이 문제는 체스판 같은 N*N 판이나 일반적인 N*M의 표를 공략하는 문제가 있을 때 쓰면 좋을 것 같은 팁이 있다. 위의 표를 보면 B와 W가 번갈아 칠해져야하며, 위 아래 역시 번갈아 칠해져있어야 한다.빨간 색 부분의 숫자를 보면 결국에는 행과 열의 합이 일정하다. 이 말이 무슨 말이냐면 행과 열의 합이 (0,0)이 만약에 B라고 했을 때 행과 열의 합이 항상 짝수일 때는 B가 나온다. 반대로 (0,1)이 W라고 하면 행과 열의 합이 항상 홀수가 나온다. 즉, B와 W처럼 일정한 간격으로 입력해야할 때 행과 열의 합이 짝수인지 홀수 인지 맞춰서 해주면 된다. 체스판 다시칠하기 전체 코드#include using namespace std;char chass[..
백준 2252번 백준 2252번은 위상정렬을 이용해 문제를 풀 수 있습니다. 위상정렬이란?방향 그래프에서 간선으로 주어진 정점 간 선후관계를 위배하지 않도록 나열하는 정렬입니다. 이런식으로 처음으로 시작하는 정점을 먼저 큐에 놓어준 뒤, 그 정점을 pop 할 때 그 정점과 간선으로 연결된 정점의 indegree값을 빼주는 식으로 코드를 전개하면 됩니다. 백준 2252번 줄세우기 전체 코드#include #include #include using namespace std;int N[32001];vector result;vector check[32001];int main() { int n, m; cin >> n >> m; vector vec; queue que; for (int i = 0; i >..
백준 16953번 #include#includeusing namespace std;int main() { long long a, b; cin >> a >> b; queue> Q; int minn = 1000000; Q.push({ a,0 }); while (!Q.empty()) { long long n1 = Q.front().first; int n2 = Q.front().second; if (n1 == b) { minn = min(minn, n2 + 1); Q.pop(); continue; } if (n1 * 2
백준 7785번 회사에 있는 사람 이 문제는 unorderd_map을 통해 어느정도 쉽게 구현이 가능한 문제입니다. 들어가기에 앞서, 먼저 unorderde_map을 어떻게 활용하냐? void unordered_map_example(){ unordered_map m; m["hi"] = 123; m["bkd"] = 1000; m["gogo"] = 165; // ("hi", 123), ("bkd", 1000), ("gogo", 165) cout 위 코드를 보면 map에 key와 value 를 대칭해서 넣을 수 있다는 것을 확인할 수 있다. 그 안에서 find 함수와 erase 함수를 자유롭게 쓸 수 있다는 장점이 있지만, 단점으로는 해당하는 Map값이 순서대로 저장되지는 않는다는점이다. 이러한 ..
백준 1806번 부분합 1806번 부분합 풀이 이 문제 역시 투 포인터 알고리즘으로 풀어야 시간 초과가 뜨지 않는다.밑에 투 포인터 알고리즘과 그 문제에 대해 적어놓은 것이니 참고하길 바란다. [백준/C++] 2559번 수열 /투 포인터 알고리즘/ two_pointer - (1)백준 2559번 수열 2559번 수열 코딩테스트 풀이이 문제는 투 포인터 알고리즘을 통해 구현할 수 있다. 투 포인터란?배열에서 이중 for문으로 O(n^2)으로 시간 복잡도를 가지는 작업을 2개 포인터everything.pipelineleewoo.com 이 문제는 S라는 부분합의 기준 값을 줌으로써 부분합이 S를 넘겨야되며, 이 중 길이가 가장 짧은 것을 출력해야한다. 부분합 투 포인터 정답 코드 int len = 1000..