문제
N명의 사람이 돌 던지기 게임을 한다.
-100,000부터 100,000까지 숫자가 일렬로 써져 있고, 사람들은 100,000에서 최대한 0에 가깝게 돌을 던진다.
가장 0에 가깝게 돌이 떨어진 위치와 0 사이의 거리 차이, 그렇게 던진 사람이 몇 명인지 구한다.
조건
1<=N<=1,000
돌이 떨어지는 위치는 항상 -100,000에서 100,000 사이 범위의 정수
코드
#include <stdio.h>
int main(void) {
int test_case, T;
scanf("%d", &T);
for (test_case = 1; test_case <= T; ++test_case)
{
int N, *p;
scanf("%d", &N);
p = (int*)malloc(sizeof(int) * N);
for (int i = 0; i < N; i++) {
scanf("%d", &p[i]);
}
int min = p[0], cnt = 0;
if (p[0] < 0) {
p[0] = -p[0];
min = p[0];
}
else min = p[0];
for (int i = 1; i < N; i++) {
if (p[i] < 0) {
p[i] = -p[i];
}
if (p[i] < min) {
min = p[i];
}
}
for (int i = 0; i < N; i++) {
if (p[i] == min) {
cnt++;
}
}
printf("#%d %d %d\n", test_case, min, cnt);
}
return 0;
}
최솟값과 그 개수를 구하면 된다. 비교를 위해 부호가 -인 수는 +로 바꿔주었다.
배열 중에 min보다 작은 값이 있으면 그 수를 min에 저장한다.
min을 구했으면 for문을 한 번 더 돌려 최솟값의 개수를 찾는다.
'SWEA > [D2]' 카테고리의 다른 글
[C언어] SWEA 2005 파스칼의 삼각형 (0) | 2022.03.01 |
---|---|
[C언어] SWEA 1984 중간 평균값 구하기 (0) | 2022.03.01 |
[C언어] SWEA 1288 새로운 불면증 치료법 (0) | 2022.02.27 |
[C언어] SWEA 1986 지그재그 숫자 (0) | 2022.02.27 |
[C언어] SWEA 1946 간단한 압축 풀기 (0) | 2022.02.26 |