반응형
#27323번_직사각형
문제 |
정수 A, B 가 주어진다. 세로 길이가 A cm, 가로 길이가 B cm 인 아래와 같은 직사각형의 넓이를 cm^ 단위로 구하시오. |
풀이 |
직사각형의 넓이는 (높이) x (밑변)으로 구할 수 있다. |
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <math.h>
int main(void)
{
int a, b;
scanf("%d", &a);
scanf("%d", &b);
int result = a * b;
printf("%d", result);
return 0;
}
#1085번_직사각형에서 탈출
문제 |
한수는 지금 (x, y)에 있다. 직사각형은 각 변이 좌표축에 평행하고, 왼쪽 아래 꼭짓점은 (0, 0), 오른쪽 위 꼭짓점은 (w, h)에 있다. 직사각형의 경계선까지 가는 거리의 최솟값을 구하는 프로그램을 작성하시오. |
풀이 |
![]() 철수의 위치가 (x, y)이므로 직사각형까지의 최단거리는 위 그림에서 회색 거리 중에 하나이다. x, y, h-y, w-x 중 최솟값을 구해 출력하면 된다. |
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <math.h>
int main(void)
{
int x, y, w, h;
scanf("%d %d %d %d", &x, &y, &w, &h);
int length[] = { x, y, w - x, h - y };
int min = length[0];
for (int i = 1; i < 4; i++) {
if (min > length[i])
min = length[i];
}
printf("%d", min);
return 0;
}
#3009번_네 번째 점
문제 |
세 점이 주어졌을 때, 축에 평행한 직사각형을 만들기 위해서 필요한 네 번째 점을 찾는 프로그램을 작성하시오. |
풀이 |
![]() 별표친 좌표를 구해야하는 문제이다. 입력으로는 나머지 3개의 좌표를 입력하게 된다. 별표 친 좌표의 x좌표와 y좌표는 주어진 3개의 좌표에서 1번씩 나온 값을 취하면 된다. 즉 예를 들어, (7,5) (4,5) (4,8)이 주어진 경우 x좌표는 4가 2번, 7이 1번 나왔으므로 7이되고, y좌표는 5가 2번 8이 1번 나왔으므로 8이된다. 따라서 구하는 좌표의 값은 (7,8)로 구할 수 있다. 위의 예시 방법을 사용해서 각각의 x배열과 y배열을 0값으로 초기화 해둔 뒤, 값이 입력된다면 1과 XOR 연산하여 다시 값을 저장한다. XOR 연산을 다 끝내고 나면 한번 씩 입력된 값들은 배열의 값이 1이 된다. 좌표를 구하기 위해서는 배열의 값이 1인 인덱스를 찾아 좌표값으로 취하면 된다. |
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <math.h>
int main(void)
{
int arr_x[1000] = { 0 };
int arr_y[1000] = { 0 };
for (int i = 0; i < 3; i++) {
int a, b;
scanf("%d %d", &a, &b);
arr_x[a - 1] ^= 1;
arr_y[b - 1] ^= 1;
}
int x, y;
for (int i = 0; i < 1000; i++) {
if (arr_x[i] == 1) {
x = i + 1;
}
}
for (int i = 0; i < 1000; i++) {
if (arr_y[i] == 1) {
y = i + 1;
}
}
printf("%d %d", x, y);
return 0;
}
#15894번_수학은 체육과목 입니다
문제 |
"한 변의 길이가 1인 정사각형을 아래 그림과 같이 겹치지 않게 빈틈없이 계속 붙여 나간다. 가장 아랫부분의 정사각형이 n개가 되었을 때, 실선으로 이루어진 도형의 둘레의 길이를 구하시오." ![]() 가장 아랫부분의 정사각형 개수가 주어지면 그에 해당하는 답을 출력하는 프로그램을 만들어 형석이를 도와주자! |
풀이 |
![]() n이 1일때부터 대입해보면서 규칙성을 찾아 일반항을 구한 뒤 출력한다. |
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <math.h>
int main(void)
{
long long n;
scanf("%lld", &n);
long long result = 4 * n;
printf("%lld", result);
return 0;
}
#9063번_대지
문제 |
임씨의 이름이 새겨진 옥구슬의 위치 N 개가 주어질 때에, 임씨에게 돌아갈 대지의 넓이를 계산하는 프로그램을 작성하시오. 단, 옥구슬의 위치는 2 차원 정수 좌표로 주어지고 옥구슬은 같은 위치에 여러 개가 발견될 수도 있으며, x 축의 양의방향을 동쪽, y 축의 양의방향을 북쪽이라고 가정한다. |
풀이 |
![]() 위 그림은 n이 3과 4일 때의 대지의 모양 예시이다. 즉, 입력받은 좌표에서 가장 큰 x값에서 가장 작은 x값은 뺀것이 가로길이가 되고, 입력받은 좌표에서 가장 큰 y값에서 가장 작은 y값을 뺀 것이 세로의 길이가 된다. 반복문을 통해 min_x, max_x, min_y, max_y값을 구해 가로,세로길이를 구하고 두 값을 곱해 넓이를 출력한다. |
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int n;
scanf("%d", &n);
int* a = (int*)malloc(n * sizeof(int));
int* b = (int*)malloc(n * sizeof(int));
for (int i = 0; i < n; i++) {
scanf("%d %d", &a[i], &b[i]);
}
int min_x = a[0];
int max_x = a[0];
int min_y = b[0];
int max_y = b[0];
for (int i = 0; i < n; i++) {
if (min_x > a[i])
min_x = a[i];
if (max_x < a[i])
max_x = a[i];
if (min_y > b[i])
min_y = b[i];
if (max_y < b[i])
max_y = b[i];
}
free(a);
free(b);
int result = (max_x - min_x) * (max_y - min_y);
printf("%d", result);
return 0;
}
#10101번_삼각형외우기
문제 |
창영이는 삼각형의 종류를 잘 구분하지 못한다. 따라서 프로그램을 이용해 이를 외우려고 한다. 삼각형의 세 각을 입력받은 다음,
|
풀이 |
1. if문을 사용해서 삼각형이 성립되지 않는 경우와 성립되는 경우를 분류한다. 2. 같은 각이 없는 경우를 분류한다. 3. 두 각이 같은 경우를 분류한다. 4. 세 각이 같은 경우를 분류한다. |
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int a, b, c;
scanf("%d", &a);
scanf("%d", &b);
scanf("%d", &c);
if (a + b + c == 180) {
if (a != b && b != c && a != c)
printf("Scalene");
else if ((a == b && b != c) || (a != b && b == c) || (a == c && b != c))
printf("Isosceles");
else if (a == b && b == c)
printf("Equilateral");
}
else
printf("Error");
return 0;
}
#5073번_삼각형과 세변
문제 |
삼각형의 세 변의 길이가 주어질 때 변의 길이에 따라 다음과 같이 정의한다.
세 변의 길이가 주어질 때 위 정의에 따른 결과를 출력하시오. |
풀이 |
1. 무한루프를 생성하고 입력된 값이 모두 0일 때만 루프를 빠져나가도록 구성한다. 2. 입력된 세 값중 가장 큰 값을 구해 max변수에 대입한다. 3. 삼각형 성립 조건을 만족하는지 판단한다. 4. 삼각형이 성립된다면 어떤 삼각형인지 판단한다. |
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int a, b, c;
while (1) {
scanf("%d %d %d", &a, &b, &c);
if (a == 0 && b == 0 && c == 0)
break;
int max = a;
if (max < b)
max = b;
if (max < c)
max = c;
if (max < a + b + c - max)
{
if (a != b && b != c && a != c)
printf("Scalene\n");
else if ((a == b && b != c) || (a != b && b == c) || (a == c && b != c))
printf("Isosceles\n");
else if (a == b && b == c)
printf("Equilateral\n");
}
else
printf("Invalid\n");
}
return 0;
}
#14215번_세 막대
문제 |
영선이는 길이가 a, b, c인 세 막대를 가지고 있고, 각 막대의 길이를 마음대로 줄일 수 있다. 영선이는 세 막대를 이용해서 아래 조건을 만족하는 삼각형을 만들려고 한다.
|
풀이 |
1. 주어진 값 중 가장 큰 값을 max변수에 대입한다. 2. 가장 큰 변을 제외한 나머지 변들의 핪을 r에 대입한다. 3. 삼각형이 성립한다면 주어진 값을 그냥 더한 후 출력한다. 4. 삼각형이 성립하지 않는다면 가장 큰 변의 크기(max)를 나머지 변들의 합(r)의 값보다 1이 작도록 바꾼다. 5. 변경된 max값과 r값을 더해 출력한다. |
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int a, b, c;
scanf("%d %d %d", &a, &b, &c);
int max = a;
if (max < b)
max = b;
if (max < c)
max = c;
int r = a + b + c - max;
if (max >= r)
{
max = r - 1;
printf("%d", r + max);
}
else
printf("%d", a + b + c);
return 0;
}
반응형
'코딩해요 > C' 카테고리의 다른 글
[백준/C언어] 브루트 포스 2798번: 블랙잭 (0) | 2024.05.08 |
---|---|
[백준/C언어] 시간 복잡도 (1) | 2024.01.13 |
[코드업/C언어] 기초-논리연산, 비트단위논리연산 (1) | 2023.11.28 |
[백준/C언어] #2869번. 달팽이는 올라가고 싶다. (0) | 2023.11.07 |
[백준/C언어] 일반 수학1 문제풀이 (0) | 2023.08.28 |