백준 4

백준 17143. 낚시왕

17143. 낚시왕 문제에서 주어진대로 진행하는 시뮬레이션 문제이다. 정렬을 편하게 하기 위해 상어 구조체를 만들고 크기순, 번호순으로 정렬하기 위한 compare함수를 선언하였다. 풀이 과정 낚시왕이 오른쪽으로 한 칸 이동한다. 낚시왕이 있는 열에 있는 상어 중에서 가장 땅과 가까운 상어를 잡는다. 이때, 상어를 잡으면 잡힌 상어는 격자판에서 사라진다. 상어를 이동시킨다. 1~3과정을 낚시왕이 맨 끝 자리로 이동할때까지 반복한다. 소스코드 #include #include #include using namespace std; int dx[] = { 0,-1,1,0,0 }; int dy[] = { 0,0,0,1,-1 }; int ans; int map[101][101]; int curDir; int mov..

백준 17135. 캐슬 디펜스

17135. 캐슬 디펜스 브루트포스 + 시뮬레이션 문제였다. 문제에 써있는 내용대로 궁수 3명의 위치를 선택 후 시뮬레이션을 진행하여 풀면 된다. 풀이 과정 궁수 3명의 위치를 선택한다. (go 함수) 적을 공격하고 적이 이동하도록 시뮬레이션해준다. (Simulate 함수) 궁수는 자신으로부터 거리가 D이하인 적 중에서 가장 가까운 적을 공격한다. 거리가 가까운 적이 여럿일 경우에는 가장 왼쪽에 있는 적을 공격한다. 모든 적이 맨 아래로 이동하여 제외될때까지 반복한다. 1~3 과정을 반복한다. 소스코드 #include #include #include using namespace std; int map[16][16]; int n, m, d; int ch[3]; int ans; int endLine=-1; ..

백준 17779. 게리맨더링 2

17779. 게리맨더링 2 주어진 조건대로 구현하면된다. 마름모로 선거구를 나타내는것이 다소 까다로웠던것 같다. 마름모를 나눌때 brute force 방식으로 나눠도 정답이 나왔다. 풀이 과정 마름모로 선거구를 나눈다. 마름모 끝점 4개를 저장해서 끝점을 활용하여 나머지 구역 4개도 구한다. 구역을 나눈것을 기존의 입력으로 받은 map과 매핑하여 각 선거구의 총 인원수를 구한다. 최대 최소의 차이를 구하고 그것이 최소인 경우를 저장한다. ※ 구역을 나눌때 5번 구역은 마름모를 이루는 변을 5로 저장해 두고 내부는 1로 저장해두었다. ※ 나머지 1~4번 구역을 정해주면 0으로 남은건 알아서 5번구역으로 처리해줄수 있을거라 생각하였기 때문이다. 소스코드 #include #include using namesp..

백준 17471. 게리맨더링

17471. 게리맨더링 역량테스트에 나왔던 문제라고 해서 풀어보았다. 단순 알고리즘 적용보단 알고리즘 적용한 결과를 가지고 또다시 알고리즘을 적용하거나 시뮬레이션을 돌리는 형태로 문제가 많이 나오는 것 같다. 풀이 과정 선거구를 2개로 나눈다. N개의 구역이 있다면 N/2까지 나눠봐야 한다. 즉 N=6이면 (1,5), (2,4), (3,3)으로 나누면 된다. 지역을 나누는 것은 조합 짜듯 구현하였다. (go함수) 지역을 나누고 나선 나눈걸 각각 firstRegion, secondRegion에 넣어준다. 넣어준 것을 가지고 각 선거구 안에 있는 지역의 번호를 가지고 BFS를 돌려서 모두 연결이 되어있는지 확인하였다. (isConnected함수) firstRegion, secondRegion 모두 연결이 되..