foxpacking

Programming Lessons

Java 언어 Korean

Java 총 정리[25. Random 문제]

문제 풀기 6

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

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

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

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

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

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

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

랜덤 문제 사진1

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

우선 변수 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

About Author

Leave a comment

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

You may also like

Korean Programming 기초

IT 개발자 VS 프로축구선수 비교?

IT 개발자와 프로축구선수의 같은 점과 다른 점? 프로그래밍 공부를 하시면서 개발자로 취업을 하려고 하는데 과연 취업을 할 수 있을까? IT
Korean 클라우드

AWS 로그인 불가능, AWS고객 센터 이메일 문의 결과는?

AWS 고객센터 이메일 문의 솔직후기 AWS를 사용하기 위해 로그인을 하는 경우 이메일로 코드 번호를 보내지만 이메일로 받을 수 없는 상황이거나