본문 바로가기

전체 글

23074 자연수 색칠하기 2 #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define xx first #define yy second #define all(x) (x).begin(), (x).end() #define MAXV 987654321 #define FOR(i, n) for(int i = 0; i < (n); ++i) using namespace std; using i64 = long long int; using ii = pair; using iis .. 더보기
24270 미니 버킷 리스트 빈칸을 일정 사이사이에 넣는 경우의 수는 중복 조합으로 구할 수 있다 일정 사이 개수: n+1 (일정 +1) 빈칸 개수: k - sum, rest라고 표현하겠음 일정의 경우의 수: n! 빈칸 경우의 수 * 일정 경우의 수 곱하면 된다. 수식은 위 사진과 같이 정리할 수 있음. #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define xx first #define yy second #define all(x) (x).begin(), .. 더보기
23562 ㄷ 만들기 n이 작아서 그냥 구현만 하면 된다. 구현이 힘들 뿐.... 1. ㄷ이 들어갈 자리를 구한다 (시작점, ㄷ의사이즈) 2. ㄷ 자리가 정해지면 순회하면서 검->흰, 흰->검을 뒤집는다 3. 그 중 최소값을 구한다 코드는 만족스럽다 #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define xx first #define yy second #define all(x) (x).begin(), (x).end() #define MAXV 9876.. 더보기
26595 전투의 신 나는 가성비를 따져서 탱커가 가성비가 높은지 / 딜러가 가성비가 높은지 나눠서 가성비가 높은 걸 최대한 담고 남은 걸 또 담으려고 했다 틀렸다ㅋㅋ 알고보니 냅색 개념이었다 15원이 있는데 딜러는 (13, 10) 탱커는 (7, 6)이라고 하면 13/10 = 1.3, 7/6 = 1.1 딜러가 가성비가 높아서 딜러 하나를 담는다. 그런데 이런 경우는 탱커 둘 담는게 이득이다. O(1)에 푸는 건 불가능하고 결국 모든 경우 다 구하는 수 밖에 없다 #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #incl.. 더보기
18248 제야의 종 엇 지금 보니 틀왜맞 같다 나는 M번 종소리가 R이 커지는 방향으로 있다고 생각했다 그래서 정렬한 다음에 아래와 같은 케이스인지 확인하면 되겠다 생각했다 (1 아래에 0이 있는 경우) ``` 101 110 111 ``` 아닌가? 1번 들은 사람이랑 2번 들은 사람이 있다고 했을 때 나올 수 있는건 ``` 10 11 ``` 또는 ``` 01 11 ``` 무조건 0 아래에 1이 있어야 함.. 또 다른 경우를 보면 - 1번 들음, 2번 들음, 2번 들음, 6번 들음 (뒤로 갈 수록 가까움) - 1의 개수가 각각 1, 2, 2, 6개 100000 110000 110000 111111 정렬하면 멀리 있는 사람 -> 가까이 있는 사람 순으로 정렬됨 멀리 있는 사람이 들은 건 가까이 있는 사람이 무조건 들어야 함 그.. 더보기
7511 소셜 네트워킹 어플리케이션 유니온 파인드로 쉽게 풀 수 있는 문제 유파 예제 문제 같다 - union find: https://burningjeong.tistory.com/196 #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define xx first #define yy second #define all(x) (x).begin(), (x).end() #define MAXV 987654321 #define FOR(i, n) for(int i = 0; i < .. 더보기
28176 Maximum GCD 토요 라운드 끝나고 나서 힌트 받아가며 풀었던 문제 토요 라운드 중에 어느정도 감은 잡았다 10같은 경우를 예로 들면 10%10 = 0 10%9 = 1 10%8 = 2 10%7 = 3 10%6 = 4 10%5 = 0 최대 나올 수 있는 나머지 값이 4이다. 3 7 10을 예로 들면 7과 10은 각각 1..3, 1..4까지 나머지를 만들 수 있으니 정답은 3이 된다. 이까지는 알겠는데 7 7 7 같은 경우나 2 4 8같은 경우를 어떻게 할지 몰라서 막혔다. -> 결국 가장 작은 값을 가지고 최대공약수인지, 나머지로 만들 수 있는지 비교하면 된다 하지만 틀렸는데.... 10 12 19의 경우 정답이 4인줄 알았는데 5여야 했다. 12 19로 5를 만들면 10 5 5여서 정답은 5가 된다. 그래서 확인해야 하.. 더보기
11607 Grid dfs로 풀고 bfs로 풀었던 문제 dfs로 풀어도 문제없다고 생각했는데 갔던 곳을 또 방문하는 문제가 있었다. bfs로 푼다면 500 * 500 만큼만 이동한다. #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define xx first #define yy second #define all(x) (x).begin(), (x).end() #define MAXV 987654321 #define FOR(i, n) for(int i = .. 더보기