반응형
오늘은 팀 과제 제출할 것이 있는 날이었다.
예전에 학교에서 C언어를 배울 때 비슷한 문제를 풀었던 것 같은데 언어도 다르고 어떻게 풀었는지 기억도 안 나서 감회가 새로웠다.
import java.util.Random;
import java.util.Scanner;
public class baseball {
public static void main(String[] args) {
Random random = new Random();
Scanner sc = new Scanner(System.in);
int com[] = new int[3];
String input;
String[] human;
int count = 1;
int s = 0;
int b = 0;
for (int i = 0; i < 3; i++) {
com[i] = random.nextInt(9) + 1;
for (int j = 0; j < i; j++) {
if (com[i] == com[j]) i--;
}
}
// 랜덤 수 확인
for(int i = 0; i < 3; i++){
System.out.println(com[i]);
}
System.out.println("컴퓨터가 숫자를 생성하였습니다. 답을 맞춰보세요!");
while(true){
System.out.print(count+"번쨰 시도 : ");
input = sc.next();
human = input.split("");
for(int j = 0; j < 3; j++){
if(com[j] == Integer.parseInt(human[j])){
s++;
if(s == 3){
System.out.println(s+"S");
System.out.println(count+"번만에 맞히셨습니다.");
System.out.println("게임을 종료합니다.");
break;
}
}
else {
for (int k = 0; k < 3; k++) {
if (com[j] == Integer.parseInt(human[k])) b++;
}
}
}
if(s == 3) break;
if(b == 3) System.out.println(b+"B");
else System.out.println(b+"B"+s+"S");
s = 0;
b = 0;
count++;
}
}
}
Random 클래스
기본 생성자를 통해 Random 객체를 생성하면 현재 시간을 시드로 사용하고 setSeed 메서드를 통해 시드값을 따로 설정해줄 수도 있다.
int nextInt(int n) | int 타입의 0 ~ 매개값까지의 난수를 리턴 |
1 ~ 9 까지의 값을 받아야하므로
nextInt(9) + 1 까지의 값을 random 으로 정했다.
반복문을 돌면서 생성된 값이 기존에 있던 com 배열의 인자와 같은 값이 있으면 i 를 감소시켜 다시 값을 생성하게 하였다.
이후엔 문제에 맞게 반복문과 조건문을 사용해주었는데
결론적으로는 삼중 반복문 같은 기괴한 코드가 나오게 되었다.
팀원 중 한 분은 배열을 사용하지 않고 (반복문 사용 x) 조건문으로만 짜셨고
또 다른 한 분은 지급 받은 강의에서 나왔던 hashset 과 contains 메서드로 간단하게 짜셨다.
강의를 들어도 그걸 써야겠다는 생각이 들지 않아서 활용하지 못했는데 신기했다...
반응형
'개발 ━━━━━ > TIL' 카테고리의 다른 글
[TIL] Java 자료형과 Git 협업 (fork vs clone) (0) | 2023.08.15 |
---|---|
[TIL] 미니 프로젝트 3일차 -완- (0) | 2023.08.11 |
[TIL] 미니 프로젝트 2일차 (0) | 2023.08.10 |
[TIL] 미니 프로젝트 1일차 (0) | 2023.08.09 |
[TIL] Programmers SQL 문제 풀이 (0) | 2023.08.07 |