//백준 알고리즘 (배열 - 오르막길)

import java.io.*;
import java.util.*;

public class Main {
	public static void main(String[] args) throws IOException {
		BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
		int N = Integer.parseInt(in.readLine());
		String str = in.readLine();
		int x[] = new int[N];
		StringTokenizer st = new StringTokenizer(str);
		for(int i=0;i<N;i++) {
			x[i] = Integer.parseInt(st.nextToken());
		}

		int max = 0;
		int start = x[0];
		int tmp = start;
		int s = 0;
		for(int i=1;i<N;i++) {
			int end = x[i];
			if(tmp < end) {
				tmp = end;
				if(i == N - 1) {
					s = tmp - start;
					if(max < s)
						max = s;
				}
			} else {
				s = tmp - start;
				if(max < s)
					max = s;

				start = tmp = x[i];
			}
		}
		System.out.println(max);
	}
}

// 숫자 야구 게임 (미완성.. 버그 발생)

/*
1. 123은 x스트라이크 x볼입니다.
2. 456은 x스트라이크 x볼입니다.
.
.
.
.
10. 749는 정답입니다.
-- a. 컴이 3자리 난수 발생 -- 로또
-- b. 내가 3자리 숫자 입력 -- 자판기
-- c. a와 b의 숫자를 비교
	c-1. 숫자가 같다면 ? 
		c-1-1. 자리수가 같다면? 스트라이크 // 자리수 비교는 '배열'
		c-1-2. 자리수가 다르다면 ? 볼
	c-2. 숫자가 다르다면 ? 아무런 일도 발생하지 x
-- d. 스트라이크가 3이면 '749는 정답입니다.' >> 게임 종료
				아니라면 456은 x스트라이크 x볼입니다. >> 다음으로 진행
*/

import java.io.*;

public class NumberBaseBall {

	private static BufferedReader in;

	int[] my = new int[3];
	int[] com = new int[3];
    int strikeCount = 0;
	int ballCount = 0;
	int count = 0;

	public NumberBaseBall(){
		in = new BufferedReader(new InputStreamReader(System.in));
	}
	
	private static String read(){
		String msg = "";
		try{
			msg = in.readLine();
		} catch (Exception e) {
			e.printStackTrace();
		}
		return msg;
	}
	
	void comNansu(){
		//난수발생, 배열에 집어넣기
		
		do{	
			com[0] = (int)(Math.random()*9+1);
		}
		while (com[0] == 0); //처음에 0이 나올 수 없으므로, 0이 나오면 반복문으로 올라감
		
		do{
			com[1] = (int) (Math.random()*9+1);
		}
		while (com[0] == com[1]);

		do{
			com[2] = (int) (Math.random()*9+1);
		}
		while (com[0] == com[2] || com[1] == com[2]);
	}
	
	void game(){
		while (true){ //무한루프
		strikeCount = 0; //누적이 아니기 때문에 초기화 필요
		ballCount = 0;
		count ++;
		System.out.print("숫자입력 : ");
		String msg = read(); //숫자를 얻어옴
		System.out.println("받은 값 : " + msg);
		my[0] = Integer.parseInt(msg)/100; // int이기 때문에 백의자리, 십의자리, 일의자리로 구해주지 않으면 123123123으로 출력됨...
		my[1] = Integer.parseInt(msg)%100/10;
		my[2] = Integer.parseInt(msg)%10;
		System.out.println(my[0] +""+ my[1]+""+my[2]);

		/*for (int i=0;i<my.length ;i++ ){
			for (int j=0;j<com.length ;j++ ){

				if (my[i] == com[i] ){ //숫자가 같다면..
					strikeCount++;
					System.out.println("스트라이크");
					continue;
					
				} else if (my[i] == com[j]){
					ballCount++;
					System.out.println("볼");
					break;
				}	
			}	
		}*/
		
		for (int i=0;i<my.length ;i++ ){
			if (my[i] == com[i] ){
					strikeCount++;
					System.out.println("스트라이크");
					continue;
			} else {
				for (int j=0;j<com.length ;j++ ){
					if(my[i] == com[j]){
					ballCount++;
					System.out.println("볼");
					break;
					}
				}
			}
		}
		
		if (strikeCount == 3){
			System.out.println(count+"." +com[0] +""+ com[1]+""+com[2] +"" +"는 정답입니다.");
			break;
		} else {
			System.out.println(count+"." + my[0]+""+my[1]+""+my[2]+"는 " + strikeCount + "스트라이크 " + ballCount +"볼 입니다.");
		} 
		} 
	}

