본문 바로가기

전체 글

1822 차집합 처음에 count 배열 만들어서 a 원소 전부 1로 만들고 b원소 전부 0으로 만든 다음 남아있는 1을 출력하려고 했다. 하지만 이러면 n이 50만이라 메모리가 터진다. 반복문 두 번 써서 확인하는 방법도 있지만 이러면 시간이 터짐 그래서 정렬한 다음 비교하는 방법을 떠올렸다. #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 1000000 using namespace std; using i64 .. 더보기
2435 기상청 인턴 신현수 이전에 풀었던 문제여서 쉽게 풀었다. 슬라이딩 윈도우 사용해서 가장 큰 값 구하면 됨 #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 1000000 using namespace std; using i64 = long long int; using ii = pair; using ii64 = pair; using iii = tuple; int main() { int n, k; scanf("%d %d".. 더보기
4963 섬의 개수 dfs쓰는데 dx dy를 8방향으로 하면 되지 않을까? #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 1000000 using namespace std; using i64 = long long int; using ii = pair; using ii64 = pair; using iii = tuple; int dx[] = { -1, -1, -1, 0, 0, 1, 1, 1 }; int dy[] = .. 더보기
11866 요세푸스 문제 0 이거 작년에 풀려고 했었는데 못 푼 기억이 있다. 지금은 풀 수 있구만 #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 1000000 using namespace std; using i64 = long long int; using ii = pair; using ii64 = pair; using iii = tuple; int main() { int n, k; scanf("%d %d", &n, &k.. 더보기
2799 블라인드 구현구현 #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 1000000 using namespace std; using i64 = long long int; using ii = pair; using ii64 = pair; using iii = tuple; int check_type(vector &v, int i, int j) { if (v[i][j] == '.') return 1; if (v[i.. 더보기
11947 이런 반전이 처음에 문제 제대로 안 읽고 풀다가 그냥 사랑스러움 값만 변환하는 함수만 작성했다. 알고보니 사랑스러움의 최댓값을 구하는 게 문제였다. 1부터 n까지 최댓값을 어떻게 구해야 할까? 시도1 1에서 10^9까지 미리 구해둔 다음에 테케 들어올 때마다 뽑아 쓴다. 단점 : 시간복잡도와 메모리 둘 다 터진다. 그래서 조금 더 생각해보니 곱셈에서 최댓값은 두 수의 차가 최소가 되면 됐다. 그 다음에 다시 중앙값 계산하는 함수를 작성했다. 각 자리수 별 중앙값을 반환하는 함수를 만들어 n이 이 보다 작으면 그 수로 사랑수 구하고 크다면 중앙값을 곱했다. 쉬운 문제인 것 같은데 왜이리 애먹지? #include #include #include #include #include #include #include #inclu.. 더보기
14719 빗물 #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 1000000 using namespace std; using i64 = long long int; using ii = pair; using ii64 = pair; using iii = tuple; int main() { int h, w; scanf("%d %d", &h, &w); vector v(w); for (int i = 0; i < w; i.. 더보기
2133 타일 채우기 2 * n일때는 쉽게 풀었는데 3 * n은 또 모르겠다. 이렇게 굴러가는구나! 식이 잘 안 세워짐 홀수인 경우는 제외했다 홀수는 어떻게 해도 구할 수 업슴 다음으로 저렇게 덩어리로 생각해보면 이전에 구했던 사이즈를 활용하면 되겠다 싶었다. 그런데 문제는 겹치는 경우가 자꾸 있음 ㅠㅠㅠ 2 + 2 + 2 + 2 전부 2로 이루어진 경우가 자꾸 겹친다... 숫자가 커질 수록 많이 겹치는 2 + 2 + 2 .. 들 그 다음 생각한 건 전부 2로 이루어진 경우를 제외하고 숫자를 센 다음 마지막에 2 + 2 + 2 .. 경우 하나를 합해주면 어떨까? 싶었음 하지만 겹치는 건 2 +2 +2 .. 들만의 문제는 아니었다.... 사진 보면 2 + 4 + 2도 겹침ㅋㅋㅋ ㅠ 모르겠다 ㅠ 홀수 일 경우에는 구할 수 없으므.. 더보기