본문 바로가기

분류 전체보기170

2576 : 홀수 (C++) 2576번: 홀수 7개의 자연수가 주어질 때, 이들 중 홀수인 자연수들을 모두 골라 그 합을 구하고, 고른 홀수들 중 최솟값을 찾는 프로그램을 작성하시오. 예를 들어, 7개의 자연수 12, 77, 38, 41, 53, 92, 85가 주어지 www.acmicpc.net 기본적인 구현문제. #include using namespace std; int main() { int arr[7]; int odd[7]; int cnt = 0; int total = 0; for(int i = 0; i > arr[i]; if(arr[i] % 2 == 1) { odd[cnt++] = arr[i]; total += arr[i]; } } int min = 100; for(int i = 0; i < .. 2021. 2. 5.
2583 : 영역 구하기 (C++) 2583번: 영역 구하기 첫째 줄에 M과 N, 그리고 K가 빈칸을 사이에 두고 차례로 주어진다. M, N, K는 모두 100 이하의 자연수이다. 둘째 줄부터 K개의 줄에는 한 줄에 하나씩 직사각형의 왼쪽 아래 꼭짓점의 x, y좌표값과 오 www.acmicpc.net 알고리즘 문제 푸는데 있어서 2차원 배열과 수학에서 사용하는 그래프의 x축과 y축의 방향이 다르다 보니 헷갈렸었지만 이제는 거의 완벽하게 이해하고 문제를 풀 수 있는 것 같다. 먼저 크기 값과 직사각형의 갯수를 받고 좌표값들을 받은다음 직사각형 좌표들을 모두 방문처리 한다. 그다음 각각 DFS 또는 BFS를 실행하여 분리된 영역의 개수와 각 영역의 넓이를 vector에 입력받고 오름차순으로 정렬한 후 출력한다. #include #include.. 2021. 2. 5.
1946 : 신입 사원 (C++) 1946번: 신입 사원 첫째 줄에는 테스트 케이스의 개수 T(1 ≤ T ≤ 20)가 주어진다. 각 테스트 케이스의 첫째 줄에 지원자의 숫자 N(1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개 줄에는 각각의 지원자의 서류심사 성 www.acmicpc.net pair 배열을 사용하여 두가지 값을 한번에 받고 sort함수를 이용하여 정렬을 한다. 그 다음 문제 조건인 '다른 모든 지원자와 비교했을 때 서류심사 성적과 면접시험 성적 중 적어도 하나가 다른 지원자보다 떨어지지 않는 자만 선발한다'를 이용하여 문제를 해결한다. 즉 첫 번째 지원자를 이용하여 다음 지원자와 비교를 하고 만약 두 번째 지원자가 첫 번째 지원자와 비교를 했을 때 선발된다면 비교 값을 두 번째 지원자의 값으로 바꾸고 카운팅한다.. 2021. 2. 5.
2468 : 안전 영역 (C++) 2468번: 안전 영역 재난방재청에서는 많은 비가 내리는 장마철에 대비해서 다음과 같은 일을 계획하고 있다. 먼저 어떤 지역의 높이 정보를 파악한다. 그 다음에 그 지역에 많은 비가 내렸을 때 물에 잠기지 않는 www.acmicpc.net 장마철에 물에 잠기지 않는 안전한 영역의 최대 개수를 출력한다. 비의 양이 정수만큼 내리는게 아니므로 아무 지역도 물에 잠기지 않을 수 있다. 값을 다 받으면서 제일 높은 위치 값을 확인 한 후 제일 높은 위치의 값 만큼만 확인해 보면된다. 각각 높이별로 DFS를 실행하여 안전한 영역의 수의 최대 개수를 비교하면서 구한 후 출력하면 끝. 오늘 문제 많이풀었다. #include using namespace std; #define MAX 100 int map[MAX][MA.. 2021. 2. 4.
7576 : 토마토 (C++) 7576번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N이 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M,N ≤ 1,000 이다. 둘째 줄부터는 하나의 상자에 저장된 토마토 www.acmicpc.net 토마토의 상태는 3가지(익은 토마토 1, 익지 않은 토마토 0, 토마토가 들어있지 않은 칸 -1)로 나타낸다. 토마토가 들어있는 곳이 있다면 바로 큐에 집어 넣는다. 큐에서 하나하나씩 꺼내 근처에 익지 않은 토마토가 있으면 1을 더한다. 반복. #include #include using namespace std; #define MAX 1000 int map[MAX][MAX]; bool visit[MAX][MAX]; queue q; int dx[4.. 2021. 2. 4.
4963 : 섬의 개수 (C++) 4963번: 섬의 개수 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스의 첫째 줄에는 지도의 너비 w와 높이 h가 주어진다. w와 h는 50보다 작거나 같은 양의 정수이다. 둘째 줄부터 h개 줄에는 지도 www.acmicpc.net 이번 문제는 보통 문제들과는 달리 8방향으로 이동할 수 있다. 보통 상하좌우라면 이 문제는 대각선 방향으로도 갈 수 있어서 4방향으로 더 검사를 진행해야한다. BFS방식으로 문제를 해결하였다. #include #include using namespace std; #define MAX 50 int w, h; int map[MAX][MAX]; bool visit[MAX][MAX]; int dx[8] = {1, -1, 0, 0, 1, -1, 1, -1}; int.. 2021. 2. 4.
1012 : 유기농 배추 (C++) 1012번: 유기농 배추 차세대 영농인 한나는 강원도 고랭지에서 유기농 배추를 재배하기로 하였다. 농약을 쓰지 않고 배추를 재배하려면 배추를 해충으로부터 보호하는 것이 중요하기 때문에, 한나는 해충 방지에 www.acmicpc.net 테스트 케이스가 여러개 존재 할 수 있으므로 배열 초기화를 반드시 해주어야한다. BFS방식으로 풀었다. #include #include using namespace std; #define MAX 50 int M, N, K; int map[MAX][MAX]; bool visit[MAX][MAX]; int dx[4] = {1, -1, 0, 0}; int dy[4] = {0, 0, 1, -1}; void bfs(int x, int y) { queue q; q.push({x, y}.. 2021. 2. 4.
1009 : 분산처리 (C++) 1009번: 분산처리 입력의 첫 줄에는 테스트 케이스의 개수 T가 주어진다. 그 다음 줄부터 각각의 테스트 케이스에 대해 정수 a와 b가 주어진다. (1 ≤ a > a >> b; int result = 1; for(int j = 0; j < b; j++) { result = (result * a) % 10; } if(result == 0) { result = 10; } cout 2021. 2. 4.
10808 : 알파벳 개수 (C++) 10808번: 알파벳 개수 단어에 포함되어 있는 a의 개수, b의 개수, …, z의 개수를 공백으로 구분해서 출력한다. www.acmicpc.net 뭐라 딱히 설명할게 없는 문제. #include #include using namespace std; int main() { string S; cin >> S; int result[26] = {0, }; for(int i = 0; i < S.size(); i++) { result[S[i] - 'a']++; } for(int i = 0; i < 26; i++) { printf("%d ", result[i]); } return 0; } 2021. 2. 4.