본문 바로가기
Algorithms/simulation

2 Problem C : 용액

by OKOK 2019. 11. 7.

슬라이딩 윈도우

 

- 양 쪽에서 하나씩 이동

- 이동하면서 비교하는 과정 와일 문 안에

- break 조건을 넣기

 

#include <stdio.h>

int N, arr[100010], ans = 2e9 + 1, ans1, ans2; //입력 받는 배열,

int Abs(int x) { return x >= 0 ? x : -x; } // 절대 값

int main()
{
	scanf("%d", &N);
	for (int i = 0; i < N; i++) scanf("%d", &arr[i]); // 입력을 받고
	int l = 0, r = N - 1, tmp;
	while (l < r) {
		tmp = arr[l] + arr[r];
		if (Abs(tmp) < ans) { // 0과의 거리 이므로, 절대값을 한 후 비교
			ans = Abs(tmp); // 답을 저장
			ans1 = arr[l], ans2 = arr[r];
		}
		if (tmp == 0) break; // 더 이상 할 필요가 없음
		tmp > 0 ? r-- : l++; // 두 수의 합이 양수인지 음수인지,
	}
	printf("%d %d\n", ans1, ans2);
	return 0;
}
5
-99 -2 -1 4 98
-99 98

 

'Algorithms > simulation' 카테고리의 다른 글

2 Problem E : 구간 성분  (0) 2019.11.07
2 Problem D : 키로거(Keylogger)  (0) 2019.11.07
2 Problem A : 수열  (0) 2019.11.07
1 Problem F : 연속부분합 찾기  (0) 2019.11.07
1 Problem B : 못생긴 수  (0) 2019.11.07

댓글