본문 바로가기

개발일지/Java + Spring

[면접/코딩테스트 1-2] 난수 생성과 최소값 최대값 구하기

마찬가지로 문제를 다 공개할 수 없기 때문에 풀이에 사용했던 방법들을 정리하는 정도로 끝내겠습니다~ 

 


 

 

난수 생성하는 법 

import java.util.Random;

int a = random.nextInt(1000); //0부터 999까지의 난수 생성
int b = random.nextInt(1000) + 1; //1부터 1000까지 난수 생성

 

Random 랜덤 클래스 참고 : 

 

[JAVA] 자바_Random (랜덤 클래스)

- Random 클래스 사용하기 - Java.util.Random() - Random 클래스는 난수를 생성하는 클래스로 객체를 생성하여 사용한다. 함수 설명 boolean nextBoolean() boolean형 난수 반환 int nextInt() int형 난수 반환..

mine-it-record.tistory.com

 

여기서 잠깐!

 

1~1000까지의 범위는 넓기 때문에 중복된 숫자가 잘 나오지 않지만 중복된 수를 제거해 보겠습니다.

 

중복된 숫자를 보기 위해서 잠시 random.nextInt(10)+1로 바꿔줍니다.

 

    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    Random random = new Random();

    System.out.print("숫자를 입력하세요 : ");
    int num = Integer.parseInt(br.readLine());
    int[] arr = new int[num];

    for(int i=0; i<arr.length; i++)
    {
        arr[i] = random.nextInt(10)+1;

        for(int j=0; j<i; j++)
        {
            if(arr[i]==arr[j])
            {
                i--;
            }
        }
    }
    for(int i=0; i<arr.length; i++)
    {
        System.out.println((i+1) + "번째 난수 : " + arr[i]);
    }

 

====== 출력 ======

숫자를 입력하세요 : 5
1번째 난수 : 6
2번째 난수 : 10
3번째 난수 : 4
4번째 난수 : 2
5번째 난수 : 7

 

 

여기서 최소값과 최대값을 비교하려면 마지막 for문에 if문을 이용해주면 되겠죠?

 

int min = arr[0];
int max = arr[0];

for(int i=0; i<arr.length; i++)
{
    System.out.println((i+1) + "번째 난수 : " + arr[i]);
    if(min > arr[i])
    {
        min = arr[i];
    }
    else if(max < arr[i])
    {
        max = arr[i];
    }
}

System.out.printf("최대값 : %d / 최소값 : %d", max, min);

 

사실 제출할 때 최대값과 최소값 순서를 잘 못 입력해서 제출을 했습니다.. 아쉽지만 입사하게 됐으니 아쉬움을 날려보내렵니다..~~

 

 

랜덤 중복제거 팁) 

 

java로 중복 제거된 랜덤 구현하기 [자바강좌]

안녕하세요 java로 랜덤으로 값을 출력하는 방법과 중복이 제거된 랜덤을 출력하는 방법을 알아보겠습니다....

blog.naver.com