day9 내용정리

int [] = arr3 = null;

//SCE라고 부름 show short circuit evaluation
*논리연산자에서 판별할 때 왼쪽에 있는 값에 따라 오른쪽이 실행되지 않을 수 있다.
if(arr3 != null && arr3.length ==2){          => 작동함 
( arr3.length ==2 만있으면 에러남)
sysout("12");
}

&& : 하나라도 거짓이면 거짓, 
왼쪽이 거짓이면 오른쪽을 확인하지 않아도 거짓이기때문에 오른쪽이 실행되지않음.

|| : 하나라도 참이면 참, 
왼쪽이 참이면 오른쪽을 확인하지 않아도 참이기때문에 오른쪽이 실행되지 않음.

/* 4개의 성적을 입력받아 합격인지 불합격인지 판별하는 코드를 작성하세요

public static void main(String[] args) {
/* 4개의 성적을 입력받아 합격인지 불합격인지 판별하는 코드를 작성하세요
* 합격 기준
* - 모든 성적이 과락이 없어야 함
* - 평균 60점 이상
* 과락 : 성적이 40점 미만인 경우
*
* 예시1) 과락이 있는 경우
* 성적 : 40 30 100 100
* 불합격입니다.
*
* 예2)
* 성적: 60 40 100 100
* 합격입니다.
*
* 예3) 평균이 60미만인 경우
* 성적: 40 50 40 60
* 불합격입니다.
* */	

  int i,sum=0;
	boolean pass=true; //참&거짓 결과
	int scoreArr[] = new int [4];
	Scanner scan = new Scanner(System.in);

	for(i=0; i<scoreArr.length; i+=1) {
		System.out.print("성적을 입력하세요: ");
		scoreArr[i] = scan.nextInt();
	}
	scan.close();

	for(int tmp:scoreArr) {
		sum=sum+tmp;
	}

	double avg = (double) sum / scoreArr.length;
	if(avg<60) {
		pass=false;
	}

	for(int tmp : scoreArr) {
		if(tmp<40) {
			pass=false;
		}
	}

	if(pass) {
		System.out.print("합격입니다.");
	}else {
		System.out.print("불합격입니다.");
	}
 }
}

/* 1번 문제 : 1부터 10까지 한 줄로 출력되는 코드를 작성하세요.*/

/* * 2번 문제 : 4의 배수에서 줄바뀜.

/*3번 문제: 4의 배수이면 엔터를 출력, 4의 배수가 아니면 , 를 출력

/4번문제: 3번문제코드에 홀수일때 +1, 짝수일때 -1출력을 이용

/* 1번 문제 : 1부터 10까지 한 줄로 출력되는 코드를 작성하세요.*/
	for(int i=1; i<=10; i+=1) {
		System.out.print(i+" ");
	}

System.out.println();
System.out.println("--------");

/* * 2번 문제 : 다음과 같이 되도록 코드를 작성하세요.
	 * 1 2 3 4
	 * 5 6 7 8
	 * 9 10
	 * 힌트 : 4의 배수에서 줄바뀜*/
	for(int i=1; i<=10; i+=1) {
		System.out.print(i+" ");
		if(i%4==0) {
			System.out.println();
		}
	}

	System.out.println();
	System.out.println("--------");

	/* * 3번 문제 : 다음과 같이 되도록 코드를 작성하세요.
	 * 1, 2, 3, 4
	 * 5, 6, 7, 8
	 * 9, 10,11,12
	 * 힌트: 4의 배수이면 엔터를 출력, 4의 배수가 아니면 , 를 출력
	 * */
	for(int i=1; i<=12; i+=1) {
		System.out.print(i+" ");
		if(i%4==0) {
			System.out.println();
		}else if(i%4!=0) {
			System.out.print(",");
		}
	}

	System.out.println();
	System.out.println("--------");

	/* * 4번 문제 : 다음과 같이 출력 되도록 코드를 작성하세요.
		힌트: 3번문제코드에 홀수일때 +1, 짝수일때 -1출력을 이용
	 	* 2 1 4 3					1 2  3  4
	 	* 6 5 8 7 					5 6  7  8
	 	* 10 9 12 11 				9 10 11 12
	 * */

	for(int i=1; i<=12; i+=1) {
		if(i%4==0) {
			System.out.print(i-1+ " ");
			System.out.println();
		}else if(i%2==0) {
			System.out.print(i-1+ " ");
		}else if(i%2!=0) {
			System.out.print(i+1+" ");
		}
	}
 }
}

