Categories: Java 언어Korean

Java 총 정리[25. Random 문제]

문제 풀기 6

이전 스물 세걸음과 네걸음에서 배열에 대한 내용을 상세히 배웠습니다. 그러면 당연히 배열 문제를 풀어봐야 하지 않을 까요? 당연히 저 또한 배열 문제를 해봐야 여러분들의 실력이 향상이 될 수 있다고 생각을 합니다.

그럼 배열 관련해서 어떤 문제를 풀어봐야 할까요? 배열 문제를 바로 시작하기 이전에 복습을 겸해서 배열이 아닌 문제를 하나 더 추가적으로 내려고 합니다. 하지만 이 문제는 배열 문제는 아니지만 그 다음 문제와 연결이 되면서 왜 배열을 쓰면 좋은 가를 알 수 있는 문제기 때문에 출제를 하게 됐습니다. 이 글을 읽고 문제를 푸신다면 복습과 더불어서 배열의 좋은 점을 그 다음 문제와 연결을 지을 수 있습니다.

위에서 말한 내용의 문제는 바로 3개의 변수에 같은 랜덤값이 들어가지 않기 만들어야 하는 문제 입니다. 숫자는 1~9까지 랜덤값을 넣어 주지만 각 변수는 같은 값이 절대로 나올 수 없게 만들어야 합니다. 이 문제를 고민을 해보시고 풀어보시고 정답을 보신다면 이 글이 도움이 되실 겁니다.

3개의 변수의 모두 다른 랜덤값 넣기

변수를 사용하기 때문에 배열은 사용하지 않고 문제를 푸시면 됩니다. 배열을 제외한 나머지를 모두 사용을 하여서 문제를 풀어보시면 됩니다. 이 문제의 경우에는 한번 해보고 판단을 하시면 안됩니다. 꼭 여러 확인을 통해서 정말로 Random 한 숫자가  변수에 들어가지 않는 지를 확인을 해주세요.

※ 정답은 하나가 아닙니다. 문제의 대한 결과가 동작을 한다면 정답입니다. 밑에 나오는 정답은 참고를 하시면 됩니다.

※ 결과에 대한 테스트를 예시로만 하는 것보다 여러가지를 하셔서 생각하는 결과로 나오는 확인을 하시는 것이 더욱 더 좋습니다.

위 문제는 설명에 대한 부분을 담고 있습니다.

우선 변수 3개를 생성하고 Random 객체를 생성을 하여 1~9까지 랜덤한 수를 각 변수에 대입을 하여야 합니다. Random을 잘 모르시는 분들을 열 아홉걸음을 참고 하시면 됩니다.

※ 단, 변수에 랜덤한 값만 넣고 문제를 종료하시면 안됩니다. 꼭 로직에 의해서 똑같은 값이 나오지 않게 구현을 하셔야 합니다.

위 문제를 Class를 생성하고 Main문에 소스를 구현해 주세요.

실행 관련 걸음 : 다섯 걸음, 여섯걸음

참고해주세요.


import java.util.Random;

public class Q6 {

   public static void main(String[] args) {
 // TODO Auto-generated method stub
 Random r = new Random(); // 랜덤 변수와 객체 선언
 // 1~9까지의 난수를 com1 변수를 생성 후 대입
 int com1 = r.nextInt(9)+
 // 1~9까지의 난수를 com2 변수를 생성 후 대입
 int com2 = r.nextInt(9)+1;
 // 1~9까지의 난수를 com3 변수를 생성 후 대입
 int com3 = r.nextInt(9)+1; 
  
 //com1과 com2가 같거나 com2와 com3이 같거나 com1과 com3이 같으면 반복
 while(com1 == com2 || com2 == com3 || com1 == com3) {
  System.out.println("중복있음");//출력
  System.out.println(com1+","+com2+","+com3); //출력
 com1 = r.nextInt(9)+1;// 1~9까지의 난수를 com1 변수에 대입
  com2 = r.nextInt(9)+1;// 1~9까지의 난수를 com2 변수에 대입
  com3 = r.nextInt(9)+1;// 1~9까지의 난수를 com3 변수에 대입
 }
 System.out.println(com1+","+com2+","+com3);//출력
   }
}

        

생각을 해보기

위 문제 같은 경우에는 변수로 사용을 해서 하다 보니 컴퓨터 자원의 소모가 크지만 중복이 나오면 중복이 아닌 숫자 또한 랜덤값을 다시 받아서 대입을 하는 연산을 진행을 하고 있습니다. 그렇기 때문에 이런 유형의 문제에서는 변수를 쓰면 효율적이라고 말을 할 수는 없습니다.

※ 구조적으로 완성된 문제는 아닙니다. 추후에 구조적으로 완성된 문제로 업그레이드가 될 예정입니다.

Dolphin

Recent Posts

Java 총정리[97. Java GUI]

Java GUI Java GUI에 대해서 이번 걸음에서 배움으로써 GUI에 전반적인 지식과 Java GUI를 구현하는 방법…

7개월 ago

Java 총정리[96. Java TCP 통신 프로그램 구현]

Java TCP 통신 프로그램 구현 Java TCP 통신 프로그램 구현을 위해서 이전 걸음에서 쓰레드에 대한…

7개월 ago

Java 총정리[95.쓰레드 통신]

쓰레드 통신 이전 걸음에서 쓰레드의 임계영역에 대해서 같이 공부를 했습니다. 동기화에 대한 개념을 계속적으로 하고…

7개월 ago

Java 총 정리[94. 쓰레드 임계영역]

쓰레드 임계영역 이전 걸음에서 쓰레드의 동기화에 대해서 같이 공부를 했습니다. 동기화에 대한 전반적인 내용을 공부하고…

8개월 ago

Java 총 정리[93. 쓰레드 동기화]

쓰레드 동기화 이전 걸음에서 계속 쓰레드에 대해서 공부를 하고 있습니다. 쓰레드는 상당히 중요한 개념이기 때문에…

8개월 ago

Java 총 정리[92. 쓰레드 join()]

쓰레드 join() 이전 걸음에서 쓰레드의 전반적인 실행 흐름에 대해서 공부를 했습니다. 이제 배운 실행 흐름…

8개월 ago

This website uses cookies.