//백준 알고리즘 (배열 - 오르막길)
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));
*/
}
}
'Language > Java' 카테고리의 다른 글
19.11.06.(API-Java.lang/Wrapper Class/기본DT->String, String->기본DT 변환/ autoboxing / unboxing/ boxing) (0) | 2021.02.14 |
---|---|
19.11.05. (참조형 데이터 타입을 저장하는 배열) (0) | 2021.02.14 |
19.11.03. (package/import문/cmd javac/Organize Imports) (0) | 2021.02.14 |
19.11.02. (열거 타입/열거 상수/싱글톤(Singleton)) (0) | 2021.02.14 |
19.11.01.(수정자(Modifier)/final/static/상수/배열(Array)/for each문) (0) | 2021.02.14 |