휴먼교육센터 개발자과정 23일차

조하영·2022년 9월 2일
0

package Tr;

public class Day06_01 {

public static void main(String[] args) {
	// 개발자는 코딩을 잘하는 사람이 아닌 문제를 해결하는 사람이다.
	for (int i = 0; i <= 10; i++) {
		System.out.println(i);
	}
	System.out.println("-----------------");

	for (int i = 0; i < 4; i++) {
		System.out.print(i + " : ");
		for (int j = i; j <= 4; j++) {
			System.out.print(j);
		}
		System.out.println();
	}
	System.out.println("-----------------");

	// 문제1.
//		0 : 1234
//		1 : 123
//		2 : 12
//		3 : 1
	for (int i = 0; i < 4; i++) {
		System.out.print(i + " : ");
		for (int j = 1; j <= 4 - i; j++) {
			System.out.print(j);
		}
		System.out.println();
	}
	System.out.println("-----------------");

	// 랜덤함수
	int a = (int) (Math.random() * 45); // (0~44까지) 랜덤으로 나오는 수는 뒤애 곱하는 수보다 작
	System.out.println(a);
	System.out.println("-----------------");

	// 로또번호 7자리 숫자 뽑는 프로그램을 만들고 로또번호를 출력.
	int[] rotto = new int[7];
	for (int i = 0; i < rotto.length; i++) {
		rotto[i] = (int) (Math.random() * 45 + 1);// 1~45까지
	}
	for (int i = 0; i < rotto.length; i++) {
		System.out.print(rotto[i] + " ");
	}
	System.out.println();
	System.out.println("-----------------");

	// 위 로또게임을 3번 반복하시오.
	for (int k = 0; k < 3; k++) {
		int[] rotto1 = new int[7];
		for (int i = 0; i < rotto1.length; i++) {
			rotto1[i] = (int) (Math.random() * 45 + 1);// 1~45까지
		}
		for (int i = 0; i < rotto1.length; i++) {
			System.out.print(rotto1[i] + "\t");
		}
		System.out.println();
	}
	System.out.println("-----------------");

	int[] a1 = { 10, 23, 23, 25, 10, 4 };

	// 문제1. 위 배열의 값을 모두 더하시오.
	int sum1 = 0;
	for (int i = 0; i < a1.length; i++) {
		sum1 += a1[i];
	}
	System.out.println(sum1);
	System.out.println("-----------------");
	
	// 문제 2. 배열의 값중 10이 몇개인가?
	int cnt = 0;
	for (int i = 0; i < a1.length; i++) {
		if (a1[i] == 10) {
			cnt++;
		}
	}
	System.out.println(cnt);
	System.out.println("-----------------");
}

}

오후실습

package Test;

