알고리즘(51)
-
백준 14888 연산자 끼워넣기 c++
해당 문제는 백트래킹 문제로 풀었다. 앞에서 소개한 문제와 거의 비슷한 방식으로 풀었다. 수열을 두고, 수열 각각의 원소에 대해 +, -, *, / 를 차례로 반복문을 돌았다. 1+2+3 1+2-3 1+2*3 1+2/3 1-2+3 1-2-3 1-2*3 1-2/3 ... 이런식으로 구성될 수 있도록 코드를 짰다. 세번정도 틀렸는데, 첫번째로는 정수형을 가장 크게 한다고 unsigned int 라고 잡았는데, 뺄셈이 있기 때문에 음수의값이 나올 수 있다. 그래서 이 부분때문에 틀렸다. 두번째로는 43% 정도에서 틀렸습니다가 계속 떴다. 질문게시판을 확인해보니 min_ans, max_ans 값으로 둔 값이 987654321이 정수형의 최대값이 아니어서 틀린 것 같다. c++에서는 climits라는 라이브러리에..
2023.08.01 -
백준 13458 c++ 시험감독
13458 문제는 수학 문제이다. 간단한 문제인데 한번 틀렸다. 이 문제에서 놓칠 수 있는 부분은 두가지이다. 1. 어떤 부분의 자료형을 큰 것을 쓸 지 2. 사소한 알고리즘 실수 1번 같은경우에는 시험 감독의 수만 unsigned int로 선언하면 된다. 내가 실수했던 부분은 v[i]=v[i]-B해서 총 감독관이 감시할 수 있는 응시생만큼을 뺀 후 0보다 작을 경우에 부감독관을 할당하지 않아도 되는 부분을 뺐다. 고치고 나서 맞았다 #include #include #include using namespace std; int N, B, C; unsigned long long total; vector v; int main(void) { cin.tie(NULL); ios::sync_with_stdio(fal..
2023.08.01 -
백준 3190 뱀 c++
해당 문제는 구현문제이다. 몇가지 어려움이 있었다. 1. 테스트케이스 3번 테스트케이스 2번과 테스트케이스 3번이 다른 답을 내는 것은 뱀은 몸을 먼저 늘린 후에 방향 전환을 하기 때문이다. 13초에 뱀이 머리를 늘리면 꼬리와 닿게 되기 때문에 13초에 끝나게 된다. 2. 방향 전환 배열 선언 방향 전환하는 배열을 static하게 dir[101] 이런식으로 세웠었다. 하지만 시간이 101만큼 들어오지 않고 n*n 행렬이라고 할 때 여러번 순환을 한다고 하면 n*n*n .. 으로 계속 들어올 수 있고 이는 세그멘테이션 폴트를 야기할 수 있다. 따라서 map을 사용했다. vector을 사용할 수 있지만 time n 에 대해 방향 전환을 하는지 쉽게 찾기 위해서는 key와 value를 갖는 map이 나을 것 ..
2023.08.01 -
백준 15686 치킨배달 c++
//15686 #include #include #include #include #include using namespace std; int N, M; int arr[51][51]; int ans; vector v; vector house; void calclulate(vector &chicken){ int total = 0; for (int i = 0;i < house.size();i++) { int val = 987654321; for (int j = 0;j < chicken.size();j++) { val = min(val, abs(chicken[j].first - house[i].first) + abs(chicken[j].second - house[i].second)); } total += val;..
2023.07.27 -
백준 15683 c++
#include #include #include #include using namespace std; int N, M; int ans; int arr[9][9]; int dx[4] = { 1, 0, -1, 0 }; //90도 방향으로 수정 int dy[4] = { 0, 1, 0, -1 }; vector v; int count(void) { int cnt=0; for (int i = 0;i < N;i++) { for (int j = 0;j < M;j++) { if (arr[i][j] == 0) { cnt++; } } } return cnt; } void copy(int cpy0[9][9], int cpy[9][9]) { for (int i = 0;i < N;i++) { for (int j = 0;j < M..
2023.07.26 -
boj14891 톱니바퀴 c++
코드 #include #include #include #include #include using namespace std; void rotate(deque &v, int dir) { int f; if (dir == 1) { f = v.back(); v.pop_back(); v.push_front(f); } else if (dir == -1) { f = v.front(); v.pop_front(); v.push_back(f); } } int cal(vector v) { int total = 0; for (int i = 0;i < 4;i++) { if (v[i + 1][0] == 1) { total += pow(2, i); } } return total; } int main(void) { // cin.tie..
2023.07.25