/* 10개짜리 배열에 1부터 10를 저장한 후 출력

10개짜리 배열에 피보나치수열을 저장한 후 출력

5개짜리 배열에 저장된 숫자들중 연속된 숫자가 3개인지 아닌지를 확인

/* 10개짜리 배열에 1부터 10를 저장한 후 출력하는 코드를 작성하세요.
* */
int arr[]=new int[10];
for(int i=0; i<arr.length; i+=1) {
arr[i]=i+1;
System.out.print(arr[i]+" ");
}

System.out.println();		
/* 10개짜리 배열에 피보나치수열을 저장한 후 출력하는 코드를 작성하세요.
* 피보나치 수열
*  - 앞에 두 개를 더하여 나열함
*  - 0번지 : 1, 1번지 : 1 (고정)
*  - 저장 및 출력 값: 1 1 2 3 5 8 13 21 34 55
* 힌트 : arr[i] = arr[i-2] + arr[i-1]
* */
	
  int arrP[] = new int[10];
	arrP[0] = arrP[1] = 1;

	for(int i=2; i<=arrP.length-1; i+=1) {
		arrP[i]=arrP[i-2]+arrP[i-1];
	}
	for(int i=0; i<=arrP.length-1; i+=1) {
		System.out.print(arrP[i] + " ");
	}

System.out.println();		
/* 5개짜리 배열에 저장된 숫자들중 연속된 숫자가 3개인지 아닌지를 확인하는 코드를
* 작성하세요. 단, 숫자들은 정렬되었다고 가정
* 예시
* 입력 : 1 1 2 3 4
* 연속
* 예시
* 입력 : 1 2 4 5 8
* 연속 아님
* 예시 : 1 3 5 6 7
* 연속
* 뒤번지의 값과 1차이가 나면 count 변수를 1 증가,
* 1차이가 나지 않으면 count를 1으로
* count가 3이되면(연속) 반복문 종료
* */
	int arr1[] = new int[] {1,2,2,2,4};
	int count=1;

	for(int i=0; i<arr1.length-1; i+=1) {
		if(arr1[i]==arr1[i+1]) {
			count+=1;
		}else{
			count=1;
		}if(count==3) {
			break;
		}
	}
	if(count==3) {
		System.out.print("연속");
	}else {
		System.out.print("연속 아님");
	}
 }
}

5개짜리 배열에 페어(같은 숫자가 2개) 있는지 없는지 판별하는 코드

public static void main(String[] args) {
/* 5개짜리 배열에 같은 숫자가 2개 있는지 없는지 판별하는 코드를 작성하세요
* 단, 숫자는 정렬되어 있다고 가정
*
* 예시 : 1 1 2 3 4
* 있음
*
* 예시 : 1 2 3 4 5
* 없음
*
* 예시 : 1 1 2 2 4
* 있음
*
* 예시: 1 1 1 2 3
* 없음
*
* i번지의 값고 i+1번지의 값이 같으면 count를 1증가
* 다르면, count의 값이 2와 같으면 result를 true로 수정
* 		  count를 1로 초기화 (break안걸어줌)
* 반복문 종료 후,
* res가 true이면 있음이라고 출력, false이면 없음이라고 출력
* */

	int arr[] = new int[] {1,1,2,3,4};
	int count=1;
	boolean res = false;

	for(int i=0; i<arr.length-1; i+=1) {
		if(arr[i]==arr[i+1]) {
			count+=1;
		}else{
			if(count==2) {
			res=true;
			}
		count=1;
		}
	}
	if(count==2) {
		res=true;
	}
	if(res==true) {
		System.out.print("있음");
	}else {
		System.out.print("없음");
	}
 }
}