알고리즘 - 선형탐색

이강용·2023년 1월 5일
1

알고리즘 개념

목록 보기
1/14

문1) 배열을 이용하여, 1~10사이의 수가
중복없이 나오는 프로그램을 작성하시오

Random 클래스 사용
Random random = new Random();

hint : 선형탐색 알고리즘

package 배열;


import java.util.Random;

public class Array3 {
	public static void main(String[] args) {
		
		/*
		 * 중복을 피해서 숫자 나오게 하는방법은?
		 *  배열안에 특정 숫자가 있는지 비교 
		 *  for 반복분 써서 0~9번까지 배열칸을 다 확인한다.
		 *  있으면, 다시 랜덤을 돌림 (안나올때까지) while
		 */
		
		Random random = new Random();
		int[] nums = new int[10]; // 공간 할당
			
			
		
		for(int i = 0; i < nums.length; i++) { //배열 Index
		while(true) {
			boolean findFlag = true;
			
			int randomNum = random.nextInt(nums.length)+1; // 1~10사이의 수(랜덤값)가 들어감
			
			for(int j = 0; j < nums.length; j++) { // 검출 함수
				if(nums[j] == randomNum) {  //nums[10] 10칸의 배열과  randomNum 1~10까지 중 하나의 수
					findFlag = false;       // 비교와하여 같은지 확인, 같으면 Flag는 false;
					break; // 안쪽 for문을 멈춰주는 break; 중복되지 않은 값을 찾았을때,
				}
			} // 
			
			if(findFlag) { // if(true/false) // true일때만 작동
				nums[i] = randomNum;
				break;
			}	
		}
	}// 바깥 for문 끝.
		for(int i = 0; i<nums.length; i++) {
			System.out.println(nums[i]);
		}
		}
	
	}

문2) 배열을 사용하여 로또 번호 추출하는 프로그램 작성

package 배열;

public class Array3 {
	public static void main(String[] args) {
		
		
		int[] num = new int[6];
		
		for(int i = 0; i<6; i++) {
			num[i] = (int)(Math.random()*45)+1;
			
			for(int j = 0; j<i; j++) {
				if(num[i] == num[j]){
					i--;
					break;
				}
			}
			
		}
		for(int i = 0; i<6; i++) {
			System.out.println(num[i]+ " ");
		}
		
		
		}
	
	}
profile
HW + SW = 1

0개의 댓글