일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
- 백준
- map
- DP
- 다이나믹프로그래밍
- 최소공배수
- stoi
- 그래프
- 이분탐색
- DFS
- 문자열
- int
- Set
- N과M
- 분할정복
- 티스토리챌린지
- 정렬
- 우선순위큐
- 에라토스테네스의 체
- vector
- Sort
- BFS
- 프로그래머스
- priority_queue
- 깊이우선탐색
- 오블완
- 백트래킹
- 유클리드호제법
- C++
- 알고리즘
- 배열
- Today
- Total
목록전체 글 (220)
안녕 세상아,
https://www.acmicpc.net/problem/21921 21921번: 블로그 첫째 줄에 $X$일 동안 가장 많이 들어온 방문자 수를 출력한다. 만약 최대 방문자 수가 0명이라면 SAD를 출력한다. 만약 최대 방문자 수가 0명이 아닌 경우 둘째 줄에 기간이 몇 개 있는지 출력한다 www.acmicpc.net 누적합 구하는 전형적인 문제. 누적합 구한 후 최댓값과 같은 값을 가지는 구간의 갯수 구하면 된다. #include #include using namespace std; int arr[250001]; int sum[250001]; int maxSum[250001]; int main() { ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL..
https://www.acmicpc.net/problem/11051 11051번: 이항 계수 2 첫째 줄에 \(N\)과 \(K\)가 주어진다. (1 ≤ \(N\) ≤ 1,000, 0 ≤ \(K\) ≤ \(N\)) www.acmicpc.net 다이나믹 프로그래밍을 사용하여 이항계수를 구하는 문제이다. 다이나믹 프로그래밍을 사용하는 이유는 범위가 1000 이하이기 때문이다. dp로 이항계수 점화식을 만들면 끝이다. #include #include using namespace std; int n, k; int arr[1001][1001]; int main() { cin >> n >> k; arr[0][0] = 1; arr[1][0] = 1; arr[1][1] = 1; for (int i = 2; i
https://school.programmers.co.kr/learn/courses/30/lessons/42842 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 오랜만에 프로그래머스 ! 우선 brown과 yellow를 더해서 총 몇개의 격자가 있는지 구한다(sum). 그 후 weight와 height의 변수를 선언한 후 sum에 height를 나눠준다. 이때 height의 최소 값은 3이다. yellow가 내부에 최소 한줄이 있고, brown이 yellow를 둘러싸게 되면 최소 두줄이 되기 때문이다(1+2). sum을 height로 나눈 나머지가 0이라면..
https://www.acmicpc.net/problem/1780 1780번: 종이의 개수 N×N크기의 행렬로 표현되는 종이가 있다. 종이의 각 칸에는 -1, 0, 1 중 하나가 저장되어 있다. 우리는 이 행렬을 다음과 같은 규칙에 따라 적절한 크기로 자르려고 한다. 만약 종이가 모두 같은 수 www.acmicpc.net 분할정복과 재귀를 사용해서 구현할 수 있는 문제이다. 기존에 2등분으로 나누는 문제를 한번 풀어봤기 때문에 조금 수월하게 풀 수 있었다. 2등분으로 나눌 때는 4가지 경우의 수밖에 없지만 3등분으로 나눌 때는 9가지의 경우의 수가 있다. check값은 사각형의 x,y값으로 나타냈고, check값에 들어갈 수 있는 수는 -1, 0, 1밖에 없기 때문에 만약 check값과, for문을 돌면..
https://www.acmicpc.net/problem/2630 2630번: 색종이 만들기 첫째 줄에는 전체 종이의 한 변의 길이 N이 주어져 있다. N은 2, 4, 8, 16, 32, 64, 128 중 하나이다. 색종이의 각 가로줄의 정사각형칸들의 색이 윗줄부터 차례로 둘째 줄부터 마지막 줄까지 주어진다. www.acmicpc.net 분할정복 문제를 처음 접해봐서 여러 블로그들을 참고해서 풀었다. 자세한 설명에 코드에 적어놓았다. #include using namespace std; int white = 0; int black = 0; int map[130][130]; int n; //x_start, y_start --> 현재 탐색하고자 하는 사분면의 가장 왼쪽 위 좌표 //s_size --> 사분면..
https://www.acmicpc.net/problem/6603 6603번: 로또 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있다. 첫 번째 수는 k (6 < k < 13)이고, 다음 k개 수는 집합 S에 포함되는 수이다. S의 원소는 오름차순으로 www.acmicpc.net n과 m (7) 문제랑 같은 방식으로 풀면 된다. 기존 배열과 다른 배열을 하나 더 만들어서 새로운 값을 넣어준 후 조합으로 출력해주면 된다. #include #include //memset 사용 #include //sort 사용 using namespace std; int k; bool isVisited[14] = { false }; int map[14]; int ans[14]; vo..
https://www.acmicpc.net/problem/11508 11508번: 2+1 세일 KSG 편의점에서는 과일우유, 드링킹요구르트 등의 유제품을 '2+1 세일'하는 행사를 하고 있습니다. KSG 편의점에서 유제품 3개를 한 번에 산다면 그중에서 가장 싼 것은 무료로 지불하고 나머지 두 www.acmicpc.net 내림차순으로 정리한 후 3으로 나눈 나머지가 2이면 덧셈할 때 스킵해주면 된다. #include #include #include using namespace std; int main() { int n; cin >> n; vector v; for (int i = 0; i > x; v.push_back(x); } sort(v.begin(), v.e..
https://www.acmicpc.net/problem/18870 18870번: 좌표 압축 수직선 위에 N개의 좌표 X1, X2, ..., XN이 있다. 이 좌표에 좌표 압축을 적용하려고 한다. Xi를 좌표 압축한 결과 X'i의 값은 Xi > Xj를 만족하는 서로 다른 좌표 Xj의 개수와 같아야 한다. X1, X2, ..., XN에 www.acmicpc.net vector의 기본 문법을 활용하는 문제인 것 같다. 사실 중복되지 않은 값을 구해야되기 때문에 set도 생각했는데 내 실력으로는 인덱스 값을 구할 수 없어서.. vector의 중복값을 찾는 unique와 unique를 통해 중복값을 삭제하는 erase의 활용을 잘 기억해야될 것 같다. 또한 find의 시간 복잡도는 O(N)이고 lower_bou..
https://www.acmicpc.net/problem/4963 4963번: 섬의 개수 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스의 첫째 줄에는 지도의 너비 w와 높이 h가 주어진다. w와 h는 50보다 작거나 같은 양의 정수이다. 둘째 줄부터 h개 줄에는 지도 www.acmicpc.net 전에는 4방 탐색을 풀었다면 이번에는 8방 탐색문제이다. 대각선까지 신경써줘야되기 때문에 좌표를 조금 더 생각해주면 된다. 좌표가 주어지는 것이 아닌 배열이 전체가 주어지기 때문에 배열 전체를 입력 받으면 된다. #include #include using namespace std; int map[51][51]; bool isVisited[51][51] = { false }; int w, h;..
https://www.acmicpc.net/problem/1012 1012번: 유기농 배추 차세대 영농인 한나는 강원도 고랭지에서 유기농 배추를 재배하기로 하였다. 농약을 쓰지 않고 배추를 재배하려면 배추를 해충으로부터 보호하는 것이 중요하기 때문에, 한나는 해충 방지에 www.acmicpc.net 일반적인 그래프에 조건이 있는 문제였다. 사실 이런 문제를 처음 풀어봐서 다른 사람 코드를 이해하는 것도 오래 걸렸다. 내가 이해한 자세한 설명은 코드에 적어놨다. #include #include //memset 사용하기 위함 using namespace std; int m, n, k; int dx[4] = { 1,0,-1,0 }; int dy[4] = { 0,1,0,-1 }; bool isVisited[51..