C
1012번: 유기농 배추 (BOJ C/C++)
1012번: 유기농 배추 사용 언어: C 문제 차세대 영농인 한나는 강원도 고랭지에서 유기농 배추를 재배하기로 하였다. 농약을 쓰지 않고 배추를 재배하려면 배추를 해충으로부터 보호하는 것이 중요하기 때문에, 한나는 해충 방지에 효과적인 배추흰지렁이를 구입하기로 결심한다. 이 지렁이는 배추근처에 서식하며 해충을 잡아 먹음으로써 배추를 보호한다. 특히, 어떤 배추에 배추흰지렁이가 한 마리라도 살고 있으면 이 지렁이는 인접한 다른 배추로 이동할 수 있어, 그 배추들 역시 해충으로부터 보호받을 수 있다. 한 배추의 상하좌우 네 방향에 다른 배추가 위치한 경우에 서로 인접해있는 것이다. 한나가 배추를 재배하는 땅은 고르지 못해서 배추를 군데군데 심어 놓았다. 배추들이 모여있는 곳에는 배추흰지렁이가 한 마리만 있으..
11726번: 2×n 타일링 (BOJ C/C++)
11726번: 2×n 타일링 사용 언어: C 문제 2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×5 크기의 직사각형을 채운 한 가지 방법의 예이다. 입력 첫째 줄에 n이 주어진다. (1 ≤ n ≤ 1,000) 출력 첫째 줄에 2×n 크기의 직사각형을 채우는 방법의 수를 10,007로 나눈 나머지를 출력한다. 풀이 아래 코드를 좀 수정해서 더 간단하게 쓸 수도 있고 배열로 바꿔서 더 간단하게 쓸 수 있긴하다. 하지만 지금은 귀찮으니 다음부터 더 효율적으로 쓰려고 노력하자! ^^ //n칸짜리를 그냥 1과 2로 어떻게 나눌 수 있냐는 문제 //ex) n=5이면 11111, 1112, 1121, 1211, 2111, 122, 212, 221 /..
2527번: 직사각형 (BOJ C/C++)
2527번: 직사각형 사용 언어: C 문제 2차원 격자공간에 두 개의 꼭짓점 좌표로 표현되는 직사각형이 있다. 직사각형은 아래와 같이 왼쪽 아래 꼭짓점 좌표 (x, y)와 오른쪽 위 꼭짓점 좌표 (p, q)로 주어진다. 이 문제에서 모든 직사각형은 두 꼭짓점의 좌표를 나타내는 4개의 정수 x y p q 로 표현된다. 단 항상 x
1085번: 직사각형에서 탈출 (BOJ C/C++)
1085번: 직사각형에서 탈출 사용 언어: C 문제 한수는 지금 (x, y)에 있다. 직사각형은 각 변이 좌표축에 평행하고, 왼쪽 아래 꼭짓점은 (0, 0), 오른쪽 위 꼭짓점은 (w, h)에 있다. 직사각형의 경계선까지 가는 거리의 최솟값을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 x, y, w, h가 주어진다. 출력 첫째 줄에 문제의 정답을 출력한다. 풀이 #include #include int main(void) { int min=1000; int arr[4]; for(int i=0; i
1990번: 소수인팰린드롬 (BOJ C/C++)
1990번: 소수인팰린드롬 사용 언어: C 문제 151은 소수이면서 동시에 팰린드롬이기 때문에 소수인 팰린드롬이다. 팰린드롬이란 앞으로 읽어나 뒤로 읽으나 같은 수를 말한다. 예를 들어 1234는 앞으로 읽으면 1234지만, 뒤로 읽으면 4321이 되고 이 두 수가 다르기 때문에 팰린드롬이 아니다. 두 정수 a, b가 주어졌을 때, a이상 b이하인 소수인 팰린드롬을 모두 구하는 프로그램을 작성하시오. 입력 입력은 첫째 줄에 공백으로 구분된 두 자연수 a, b가 주어진다. 단 5 ≤ a < b ≤ 100,000,000 이다. 출력 첫째 줄부터 차례로 증가하는 순서대로 한 줄에 한개씩 소수인 팰린드롬을 출력한다. 마지막 줄에는 -1을 출력한다. 틀린 풀이 결과적으로는 메모리 초과가 떴다. 아마도 arr[10..
16236번: 아기 상어 (BOJ C/C++)
16236번: 아기 상어 사용 언어: C++ 문제 N×N 크기의 공간에 물고기 M마리와 아기 상어 1마리가 있다. 공간은 1×1 크기의 정사각형 칸으로 나누어져 있다. 한 칸에는 물고기가 최대 1마리 존재한다. 아기 상어와 물고기는 모두 크기를 가지고 있고, 이 크기는 자연수이다. 가장 처음에 아기 상어의 크기는 2이고, 아기 상어는 1초에 상하좌우로 인접한 한 칸씩 이동한다. 아기 상어는 자신의 크기보다 큰 물고기가 있는 칸은 지나갈 수 없고, 나머지 칸은 모두 지나갈 수 있다. 아기 상어는 자신의 크기보다 작은 물고기만 먹을 수 있다. 따라서, 크기가 같은 물고기는 먹을 수 없지만, 그 물고기가 있는 칸은 지나갈 수 있다. 아기 상어가 어디로 이동할지 결정하는 방법은 아래와 같다. 더 이상 먹을 수 ..
9095번: 1, 2, 3 더하기 (BOJ C/C++)
9095번: 1, 2, 3 더하기 사용 언어: C 문제 정수 4를 1, 2, 3의 합으로 나타내는 방법은 총 7가지가 있다. 합을 나타낼 때는 수를 1개 이상 사용해야 한다. 1+1+1+1 1+1+2 1+2+1 2+1+1 2+2 1+3 3+1 정수 n이 주어졌을 때, n을 1, 2, 3의 합으로 나타내는 방법의 수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 정수 n이 주어진다. n은 양수이며 11보다 작다. 출력 각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 출력한다. 풀이 // d[n] = d[n-1] + d[n-2] + d[n-3] #include int d[11], N, T; int m..
16481번: 원 전문가 진우 (BOJ C/C++)
16481번: 원 전문가 진우 사용 언어: C 문제 원 전문가인 진우는 항상 자신의 친구들에게 원이 포함되어 있는 문제는 모두 풀 수 있다고 자랑한다. 어느 날, 진우를 시험해 보려고 하늘이가 문제를 냈다. 문제는 다음과 같다.평면에 있는 삼각형 ABC의 서로 다른 위치에 있는 세 방접원의 반지름의 길이가 r1, r2, r3일 때, 삼각형 ABC의 내접원의 반지름을 구하시오. 진우는 문제를 보자마자 마음속으로 포기했다. 그런데, 자랑을 너무 많이 해서 이 문제를 못 풀면 친구들에게 미움 받을 것 같다고 생각했다. 진우가 친구들에게 미움을 받지 않도록 진우를 도와 하늘이가 낸 문제를 푸는 프로그램을 작성하시오. 입력 첫째 줄에 r1, r2, r3의 값이 사이에 공백을 한 개씩 두고 차례대로 주어진다. 주어..