	public static void main(String args[]){
		NumberBaseBall nbb = new NumberBaseBall();
		
		nbb.comNansu();
		System.out.println(nbb.com[0] +""+ nbb.com[1]+""+nbb.com[2]); //int변수이기 때문에 중간에 ""을 주지 않으면, 더하기를 해버림...
		nbb.game();

		/*
		System.out.print("숫자입력 : ");
		String msg = read();
		System.out.println("받은 값 : " + msg);
		nbb.my[0] = Integer.parseInt(msg)/100;
		nbb.my[1] = Integer.parseInt(msg)%100/10;
		nbb.my[2] = Integer.parseInt(msg)%10;
		System.out.println(nbb.my[0] +""+ nbb.my[1]+""+nbb.my[2]);
		*/
		
		//int num = Integer.parseInt(msg); //String문자열을 int 숫자형으로 바꿔주는 메소드
	}
}

// 숫자 야구 게임 (정상 실행)

import java.io.*;

public class NumberBaseBall1 { 

	private static BufferedReader in;

	int my[] = new int[3];
	int com[] = new int[3];

	public NumberBaseBall1() { //프로그램이 시작하자마자 실행
		in = new BufferedReader(new InputStreamReader(System.in));

		comNansu();
	}

	private static String read() {
		String msg = "";
		try{
			msg = in.readLine();
		}catch (Exception e){
			e.printStackTrace();
		}
		return msg;
	}

	private void comNansu() {
		com[0] = (int) (Math.random() * 9) + 1;//1 - 9
		do{
			com[1] = (int) (Math.random() * 10);//0 - 9
		}while(com[0] == com[1]);
		do{
			com[2] = (int) (Math.random() * 10);//0 - 9
		}while(com[0] == com[2] || com[1] == com[2]);
		System.out.println(com[0] + " " + com[1] + " " + com[2]);
	}

	private void game() {
		int count = 0;
		while(true) {
			System.out.print("숫자입력 : ");
			int myNum = Integer.parseInt(read());//573
			my[0] = myNum / 100;//5
			my[1] = myNum % 100 / 10;//7
			my[2] = myNum % 10;//3
			System.out.println(my[0] + " " + my[1] + " " + my[2]);

			int strike = 0;
			int ball = 0;
			for(int m=0;m<3;m++) {
				for(int c=0;c<3;c++) {
					if(my[m] == com[c]) {//숫자가 같다면..
						if(m == c)//자리수 같다면...
							strike++;
						else
							ball++;
					}
				}
			}// 숫자비교 for end

			if(strike != 3) {
				System.out.println(++count + ". " + myNum + "은 " + strike + "스트라이크 " + ball + "볼입니다.");
			} else {
				System.out.println(++count + ". " + myNum + "은 정답입니다.\n" + count + "번만에 정답!!!!");
				System.out.print("0 : 종료, 1 : 새게임 >> ");
				int num = Integer.parseInt(read());
				if(num == 0) {
					break;
				} else {
					System.out.println("새로운 게임을 시작합니다.");
					count = 0; //누적되는 것이 아니라 새롭게 시작해야 하니까 초기화해주기
					comNansu(); //다시 난수 발생
				}
			}
		}
	}


	public static void main(String[] args) {
		NumberBaseBall1 nbb = new NumberBaseBall1();
		nbb.game();
		/*
		System.out.print("숫자입력 : ");
		String msg = read();
		System.out.println("받은 값 : " + (msg + 100));
		int num = Integer.parseInt(msg);
		System.out.println("받은 값 : " + (num + 100));
		*/
	}
}

+ Recent posts