Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
122 changes: 120 additions & 2 deletions src/main/java/leets/land/UpdownApplication.java
Original file line number Diff line number Diff line change
@@ -1,8 +1,126 @@
package leets.land;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.regex.Pattern;

public class UpdownApplication {
public static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
public static BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

// λ‚œμˆ˜
public static int randNum = (int)(Math.random()*100);

// 랜덀 단어
public static int randChar = (int)(Math.random()*52)+65;

public static void main(String[] args) throws Exception {
int ver = 0; // 버전 μ €μž₯
int cnt = 1; // μ‹œλ„νšŸμˆ˜ μ €μž₯

bw.write("μ—…λ‹€μš΄ κ²Œμž„μ„ μ‹œμž‘ν•©λ‹ˆλ‹€.\n\n");

bw.write("버전을 μž…λ ₯ν•΄μ£Όμ„Έμš” (숫자 버전: 1, μ˜μ–΄ 버전: 2) : ");
ver = br.read();

//숫자 κ²Œμž„ μ§„ν–‰
if(ver == 1){

bw.write("숫자λ₯Ό μž…λ ₯ν•΄μ£Όμ„Έμš”(1 ~ 100) : ");
int num = br.read();

if (Pattern.matches("^(?:[1-9][0-9]?|100)$", String.valueOf(num))) {
// μ΄ˆκΈ°μ— μž…λ ₯ν•œ μˆ«μžκ°’κ³Ό 랜덀 μˆ«μžκ°’μ„ λ„£μ–΄μ€Œ.
cnt = numGame(num, 100, 1, cnt);
} else {
throw new IllegalArgumentException("[ERROR] μž…λ ₯ 문자의 νƒ€μž…μ΄ λ§žμ§€ μ•ŠμŠ΅λ‹ˆλ‹€.");
}

} else if(ver == 2){ //μ˜μ–΄κ²Œμž„ μ§„ν–‰

bw.write("μ˜μ–΄λ₯Ό μž…λ ₯ν•΄μ£Όμ„Έμš”(A ~ z) : ");
int c = (char)br.read();

if (Pattern.matches("^[A-Za-z]+$", String.valueOf(c))) {
// μ΄ˆκΈ°μ— μž…λ ₯ν•œ μˆ«μžκ°’κ³Ό 랜덀 μˆ«μžκ°’μ„ λ„£μ–΄μ€Œ.
cnt = numGame(c, 100, 1, cnt);
} else {
throw new IllegalArgumentException("[ERROR] μž…λ ₯ 문자의 νƒ€μž…μ΄ λ§žμ§€ μ•ŠμŠ΅λ‹ˆλ‹€.");
}

// μ΄ˆκΈ°μ— μž…λ ₯ν•œ 단어값과 랜덀 단어값을 λ„£μ–΄μ€Œ.
cnt = engGame(c, 65, 122, cnt);

} else // μ—λŸ¬μŠˆνŒ…
throw new IllegalArgumentException("[ERROR] μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ” λ²„μ „μž…λ‹ˆλ‹€.");

public static void main(String[] args) {
System.out.print("hihi :D");
bw.write("μ‹œλ„ν•œ 횟수 : " + cnt);

br.close();
bw.flush();
bw.close();
}

public static int numGame(int num, int max, int min, int cnt) throws Exception {
if(num > max || num < min){
bw.write("[ERROR] λ²”μœ„ λ‚΄μ˜ 숫자λ₯Ό μž…λ ₯ν•˜μ„Έμš”.");
numGame(num, max, min, cnt++);
}

if(num < randNum){
bw.write("UP");
min = num;
} else if (num > randNum) {
bw.write("DOWN");
max = num;
} else if (num == randNum) {
bw.write("μ •λ‹΅!");
return cnt;
}

bw.write("숫자λ₯Ό μž…λ ₯ν•΄μ£Όμ„Έμš”(" + min + " ~ " + max + ") : ");
num = br.read();

if (Pattern.matches("^(?:[1-9][0-9]?|100)$", String.valueOf(num))) {
// μ΄ˆκΈ°μ— μž…λ ₯ν•œ μˆ«μžκ°’κ³Ό 랜덀 μˆ«μžκ°’μ„ λ„£μ–΄μ€Œ.
cnt = numGame(num, 100, 1, cnt);
} else {
throw new IllegalArgumentException("[ERROR] μž…λ ₯ 문자의 νƒ€μž…μ΄ λ§žμ§€ μ•ŠμŠ΅λ‹ˆλ‹€.");
}

return numGame(num, max, min, cnt++);
}

public static int engGame(int c, int max, int min, int cnt) throws Exception{
if(c > max || c < min){
bw.write("[ERROR] λ²”μœ„ λ‚΄μ˜ μ•ŒνŒŒλ²³μ„ μž…λ ₯ν•˜μ„Έμš”.");
return engGame(c, max, min, cnt++);
}

if(c < randChar){
bw.write("UP");
min = c;
} else if (c > randChar) {
bw.write("DOWN");
max = c;
} else if (c == randChar) {
bw.write("μ •λ‹΅!");
return cnt;
}

bw.write("μ˜μ–΄λ₯Ό μž…λ ₯ν•΄μ£Όμ„Έμš”(" + min + " ~ " + max + ") : ");
c = (char)br.read();

if (Pattern.matches("^[A-Za-z]+$", String.valueOf(c))) {
// μ΄ˆκΈ°μ— μž…λ ₯ν•œ μˆ«μžκ°’κ³Ό 랜덀 μˆ«μžκ°’μ„ λ„£μ–΄μ€Œ.
cnt = numGame(c, 100, 1, cnt);
} else {
throw new IllegalArgumentException("[ERROR] μž…λ ₯ 문자의 νƒ€μž…μ΄ λ§žμ§€ μ•ŠμŠ΅λ‹ˆλ‹€.");
}

return engGame(c, max, min, cnt++);
}

}