public class Day06_01 {

public static void main(String[] args) {
	// TODO Auto-generated method stub

// 1. 다음과 같이 출력하세요

//		0000*
//		000**
//		00***
//		0****
	System.out.println("--------1--------");
	for (int i = 1; i <= 4; i++) {
		for (int j = 1; j <= 5 - i; j++) {
			System.out.print("0");
		}
		for (int j = 1; j <= i; j++) {
			System.out.print("*");
		}
		System.out.println();
	}

//
// 2. 다음과 같이 출력하세요

//		*
//		**
//		***
//		****
	
    System.out.println("--------2--------");
	for (int i = 1; i <= 4; i++) {
		for (int j = 1; j <= i; j++) {
			System.out.print("*");
		}
		System.out.println();
	}

//
// 3. 홀수의 합을 구하시오

    System.out.println("--------3--------");
	int[] a = { 10, 23, 23, 25, 10, 4 };

	int sum = 0;
	for (int i = 0; i < a.length; i++) {
		if (a[i] % 2 == 1) {
			sum += a[i];
		}
	}
	System.out.println(sum);

//
// 4. 짝수는 모두 몇개인가?

    System.out.println("--------4--------");
	int cnt = 0;
	for (int i = 0; i < a.length; i++) {
		if (a[i] % 2 == 0) {
			cnt++;
		}
	}
	System.out.println(cnt);

// 5. 랜덤숫자 1-15까지 뽑아서 짝수인 숫자만 저장하세요

    System.out.println("--------5--------");
	int[] b = new int[5];
	for (int i = 0; i < b.length; i++) {
		int even = (int) (Math.random() * 15 + 1);// 1~15까지
		if (even % 2 == 0) {

			b[i] = even;

		} else {
			i--;
		}
	}
	for (int i = 0; i < b.length; i++) {
		System.out.print(b[i] + " ");
	}
	System.out.println();

//
//
// 6.로또번호를 저장하세요. 중복가능
// 출력형태는 23/44/21/25/23/1+78

    System.out.println("--------6--------");
	int[] rotto = new int[7];
	for (int i = 0; i < rotto.length; i++) {
		rotto[i] = (int) (Math.random() * 45 + 1);// 1~45까지
	}
	for (int i = 0; i < rotto.length; i++) {
		if (i < rotto.length - 2) {
			System.out.print(rotto[i] + "/");

		} else if (i == rotto.length - 2) {
			System.out.print(rotto[i] + "+");

		} else {
			System.out.print(rotto[i]);

		}
	}
	System.out.println();

//
// 7.로또 번호를 저장하세요. 중복 불가능
// 출력행태는 23/44/21/25/23/1+78

	System.out.println("--------7--------");
	int[] rotto1 = new int[7];
	for (int i = 0; i < rotto1.length; i++) {
		rotto1[i] = (int) (Math.random() * 45 + 1);// 1~45까지
		for (int j = 0; j < i; j++) {
			if (rotto1[j] == rotto1[i]) {
				i--;
			}
		}
	}
	for (int i = 0; i < rotto1.length; i++) {
		if (i < rotto1.length - 2) {
			System.out.print(rotto1[i] + "/");

		} else if (i == rotto.length - 2) {
			System.out.print(rotto1[i] + "+");

		} else {
			System.out.print(rotto1[i]);

		}
	}
	System.out.println();

//
// 8. 1번부터 45번 숫자를 랜덤으로 1000번 뽑는다.
// 가장 많이 나온 숫자 7개를 출력한다.
// <가장 많이 나온숫자가 여러번일경우는 작은 숫자가 우선한다>

    System.out.println("--------8--------");
	int[] c = new int[46];
	for (int i = 0; i < 1000; i++) {

		c[(int) (Math.random() * 45 + 1)] += 1;

	}
//		for (int i = 1; i < c.length; i++) { //확인용 출력 
//			System.out.println(i + ": " + c[i]);
//		}
	for (int j = 0; j < 7; j++) {
		int maxIndex = 0;
		for (int i = 1; i < c.length; i++) {
			if (c[i] > c[maxIndex]) {
				maxIndex = i;
			}
		}
		System.out.println("로또번호: " + maxIndex + ", 횟수: " + c[maxIndex]);
		c[maxIndex] = -1;
	}

//
// 9.무작위로 비밀번호 4자리를 만드려고 한다.
// passInt 배열에서 랜던한 값 4개를 뽑아서 mypass를 완성한다.

    System.out.println("--------9--------");
	int[] passInt = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
	String mypass = "";
	for (int i = 1; i <= 4; i++) {
		mypass += passInt[(int) (Math.random() * passInt.length)]; // int가 String으로 자동 형변환됨
	}
	System.out.println(mypass);

//

//
//
// [10번, 11번]__

	System.out.println("--------10--------");
    int[] a1 = { 10, 20, 0, 30, 45, 0, 0, 60, 0, 0, 0, 56 };

// 위 배열은 토지 위에 건물을 나타낸 것이다. 숫자는 층(높이)이다
// 값이 0 인 경우는 빈자리이며 건물을 지을 수 있다
// 인덱스는 0부터 시작된다. 위 배열의 값은 바뀔 수 있다.
//
// 10. [배열] 빈자리는 모두 몇 개인가?

	int cnt1 = 0;
	for (int i = 0; i < a1.length; i++) {
		if (a1[i] == 0) {
			cnt1++;
		}
	}
	System.out.println(cnt1);

// 11. 배열의 값 중 0이 하나 있으면 사이즈1, 0이 연속 2개 있으면 사이즈 2이다.
// 사이즈2짜리 건물을 세우려고 한다. 사이즈는 연속된 빈자리의 최대 범위이다.(사이즈가 2 이상은 건물 지을 수 있)
// 건물을 세울 수 있는 공간은 몇 개인가?
// 사이즈는 배열의 크기를 벗어 나지 않은 범위에서 어떤 숫자를 넣어도
// 건물을 세울 수 있는 공간이 나와야 한다.

	System.out.println("--------11--------");
	int bSize =2;
	int bPoint=0;
	for(int i=0;i<a1.length;i++) {
		int cnt2=0;//연속적인 0의 갯수를 카운트 
		if(a1[i]==0) {
			cnt2++;//0을 만나면 바로 하나 증가 
			for(int j=i+1; j< a1.length; j++) {
				if(a1[j]==0) {
					cnt2++;//0뒤에 0이 연속으로 나올때마다 하나씩 더 카운트 
				}else {
					break;
				}
			}
			System.out.println(cnt2);
			if(cnt2>=bSize) {

				//건물 사이즈와 0의 연속 갯수에 따라 건물 지을 수 있는 곳 판별 
				//bPoint=bPoint+(cnt2/bSize);

				//0의 연속 갯수와는 상관없이 건물 사이즈를 지을 수 있는 곳만 찾음.
				bPoint++;
			}
			i=i+cnt2-1;
		}
	}
	System.out.println("건물을 지을 수 있는 곳은 "+bPoint+"곳 입니다");

//
//
// 12.for문을 사용하여 배열의 값을 한칸씩 뒤로 이동시키시오 맨 끝자리를 처음 자리로 이동

	System.out.println("--------12--------");
	int[] a3 = { 10, 23, 23, 25, 10, 4 };
	int tamp = 0;
	for (int i = a3.length - 1; i >= 0; i--) {
		if (i == a3.length - 1) {
			tamp = a3[i];
		} else {
			a3[i + 1] = a3[i];
		}
	}
	a3[a3.length - a3.length] = tamp;
	for (int i = 0; i < a3.length; i++) {
		System.out.println(a3[i]);
	}
}

}

profile
공부하는 개발자

0개의 댓글