본문 바로가기
728x90
반응형

brute force4

[algorithm] 백준 - 치킨배달 이 문제는 삼성 SW 기출 문제이다. brute force로 풀었다. 치킨집 중에서 m개를 뽑아서 가정집과 치킨집의 차가 가장 적었을 때 얼마인지 구하는 것이다. 우선 가정집벡터와 치킨집벡터로 나누어 지도를 입력받을 때 값을 넣어준다. for(int i = 0; i > house[i][j]; if(house[i][j] == 2){ chickenVector.push_back({i,j}); } if(house[i][j] == 1){ houseVector.push_back({i,j}); } } } 최대 m개를 뽑아야하므로 m으로 target을 정해 조합으로 풀었다. 최대라고 해서 target에 1부터 m까지 대입시켜 함수를 호출했는.. 2020. 12. 27.
[algorithm] 백준 - 스도쿠 이 문제는 brute force 문제이다. 스도쿠 문제를 풀어봤다면 규칙을 정확히 알고 있을 것이다. 1. 각각의 가로줄과 세로줄에는 1부터 9까지의 숫자가 한 번씩만 나타나야 한다. 2. 굵은 선으로 구분되어 있는 3x3 정사각형 안에도 1부터 9까지의 숫자가 한 번씩만 나타나야 한다. dfs로 풀었다. 1. 숫자를 입력받을 때 가로줄, 세로줄, 3x3 정사각형에 쓰여진 숫자에 대한 기록을 한다. 3x3 정사각형을 위와 같이 나누고 숫자 각각에 대한 기록을 하기 위해서는 sudoku[y][x] 라고 가정했을 때, y / 3 * 3 + x / 3 이라는 식을 통해 정사각형을 나눌 수 있다. sudoku[1][1]일 경우 1 / 3 * 3 + 1 / 3 = 0 * 3 + 0 = 0 sudoku[2][3]일.. 2020. 11. 19.
[algorithm] 백준 - 숨바꼭질 6 이 문제는 유클리드 호제법으로 푸는 문제이다. 모든 동생을 찾기 위한 D의 값을 정하기 위해 최대 공약수를 구하는 문제이다. 동생의 위치에서 수빈이의 위치를 빼고 절댓값을 씌운 후 그 값들을 유클리드 함수에 집어 넣어 최대 공약수를 구한다. //숨바꼭질 6 #include #include using namespace std; int uclid(int a, int b){ while(a % b != 0){ int temp = b; b = a % b; a = temp; } return b; } int main(void){ int n, s, num, gcd; vector sisterVector; cin >> n >> s; for(int i = 0; i > num; sisterVect.. 2020. 11. 4.
[algorithm] 백준 - 리모컨 brute force 문제이다. 가능한 모든 리모컨 채널을 돌리면서 최소 몇번 눌러지는 지를 체크하면 된다. 1. 모든 가능성을 열어두기 위해 중복순열로 자릿수는 0부터 6까지 모든 경우를 구했다. 만약 테스트 케이스가 10 2 1 0 이런 경우 자릿수가 1인 9로 이동하는 채널 수가 적기 때문이다. 따라서 모든 자릿수에 대한 채널을 구해야한다. 그리고 이동하려하는 리모컨 채널 - 만들어진 리모컨 + 리모컨을 누른 값 중 가장 작은 값을 구한다. 2. 현재 채널인 100에서 이동하고자 하는 리모컨 채널을 뺀 값과 위에서 구한 값을 비교해서 가장 작은 값을 출력한다. 코드는 이렇다. #include #include #include using namespace std; unsigned long answer .. 2020. 11. 4.
728x90
반응형