JAVA
day04) 알고리즘-가위바위보, flag를 이용한 중복처리
code_learner
2021. 12. 27. 00:50
1. 가위바위보
가위, 바위, 보를 1, 2, 3 숫자를 대입하면
승(a) | 가위(1) | 바위(2) | 보(3) |
패(b) | 보(3) | 가위(1) | 바위(2) |
즉 b를 3으로 나눈 나머지 +1이 a라면(a=b%3+1)이라면 승리하게 된다.
public class Test01 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
Random rand = new Random();
System.out.println("가위 바위 보: 1 2 3");
String[] rsp= {"가위", "바위", "보"};
int cnt=0;//게임 횟수 번호
while(true) {
System.out.print("사용자: ");
/*int user=sc.nextInt();//1.숫자를 입력받을시는 상관없음
if(user<1||user>3) {
System.out.println("잘못입력하였습니다!");
continue;
}*/
String me=sc.next();
int user;
if(me.equals("가위")) {//2. 문자열로 입력 받을 시 숫자로 변환
user=1;
}else if(me.equals("바위")) {
user=2;
}else {
user=3;
}
cnt++;//유효성 검사를 마치면 횟수 증가
int com = rand.nextInt(3)+1;
System.out.println("사용자는 "+rsp[user-1]);
System.out.print("컴퓨터는 "+rsp[com-1]+"->");
if(user==com) {
System.out.println("비겼습니다! 한번더!");
System.out.println("=============");
}else if(user==com%3+1) {
System.out.println("이겼습니다!");
break;
}else {
System.out.println("졌습니다ㅜㅜ");
System.out.println("=============");
}
}
System.out.println(cnt+"만에 이겼습니다");
}
}
2. 중복제거 알고리즘
boolean 타입을 이용한 flag 변수를 통해서 수행결과여부를 알 수 있다.
public class Test05 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
Random rand = new Random();
System.out.print("정수 입력: ");
int num=sc.nextInt();
int[] arr = new int[num];
int num1;
while(true) {
System.out.print("범위입력: ");
num1 = sc.nextInt();
if(num1<num) {//범위가 배열 크기보다 넓어야 한다
System.out.println("재입력하세요!");
}else {
break;
}
}
int i =0;//배열 index;
while(i<arr.length) {//언제 까지 중복될 지 모르므로 while을 사용한 풀이
int randNum= rand.nextInt(num1)+1;
//이 랜덤수가 이전에 생성된 적이 있다면,
//내가 지금 넣으려고 하는 인덱스 직전까지 조사하고,
boolean flag=false;//수행여부를 알아야 할때 자주 사용
for (int j = 0; j < arr.length; j++) {
if(randNum==arr[j]) {
flag=true;//1. 중복 숫자가 있다면
break;
}
}
if(flag) {
continue; 2. 다시 정수 생성
}
arr[i]=randNum;
i++;
}
for(int v: arr) {
System.out.print(v+" ");
}
}
}
/*정수 입력: 5
범위입력: 9
2 4 7 3 9 */