27323번: 직사각형
문제
정수 A, B 가 주어진다. 세로 길이가 A cm, 가로 길이가 B cm 인 아래와 같은 직사각형의 넓이를 cm2 단위로 구하시오.

출력
세로 길이가 A cm, 가로 길이가 B cm인 직사각형의 넓이를 cm2 단위로 구하고, 단위 (cm2)를 생략하여 출력한다.
제한
- 1 ≦ A ≦ 100.
- 1 ≦ B ≦ 100.
- A, B 는 정수이다.
코드
#include <stdio.h>
int main()
{
int a, b;
scanf("%d\n%d", &a, &b);
printf("%d", a * b);
return 0;
}
1085번: 직사각형에서 탈
문제
한수는 지금 (x, y)에 있다. 직사각형은 각 변이 좌표축에 평행하고, 왼쪽 아래 꼭짓점은 (0, 0), 오른쪽 위 꼭짓점은 (w, h)에 있다. 직사각형의 경계선까지 가는 거리의 최솟값을 구하는 프로그램을 작성하시오.
입력
첫째 줄에 x, y, w, h가 주어진다.
출력
첫째 줄에 문제의 정답을 출력한다.
제한
- 1 ≤ w, h ≤ 1,000
- 1 ≤ x ≤ w-1
- 1 ≤ y ≤ h-1
- x, y, w, h는 정수
코드
#include <stdio.h>
#define min(x, y) (x) < (y) ? (x) : (y)
int main()
{
int a, b, c, d;
scanf("%d %d %d %d", &a, &b, &c, &d);
int x = c - a;
int y = d - b;
int ans = min(min(a, b), min(x, y));
printf("%d", ans);
return 0;
}
3009번: 네 번째
문제
세 점이 주어졌을 때, 축에 평행한 직사각형을 만들기 위해서 필요한 네 번째 점을 찾는 프로그램을 작성하시오.
입력
세 점의 좌표가 한 줄에 하나씩 주어진다. 좌표는 1보다 크거나 같고, 1000보다 작거나 같은 정수이다.
출력
직사각형의 네 번째 점의 좌표를 출력한다.
코드
#include <stdio.h>
int a[1000], b[1000];
int x, y;
int main()
{
for (int i = 0; i < 3; i++) {
scanf("%d %d", &a[i], &b[i]);
}
if (a[0] == a[1]) x = a[2];
else if (a[1] == a[2]) x = a[0];
else if (a[0] == a[2]) x = a[1];
if (b[0] == b[1]) y = b[2];
else if (b[1] == b[2]) y = b[0];
else if (b[0] == b[2]) y = b[1];
printf("%d %d", x, y);
return 0;
}
9063번: 대지
입력
첫째 줄에는 점의 개수 N (1 ≤ N ≤ 100,000) 이 주어진다. 이어지는 N 줄에는 각 점의 좌표가 두 개의 정수로 한 줄에 하나씩 주어진다. 각각의 좌표는 -10,000 이상 10,000 이하의 정수이다.
출력
첫째 줄에 N 개의 점을 둘러싸는 최소 크기의 직사각형의 넓이를 출력하시오.
코드
#include <stdio.h>
int A[100000], B[100000];
int main() {
int n;
int maxA = A[0];
int minA = A[0];
int maxB = B[0];
int minB = B[0];
scanf("%d", &n);
for (int i = 1; i < n; i++) {
scanf("%d %d", &A[i], &B[i]);
if (A[i] > maxA) maxA = A[i];
if (A[i] < minA) minA = A[i];
}
for (int i = 1; i < n; i++) {
if (B[i] > maxB) maxB = B[i];
if (B[i] < minB) minB = B[i];
}
int ans = (maxA - minA) * (maxB - minB);
printf("%d %d\n", maxA, minA);
printf("%d", ans);
return 0;
}
>> 위의 코드를 실행하였을 때 minA와 minB가 모두 0이 나옴 > 이유 ?
정답 코드
#include <stdio.h>
int main()
{
int n, x, y;
scanf("%d", &n);
int maxx = -10000, minx = 10000; // 각 좌표의 범위 끝 값
int maxy = -10000, miny = 10000; // x, y의 최대, 최소 값을 위해 두 개 선언
for (int i = 0; i < n; i++)
{
scanf("%d %d", &x, &y);
if (x >= maxx) maxx = x;
if (x < minx) minx = x;
if (y >= maxy) maxy = y;
if (y < miny) miny = y;
}
printf("%d", (maxx - minx) * (maxy - miny));
return 0;
}
10101번: 삼각형 외우기
문제
창영이는 삼각형의 종류를 잘 구분하지 못한다. 따라서 프로그램을 이용해 이를 외우려고 한다.
삼각형의 세 각을 입력받은 다음,
- 세 각의 크기가 모두 60이면, Equilateral
- 세 각의 합이 180이고, 두 각이 같은 경우에는 Isosceles
- 세 각의 합이 180이고, 같은 각이 없는 경우에는 Scalene
- 세 각의 합이 180이 아닌 경우에는 Error
를 출력하는 프로그램을 작성하시오.
입력
총 3개의 줄에 걸쳐 삼각형의 각의 크기가 주어진다. 모든 정수는 0보다 크고, 180보다 작다.
출력
문제의 설명에 따라 Equilateral, Isosceles, Scalene, Error 중 하나를 출력한다.
코드
#include <stdio.h>
int main() {
int A, B, C;
scanf("%d\n%d\n%d", &A, &B, &C);
if (A + B + C == 180) {
if (A == B && B == C && C==60) { //A == B == C 는 안된다!
printf("Equilateral");
}
else if (A == B) printf("Isosceles");
else if (B == C) printf("Isosceles");
else if (A == C) printf("Isosceles");
else if (A != B != C) printf("Scalene");
}
else printf("Error");
return 0;
}
5073번: 삼각형과 세 변
문제
삼각형의 세 변의 길이가 주어질 때 변의 길이에 따라 다음과 같이 정의한다.
- Equilateral : 세 변의 길이가 모두 같은 경우
- Isosceles : 두 변의 길이만 같은 경우
- Scalene : 세 변의 길이가 모두 다른 경우
단 주어진 세 변의 길이가 삼각형의 조건을 만족하지 못하는 경우에는 "Invalid" 를 출력한다. 예를 들어 6, 3, 2가 이 경우에 해당한다. 가장 긴 변의 길이보다 나머지 두 변의 길이의 합이 길지 않으면 삼각형의 조건을 만족하지 못한다.
세 변의 길이가 주어질 때 위 정의에 따른 결과를 출력하시오.
입력
각 줄에는 1,000을 넘지 않는 양의 정수 3개가 입력된다. 마지막 줄은 0 0 0이며 이 줄은 계산하지 않는다.
출력
각 입력에 맞는 결과 (Equilateral, Isosceles, Scalene, Invalid) 를 출력하시오.
코드
#include <stdio.h>
#define max(x, y) (x) > (y) ? (x) : (y)
int main(void) {
int A, B, C;
while (1) {
scanf("%d %d %d", &A, &B, &C);
int max = max(max(A, B), C);
if (A == 0 && B == 0 && C == 0) break;
if (((A + B + C) - max) > max) {
if (A == B && B == C && C == A) printf("Equilateral\n");
else if ((A == C) || (B == C) || (B == A)) printf("Isosceles\n");
else printf("Scalene\n");
}
else printf("Invalid\n");
}
return 0;
}
14215번: 세 막
문제
영선이는 길이가 a, b, c인 세 막대를 가지고 있고, 각 막대의 길이를 마음대로 줄일 수 있다.
영선이는 세 막대를 이용해서 아래 조건을 만족하는 삼각형을 만들려고 한다.
- 각 막대의 길이는 양의 정수이다
- 세 막대를 이용해서 넓이가 양수인 삼각형을 만들 수 있어야 한다.
- 삼각형의 둘레를 최대로 해야 한다.
a, b, c가 주어졌을 때, 만들 수 있는 가장 큰 둘레를 구하는 프로그램을 작성하시오.
입력
첫째 줄에 a, b, c (1 ≤ a, b, c ≤ 100)가 주어진다.
출력
첫째 줄에 만들 수 있는 가장 큰 삼각형의 둘레를 출력한다.
코드
#include <stdio.h>
int main()
{
int a, b, c;
scanf("%d %d %d", &a, &b, &c);
if (a >= b + c) {
printf("%d", 2 * (b + c) - 1);
}
else if (b >= a + c) {
printf("%d", 2 * (a + c) - 1);
}
else if (c >= a + b) {
printf("%d", 2 * (a + b) - 1);
}
else printf("%d", a + b + c);
return 0;
}
'AI HW study > Baekjoon' 카테고리의 다른 글
백준 5단계 문자열 개념 정리 (0) | 2023.07.15 |
---|---|
백준 4단계: 1차원 배열 (0) | 2023.07.14 |
백준 3단계-2: 반복문 (0) | 2023.07.14 |
백준 1단계 (0) | 2023.07.11 |
백준 3단계-1: 반복문 (0) | 2023.07.11 |