[백준/BOJ]16756. Pismo [Bronze2]

  1. Pismo

문제출처 : https://www.acmicpc.net/problem/16756

간단히 해석하자면, N을 입력받아서 배열 A[N]을 입력받고,
배열 A[N]에서 간격의크기가 가장 작은 간격을 출력한다.
이때 간격은 A[R]-A[L]인데, R은L보다 무조건 크다.
(서로 근접한 값의 간격을 말하고, 절대값이다.)

code

#include <stdio.h>
int main()
{
	int N, i,min;
	scanf("%d", &N); //N을 입력받음
	int A[100000];
	for (i = 0; i < N; i++)
		scanf("%d", &A[i]); //배열 A을 입력받음
	if (A[1] - A[0] < 0) //간격은 절대값이어야 함. 
		min = -1 * (A[1] - A[0]);
	else
		min = A[1] - A[0];
	for (i = 0; i < N - 1; i++)
	{
		if (A[i + 1] - A[i] < 0) //음수일떄
		{
			if (-1 * (A[i + 1] - A[i]) <= min) 간격이 min보다 작으면 min을 최신화
				min = -1 * (A[i + 1] - A[i]);
		}
		else
			if (A[i + 1] - A[i] <= min)
				min = A[i + 1] - A[i];
	}
	printf("%d",min);
	return 0;
}

추가

글 다쓰고나서 생각난건데

code

#include <stdio.h>
int main()
{
	int N, i,min;
	scanf("%d", &N);
	int A[100000];
	for (i = 0; i < N; i++)
		scanf("%d", &A[i]);
	min = abs(A[1] - A[0]);
	for (i = 0; i < N - 1; i++)
	{
		if (abs(A[i + 1] - A[i]) <= min)
			min =abs(A[i + 1] - A[i]);
	}
	printf("%d",min);
	return 0;
}

그냥 abs함수써서 절대값씌워주면 됨..
이렇게 또 배우는거지.............

좋은 웹페이지 즐겨찾기