//6개의 난수 발생 => 중복이 없는 데이터 출력 (1~45사이의 난수)
//=> 피망(고스톱) => 로직
import java.util.Arrays;
public class 배열_4 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int lotto[]=new int[10];
int su=0; // 난수 발생시 저장하는 변수
boolean bCheck=false; // 중복 여부 확인
for(int i=0; i<lotto.length; i++) {
bCheck=true;
while(bCheck) { //중복여부 확인
su=(int)(Math.random()*45)+1;
bCheck=false; //while만 종료
for(int j=0; j<i; j++) {
if(lotto[j]==su) { //저장된 데이터중에 난수와 같은 값이 있는지
bCheck=true;
break;
}
}
}
lotto[i]=su;
}
//
// for(int i=0; i<arr.length; i++) {
//
// arr[i]=(int)(Math.random()*10)+1;
//
// for(int j=0; j<i; j++) {
//
// if(arr[i]==arr[j]) {
// i--;
// break;
// }
// }
//
// }
Arrays.sort(lotto);
System.out.println(Arrays.toString(lotto));
}
}
/*
정렬
= 선택정렬 / 버블정렬
= ASC / DESC ====> Oracle : Order by
| 내림차순 (******) => 최신순
| 올림차순
86~96page => 1차원 배열
알고리즘 => 정렬 알고리즘 => 108page
선택정렬 : 한개의 데이터를 선택한 후에 기준점으로 변경
10 30 50 20 40 => 10 20 30 40 50 , 50 40 30 20 10
----------------- -------------
올림차순 내림차순
내림 차순
10 30 50 20 40
-- --
30 10
-- --
50 30
-- --
50 20
-- --
50 40
----------------- 1round => for문 한번 수행
50 10 30 20 40
--
고정
-- --
30 10
-- --
30 20
-- --
40 30
------------ 2round => for문 한번 수행
*/
public class 배열응용_4 {
static void sort(int[] arr) {
for (int i = 0; i < arr.length - 1; i++) {
for (int j = i + 1; j < arr.length; j++) {
if (arr[i] < arr[j]) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] arr = new int[5];
// 초기화
for (int i = 0; i < arr.length; i++) {
arr[i] = (int) (Math.random() * 100) + 1;
}
System.out.println("정렬 전 :");
for (int i : arr) {
System.out.print(i + " ");
}
System.out.println();
for (int i = 0; i < arr.length - 1; i++) {
for (int j = i + 1; j < arr.length; j++) {
if (arr[i] < arr[j]) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
System.out.println("정렬 후 :");
for (int i : arr) {
System.out.print(i + " ");
}
}
}
import java.util.*;
public class 배열응용_5 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] arr = new int[5];
for (int i = 0; i < arr.length; i++) {
arr[i] = (int) (Math.random() * 100) + 1;
}
System.out.println("정렬 전 : ");
for (int i : arr) {
System.out.print(i + " ");
}
System.out.println();
System.out.println("정렬 후 : ");
Arrays.sort(arr); //올림차순
for (int i : arr) {
System.out.print(i + " ");
}
System.out.println();
for(int i=arr.length-1; i>=0; i--) {
System.out.print(arr[i]+" ");
}
// 자바 => 조립식 / 라이브러리 중심 / 오버라이딩 프로그램
// ------------- ** 핵심
// Math.random()*100 => int => .jar
// 데이터베이스 연동 / 웹에서 브라우저 전송 => 사용자 정의 라이브러리
// 반복 => 공통 모듈 => 중복제거
}
}
import java.util.Arrays;
public class 배열응용_7 {
public static void main(String[] args) {
// TODO Auto-generated method stub
char[] arr=new char[5];
for(int i=0; i<arr.length; i++) {
arr[i]=(char)((Math.random()*26)+65);
}
System.out.println("정렬 전 : ");
for(char c: arr) {
System.out.print(c+" ");
}
System.out.println("\n정렬 후: ");
for(int i=0; i<arr.length-1; i++) {
for(int j=i+1; j<arr.length; j++) {
if(arr[i]<arr[j]) {
char temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
}
System.out.println((i+1)+"Round"+Arrays.toString(arr));
}
for(char i:arr) {
System.out.print(i+" ");
}
}
}
/*
버블 정렬
=> 인접한 데이터끼리 비교
=> 선택 정렬 => 앞에서부터 고정
=> 버블 정렬 => 뒤에서부터 고정
방식
20 30 40 50 10 => DESC
-- --
30 20
-- --
40 20
-- --
50 20
-- --
20 10
----------------
30 40 50 20 10 => 1round
-- --
40 30
-- --
50 30
-- --
30 20
---------------
40 50 30 20 10 => 2round
-- --
50 40
-- --
40 30
---------------
50 40 30 20 10 => 3round
*/
import java.util.Arrays;
public class 배열응용_8 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] arr=new int[5];
// 초기화
for(int i=0; i<arr.length; i++) {
arr[i]=(int)(Math.random()*100)+1;
}
System.out.println("정렬 전 : ");
for(int i:arr) {
System.out.print(i+" ");
}
System.out.println("\n");
for(int i=0; i<arr.length-1; i++) {
for(int j=0; j<arr.length-1-i; j++) {
if(arr[j]<arr[j+1]) {
int temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
System.out.println((i+1)+"Round"+Arrays.toString(arr));
}
System.out.println("최종 결과값: ");
for(int i:arr) {
System.out.print(i+" ");
}
}
}
/*
배열 복사
=얕은 복사 (Call By Reference) => 주소에 의한 참조
=> 같은 메모리를 이용
=깊은 복사 => 새로운 배열 생성 (메모리 공간이 따로 생성)
*/
public class 배열정리_추가내용 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] arr= {10,20,30,40,50};
int[] arr_copy=arr.clone(); //clone => 값을 복사하여 새로운 배열 생성 => 깊은 복사 => 아바타 =< adapter
System.out.println("arr="+arr);
System.out.println("arr_copy"+arr_copy);
arr_copy[0]=100;
arr_copy[1]=200;
arr_copy[2]=300;
arr_copy[3]=400;
arr_copy[4]=500;
for(int i:arr) {
System.out.print(i+" ");
}
System.out.println();
for(int i:arr_copy) {
System.out.print(i+" ");
}
}
}
/* =>달력
1. 사용자 정의
=> 달력 : 1일자의 요일 확인
------
=> 1년도 1월 1일 => 월요일
1) 1/1/1 ~ 2023/12/31 => 총날수 계산
2) 2023/11/30 => 총날수 계산
3) ------------------------------+1
1)+2)+3) / 7 => 요일을 구한다
0~6 => 0일=> 일요일 6=>토요일
=> 예약 / 일정 관리
2. 라이브러리 Calendar
*/
import java.util.*;
public class 배열응용_2 {
public static void main(String[] args) {
// TODO Auto-generated method stub
// 입력 받기 => year/month/day => 요일
Scanner scan=new Scanner(System.in);
System.out.print("년도 입력:");
int year=scan.nextInt();
System.out.print("월 입력:");
int month=scan.nextInt();
// System.out.print("일 입력:");
// int day=scan.nextInt();
// 전년도까지 날 수
int total=(year-1)*365
+(year-1)/4
-(year-1)/100
+(year-1)/400; //윤년 처리
int[] lastday= {
31,28,31,30,31,30,
31,31,30,31,30,31
};
//모든 언어에서 사용되는 윤년 계산법
if((year%4==0 && year%100!=0)||(year%400==0)) {
lastday[1]=29;
}else {
lastday[1]=28;
}
for(int i=0; i<month-1; i++) {
total+=lastday[i];
}
// 입력 날 +
//total+=day;
total++;
//요일 구하기
//=> switch대신 사용하는 배열
char[] strWeek= {'일','월','화','수','목','금','토'};
int week=total%7;
System.out.println(year+"년도"+month+"월");
System.out.println();
for(char c:strWeek) {
System.out.print(c+"\t"); // \t => 일정간격으로 띄우기
}
// 첫 번째 날짜 위치에 맞춰 공백 출력 (변경된 부분)
System.out.println();
for(int i=1; i<=lastday[month-1]; i++) {
if(i==1) {
for(int j=0; j<week; j++) {
System.out.print("\t");
}
}
System.out.printf("%2d\t",i);
week++; //요일 변경
if(week>6) { //일요일 이라면
week=0;
System.out.println(); //다음줄에 출력
}
}
}
}
/* =>달력
1. 사용자 정의
=> 달력 : 1일자의 요일 확인
------
=> 1년도 1월 1일 => 월요일
1) 1/1/1 ~ 2023/12/31 => 총날수 계산
2) 2023/11/30 => 총날수 계산
3) ------------------------------+1
1)+2)+3) / 7 => 요일을 구한다
0~6 => 0일=> 일요일 6=>토요일
=> 예약 / 일정 관리
2. 라이브러리 Calendar
*/
import java.util.*;
public class 배열응용_2 {
public static void main(String[] args) {
// TODO Auto-generated method stub
// 입력 받기 => year/month/day => 요일
Scanner scan=new Scanner(System.in);
System.out.print("년도 입력:");
int year=scan.nextInt();
System.out.print("월 입력:");
int month=scan.nextInt();
// System.out.print("일 입력:");
// int day=scan.nextInt();
// 전년도까지 날 수
int total=(year-1)*365
+(year-1)/4
-(year-1)/100
+(year-1)/400; //윤년 처리
int[] lastday= {
31,28,31,30,31,30,
31,31,30,31,30,31
};
//모든 언어에서 사용되는 윤년 계산법
if((year%4==0 && year%100!=0)||(year%400==0)) {
lastday[1]=29;
}else {
lastday[1]=28;
}
for(int i=0; i<month-1; i++) {
total+=lastday[i];
}
// 입력 날 +
//total+=day;
total++;
//요일 구하기
//=> switch대신 사용하는 배열
char[] strWeek= {'일','월','화','수','목','금','토'};
int week=total%7;
System.out.println(year+"년도"+month+"월");
System.out.println();
for(char c:strWeek) {
System.out.print(c+"\t"); // \t => 일정간격으로 띄우기
}
// 첫 번째 날짜 위치에 맞춰 공백 출력 (변경된 부분)
System.out.println();
for(int i=1; i<=lastday[month-1]; i++) {
if(i==1) {
for(int j=0; j<week; j++) {
System.out.print("\t");
}
}
System.out.printf("%2d\t",i);
week++; //요일 변경
if(week==7) { //일요일 이라면
week=0;
System.out.println(); //다음줄에 출력
}
}
}
}