문제출처 : 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함수써서 절대값씌워주면 됨..
이렇게 또 배우는거지.............