티스토리 뷰

#include<stdio.h>
#define f fflush(stdout);
#define s(x) scanf("%d",&x);
main(){int n,a,b;
	s(n)printf("? 1\n");f
	s(a)printf("? %d\n",n);f
	s(b)printf("! %d\n",a==b?0:a>b?-1:1);
}

풀이 : 애드 혹

 

오르막길이 많으면 1

내리막길이 많으면 -1

같다면 0 이다.

 

채점기에게 물어보면서, 어떤구간은 저지대(0) 인지 고지대 (1) 인지를 물어보면서 해결해나가는 문제이다.

 

굳이 중간이 어떤 상태인지를 물어볼 필요는 없다. 처음과 끝만을 가지고, 오르막길이 더 많은지 내리막길이 더 많은지를 알 수 있기 때문이다.

 

1) 시작과 끝의 고도가 같다면

오르막길 개수 = 내리막길 개수

 

2) 시작 부분의 고도가 더 높다면

오르막길 개수 > 내리막길 개수

 

3) 시작부분의 고도가 더 낮다면

오르막길 개수 < 내리막길 개수

 

 

고로 양 쪽 끝단의 고도를 물어본다음 결과를 출력하면 됩니다.

 

출력할 때마다 다음 출력을 위해서 fflush(stdout)을 해주어야 합니다.

최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2026/01   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함