분류 전체보기
[1463] 1로 만들기
https://www.acmicpc.net/problem/1463 1463번: 1로 만들기 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. www.acmicpc.net 🔎 해결 방법 ucpc 캠프 2일차 '다이다믹 프로그래밍' 에서 제일 처음으로 풀었던 문제. 캠프 때 풀지 못해서 집에와서 다시 도전해보았는데 틀렸습니다 계속 떠서 접을 뻔...ㅎ 내가 실수한 부분 c에서는 기본적으로 min, max함수를 제공하지 않기 때문에 반드시 매크로를 정의해주어야 한다. (예를 들어, #define min(a, b) (((a) > n; dp[0] = 0, dp[1] = 0; for(int i = 2 ; i
[1012] 유기농 배추
문제 1012번: 유기농 배추 차세대 영농인 한나는 강원도 고랭지에서 유기농 배추를 재배하기로 하였다. 농약을 쓰지 않고 배추를 재배하려면 배추를 해충으로부터 보호하는 것이 중요하기 때문에, 한나는 해충 방지에 효과적인 배추흰지렁이를 구입하기로 결심한다. 이 지렁이는 배추근처에 서식하며 해충을 잡아 먹음으로써 배추를 보호한다. 특히, 어떤 배추에 배추흰지렁이가 한 마리라도 살고 있으면 이 지렁이는 인접한 다른 배추로 이동할 수 있어, 그 배추들 역시 해충으로부터 보호받을 수 있다. ( www.acmicpc.net 해결 방법 [2667] 단지번호붙이기와 정말정말 유사한 문제 같아서, 유사한 문제여서 야심차게 도전했는데 예제와 질문 게시판의 모든 testcase들을 돌려보고 올바르게 실행이 됨에도 불구하고 ..
[2667] 단지번호붙이기(C)
문제 [2667] 단지번호붙이기 과 같이 정사각형 모양의 지도가 있다. 1은 집이 있는 곳을, 0은 집이 없는 곳을 나타낸다. 철수는 이 지도를 가지고 연결된 집의 모임인 단지를 정의하고, 단지에 번호를 붙이려 한다. 여기서 연결되었다는 것은 어떤 집이 좌우, 혹은 아래위로 다른 집이 있는 경우를 말한다. 대각선상에 집이 있는 경우는 연결된 것이 아니다. 는 을 단지별로 번호를 붙인 것이다. 지도를 입력하여 단지수를 출력하고, 각 단지에 속하는 집의 수를 오름차순으로 정렬하여 출력하는 프로그램을 작성하시오. 입력 첫 번째 줄에는 지도의 크기 N(정사각형이므로 가로와 세로의 크기는 같으며 5≤N≤25)이 입력되고, 그 다음 N줄에는 각각 N개의 자료(0혹은 1)가 입력된다. 출력 첫 번째 줄에는 총 단지수..
[2309] 일곱 난쟁이
문제 2309번: 일곱 난쟁이 아홉 개의 줄에 걸쳐 난쟁이들의 키가 주어진다. 주어지는 키는 100을 넘지 않는 자연수이며, 아홉 난쟁이의 키는 모두 다르며, 가능한 정답이 여러 가지인 경우에는 아무거나 출력한다. www.acmicpc.net 해결 방법 엄청 간단할 줄 알고 시작한건데 하루만에 끝내지 못했던 문제다. 내가 원래 생각한 방법은 어차피 결과를 오름차순으로 출력해야 한다면, 애초부터 9명의 몸무게를 오름차순으로 정렬한 후에 1번~7번 난쟁이의 몸무게 합이 100이라면 그 몸무게들을 출력하고, 100보다 작다면 8번 난쟁이 몸무게를 더한 후에 7번부터 1번까지 몸무게를 한번씩 빼보고 100이 된다면 출력 뭐 이런식으로 생각했었는데 저 방법도 틀리진 않았다. 하지만 7번에서 1번까지의 몸무게를 한..
[2606] 바이러스
문제 2606번: 바이러스 첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍의 수가 주어진다. 이어서 그 수만큼 한 줄에 한 쌍씩 네트워크 상에서 직접 연결되어 있는 컴퓨터의 번호 쌍이 주어진다. www.acmicpc.net 🔎 해결 방법 dfs를 실행할때마다 count(바이러스에 감염된 컴퓨터의 수) 1 증가 연결 요소의 개수(cc)가 2이상이라는 것은 1번 컴퓨터와는 연결되지 않았다는 소리이므로, cc는 1일 때까지만 실행 마지막으로 출력할때는 count에서 1번 컴퓨터를 제외해야 하므로 1 빼고 출력 dfs와 connected components의 개념만 잘 잡혀있었으면 ..
[2751] 수 정렬하기2
https://www.acmicpc.net/problem/2751 2751번: 수 정렬하기 2 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 숫자가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. www.acmicpc.net 엄청 빨리 끝날 줄 알고 호기롭게 가장 먼저 시작한 과제인데.............. merge sort가 아직 완벽하게 이해가 안되어있었기도 했고 노트북에 문제가 있어서 비쥬얼 스튜디오에서 실행창이 제대로 종료되지 않았다. 그래서 혹시나 하고 그냥 코드만 복사해서 백준에 돌려봤더니 맞았습니다가 떴다 ㅋㅋㅋㅋㅋㅋㅋㅋ 얼른 학교에서 노트북 빌려줬으면 좋겠다.. 💡 내 코드(C) /*[2..
[2752] 세수정렬
문제 [2752] 세수정렬 동규는 세수를 하다가 정렬이 하고싶어졌다. 숫자 세 개를 생각한 뒤에, 이를 오름차순으로 정렬하고 싶어 졌다. 숫자 세 개가 주어졌을 때, 가장 작은 수, 그 다음 수, 가장 큰 수를 출력하는 프로그램을 작성하시오. 입력 숫자 세 개가 주어진다. 이 숫자는 1보다 크거나 같고, 1,000,000보다 작거나 같다. 이 숫자는 모두 다르다. 출력 제일 작은 수, 그 다음 수, 제일 큰 수를 차례대로 출력한다. 해결 방법 세수를 하다가 세개의 수를 정렬하고 싶어졌다는 어이없는 문제 이 문제 역시 bubblesort를 사용하면 초스피드로 끝낼 수 있다! 내 코드(C) /*[2752] 세수정렬*/ #include void bubble_sort(int list[], int n); int ..
[2750] 수 정렬하기
문제 2750번: 수 정렬하기 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 숫자가 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. www.acmicpc.net bubblesort를 사용하면 정말 간단한 문제이다. 한번에 성공! 💡 내 코드(C) /*[2750] 수 정렬하기*/ #include #define MAX 1000 void bubble_sort(int list[], int n); int main(void) { int n, num; int ascend[MAX]; scanf_s("%d", &n); for (int i = 0; i < n; i++) { scanf_s("%d", &num); ascend[i] = num..