본문 바로가기
728x90
반응형

algorithm56

[algorithm] 백준 - 톱니바퀴 이 문제는 삼성 sw 기출 문제이다. 시뮬레이션 문제이다. 중첩 if문이 깊기 때문에 헷갈릴 수 있다는 것을 조심해야한다. 서로 맞닿은 톱니는 index로 표현하면 아래처럼 맞닿아있다. A톱니바퀴가 회전할 때 서로 맞닿은 톱니의 극이 다르다면 A가 회전한 방향과 반대 방향으로 회전한다. 맞닿은 부분의 극이 같다면 회전하지 않는다. N극은 0, S극은 1, 1은 시계방향, -1은 반시계방향이다. 1. 반시계방향 회전 뒤 index값을 앞 index에 대치한다. 그리고 맨 앞 index 값은 기록해두다가 맨 뒤 Index와 대치한다. if(rotation == -1){ char firstNum = saw[sawNum][0]; for(int i = 0; i < 7; i++){ saw[sawNum][i] = s.. 2020. 12. 24.
[algorithm] 백준 - 연구소 이 문제는 삼성 SW 기출문제이고, brute force와 bfs를 사용하여 풀었다. 연구소에 3개의 벽을 세워 모든 경우의 수를 따진 후(brute force), bfs로 바이러스를 추적한 뒤, 빈칸의 개수를 구하여 이 문제를 해결할 수 있었다. void combination(int depth){ if(depth == 3){ bfs(); initVisited(); int count = 0; for(int i = 0; i < n; i++){ for(int j = 0; j < m; j++){ if(area[i][j] == 0){ count++; } if(area[i][j] == 3){ area[i][j] = 0; } } } maxNum = max(maxNum, count); return; } for (in.. 2020. 12. 24.
[algorithm] 백준 - 경사로 삼성 SW 기출문제이다. 구현문제인데, 문제를 이해하고 나면 쉽게 풀 수 있는 문제이다. 문제를 분석해보면, 탐색할 때 총 세가지의 경우로 나눌 수 있다. 이 외의 경우는 탐색에서 나가도록 break 처리 해준다. 1. 현재 칸과 같은 높이의 칸일 때 길이가 L인 경사로를 놓기 위해서는 동일한 칸의 개수를 세야한다. 그러므로 현재 칸과 같은 높이의 칸일 때 칸의 개수를 증가해준다. 2. 현재 칸보다 한칸 높은 층일 때 칸의 개수가 L보다 작을 때 경사로를 놓을 수 없으니까 탐색에서 나가도록 break 처리한다. 그렇지 않으면 칸의 개수를 1로 갱신한다. 현재 칸을 고려하여 0이 아닌 1로 갱신해야한다. 3. 현재 칸보다 한칸 낮은 층일 때 칸의 개수가 이미 음수일 경우엔 탐색에서 나가도록 break처리한.. 2020. 12. 23.
[algorithm] 백준 - 연산자 끼워넣기 이 문제는 dfs이다. 덧셈 뺄셈 곱셈 나눗셈 총 4가지의 연산자로 모든 경우의 수를 따졌을 때 최댓값, 최솟값을 구하는 문제이다. 처음에 순열로 구현했었는데, 같은 경우의 수가 여러개 나올 수 있었다. 덧셈 뺄셈 곱셈 나눗셈 각 1개씩으로 이루어진 것이 아닌 여러개로 이루어져 있기 때문이다. 그렇기 때문에 분기를 4가지로 나누어야 한다는 특징이 있었다. 코드는 이렇다. //연산자 끼워넣기 #include #include using namespace std; int num[12]; int maxNum = -9876543210; int minNum = 9876543210; void permutation(int index, int size, int plusCount, int minusCount, int mu.. 2020. 12. 22.
728x90
반응형