지난주 5월 24일 ~ 27일 휴강이었다.
과제 1) 누적의 합을 구하시오.
1+....+10 =55
1+....+20 =210
1+....+30 =
1+....+90 =
1+....+100 = 5050
*이중 반복문 이용하기
*힌트 회전수 증가
// 문제 1) 누적의 합을 구하시오.
/*
* 1+....+10 =55 1+....+20 =210 1+....+30 = 1+....+90 = 1+....+100 = 5050
*
* 이중 반복문 이용하기 힌트 회전수 증가
*/
int sum = 0;
for (int a = 1; a <= 10; a++) {
for (int b = 1; b <= a * 10; b++) {
sum = sum + b;
}
// System.out.println(sum);
}
System.out.println("문제 1의 답은: " + sum);
// ------------------------------------------------------------------------------------
과제 2)
1~1000까지의 합 중 그 합이 10000이 넘을 때 결과를 출력 후 실행 종료.
출력결과) 1+2+3+4...... 합이 10000이 넘는 언젠가 종료.
// 문제 2)
// 1~1000까지의 합 중 그 합이 10000이 넘을 때 결과를 출력 후 실행 종료.
// 출력결과) 1+2+3+4...... 합이 10000이 넘는 언젠가 종료.
int tSum = 0;
int count1 = 0;
for (int a = 1; a <= 1000; a++) {
for (int b = a; b <= a; b++) {
if (tSum < 10000) {
tSum = tSum + b;
count1 = count1 + 1;
break;
} // if문 end
} // for문 end
} // for문 end
System.out.println("문제 2의 답은: " + tSum);
// ------------------------------------------------------------------------------------
과제 3)
3의 배수의 누적 합이 100이 넘어가려면 3부터 어디까지 더해야 하는 지 구하시오
출력결과) 3+6+9+12+...=
// 문제 3)
//3의 배수의 누적 합이 100이 넘어가려면 3부터 어디까지 더해야 하는 지 구하시오
//출력결과) 3+6+9+12+...=
int sum3 = 0;
int count3 = 0;
int c = 3;
int a = 1;
System.out.print("문제 3의 답은: ");
while (sum3 < 100) {
sum3 = sum3 + (a * c);
System.out.print("+" + a * c);
a++;
count3 = count3 + 1;
// System.out.println(count3);
// System.out.println(sum3);
// System.out.println(count3);
}//while end
System.out.print("=" + sum3);
System.out.println(", " + c + "의 " + count3 + "배수까지 더 한다.");
// ------------------------------------------------------------------------------------
//-------------------------------------------------------------------------------------------------------------------
과제 4)
로또번호 1~45 사이 중에서 서로 겹치치 않게 6개 발생
int[] lotto = new int[6];
// 문제 4)
// 로또 추첨기 1-45 / 배열로 받아와서 겹치면 다시
int lotto[] = new int[6];
for (int l = 0; l < lotto.length; l++) {
lotto[l] = (int)((Math.random()*45))+1;
for(int m=0; m<l; m++) {
if(lotto[l] == lotto[m]) {
l--;
break;
}//if end
}//for end
}//for end
for(int l=0; l<lotto.length; l++) {
System.out.print(lotto[l]+ " ");
}
System.out.println("입니다.");
// ------------------------------------------------------------------------------------
//-------------------------------------------------------------------------------------------------------------------
과제 5)
su행렬의 대각선 방향의 각 요소의 합을 구하시오
//대각선 ↘ 방향의 합 (4+9+7)
//대각선 ↙ 방향의 합 (2+9+6)
int [][] su = {
{4,3,2},
{5,9,1},
{6,8,7}
};
위의 su배열에서 행과 열을 바꿔서 출력하시오. <- 스왑변수
전치행렬
4 5 6
3 9 8
2 1 7
// 문제 5)
//su행렬의 대각선 방향의 각 요소의 합을 구하시오
int[][] su = {
{ 4, 3, 2 }, // 0 2 0 4 00 01 02
{ 5, 9, 1 }, // 1 1 2 2 10 11 12
{ 6, 8, 7 } // 2 0 0 4 20 21 22
};
// 5-1 대각선 ↘ 방향의 합 (4+9+7)
int suRow = su.length;
int sHap = 0;
int sHap2 = 0;
for (int i = 0; i < suRow; i++) {
int suCol = su[i].length;
for (int b = 0; b < suCol; b++) {
if (i == b) {
sHap = sHap + (su[i][b]);
// System.out.println(su[i][b]);
}
}
}
System.out.println("대각선 ↘ 방향의 합은: " + sHap);
// 5-2 대각선 ↙ 방향의 합 (2+9+6)
for (int i = 0; i < suRow; i++) {
int suCol = su[i].length;
for (int b = suCol - 1; b >= 0; b--) {
if ((i + b) == suCol - 1) {
sHap2 = sHap2 + (su[i][b]);
}
}
}
System.out.println("대각선 ↙ 방향의 합은: " + sHap2);
// 5-3 위의 su배열에서 행과 열을 바꿔서 출력하시오. <- 스왑변수
//전치행렬
//4 5 6
//3 9 8
//2 1 7
// 4 3 2 00 01 02
// 5 9 1 10 11 12
// 6 8 7 20 21 22
// 4 5 6 00 10 20
// 3 9 8 01 11 21
// 2 1 7 02 12 22
int[][] swapArr = new int[3][3];
for (int i = 0; i < suRow; i++) {
int suCol = su[i].length;
for (int b = 0; b < suCol; b++) {
swapArr[i][b] = su[b][i];
System.out.print(swapArr[i][b]+" ");
}
}
System.out.println();
// ------------------------------------------------------------------------------------
//-------------------------------------------------------------------------------------------------------------------
과제 6)
행렬 각각의 합, 차를 구하시오
int[][] aa={
{4,3},
{5,9}
};
int[][] bb={
{4,3},
{5,9}
};
int[][] cc ={{0,0}, {0,0}}; //합
// 5 5
// 11 16
int[][] dd ={{0,0}, {0,0}}; //차
// 3 1
// -1 2
// 문제 6)
// 행렬 각각의 합, 차를 구하시오
int[][] aa={
{4,3},
{5,9} };
int[][] bb={
{1,2},
{6,7} };
int[][] resultMin = new int[2][2];
int[][] resultPl = new int[2][2];
for(int k=0; k<aa.length; k++) {
for(int h=0; h<aa.length; h++) {
resultPl[k][h] = aa[k][h]+ bb[k][h];
System.out.println("두 배열의 합은 "+ resultPl[k][h]);
}
}
for(int k=0; k<aa.length; k++) {
for(int h=0; h<aa.length; h++) {
resultMin[k][h] = aa[k][h] - bb[k][h];
System.out.println("두 배열의 차는 "+ resultMin[k][h]);
}
}
// int[][] cc ={{0,0}, {0,0}}; //합
// // 5 5
// // 11 16
//
// int[][] dd ={{0,0}, {0,0}}; //차
// // 3 1
// // -1 2
// ------------------------------------------------------------------------------------
//-------------------------------------------------------------------------------------------------------------------
과제 7)
10진수값을 2진수값으로 변환 후 // 출력하시오.
int binary =13; //1101 for문으로 2를 계속 나누어서 몫이 있으면 1, 없으면 0 그리고 나머지
// 문제 7) 10진수값을 2진수값으로 변환 후 // 출력하시오.
int binary =13;
int [][] numBinary = {
{0000,0001,0010,0011},
{0100,0101,0110,0111},
{1000,1001,1010,1011},
{1100,1101,1110,1111}
};
for(int z=0; z<numBinary.length; z++) {
for(int x=0; z<numBinary[z].length; x++) {
if(z==3 && x==0) {
System.out.println(numBinary[z][x]);
}
}
}
선생님 풀이
// 문제 1) 누적의 합을 구하시오.
/*
* 1+....+10 =55 1+....+20 =210 1+....+30 = 1+....+90 = 1+....+100 = 5050
*
* 이중 반복문 이용하기 힌트 회전수 증가
*/
int sum = 0;
for (int a = 10; a <= 100; a=a+10) {
sum = 0; //초기화시키는 값 *프로그래밍할 때 초기화는 중요
for (int b = 1; b <= a; b++) {
sum = sum + b;
//sum이 55에서 ->0으로 값을 되돌리고 다시 더해야 함.
//초기화가 안되어있어서 다 합했을때 값이 안맞음.
}
// System.out.println(sum);
}
System.out.println("문제 1의 답은: " + sum);
//결과값
//5050
sfsdfsdfsdfsd
// 문제 2)
// 1~1000까지의 합 중 그 합이 10000이 넘을 때 결과를 출력 후 실행 종료.
// 출력결과) 1+2+3+4...... 합이 10000이 넘는 언젠가 종료.
int k = 1;
int hap = 0;
while(k<=1000){
hap = hap+k; //반복할 연산
if(hap>10000){ //끝내는 조건
System.out.println("문제 2의 답은: " + hap);
break;
}
k++; //다음수로 1씩 증가
}//while문 end
//결과값
//10011
ㄴㅇㄹㄴㅇㄹㅇㄴㄹㄴㅇㄹ
// 문제 3)
//3의 배수의 누적 합이 100이 넘어가려면 3부터 어디까지 더해야 하는 지 구하시오
//출력결과) 3+6+9+12+...=
int thsum = 0;
int num = 0;
String result ="";
while(true){
num = num + 3;
thsum = thsum + num;
result = result + num + "+";
if(thsum>100){
break;
}
}//while end
System.out.println(result + "...="+thsum);
//결과값
//3+6+9+12+15+18+21+24+...=108
//24까지
ㄴㅇㄹㄴㅇㄹㄴㅇㄹㄴㅇㄹ
// 문제 4)
// 로또 추첨기 1-45 / 배열로 받아와서 겹치면 다시
int lotto[] = new int[6];
int size = lotto.length;
for(int i=0; i<size; i++){
lotto[i]=(int)((Math.random()*45)+1);
for(int j=0; j<i; j++){
if(lotto[i]==lotto[j]){
i--;
break;
}//if end
}//for end
}//for end
Arrays.sort(lotto); //ascending sort
for(int i=0; i<size; i++){
System.out.print(lotto[i]+" ");
}
ㄴㅇㄹㄴㅇㄹㅇㄴㄹ
// 문제 5)
//su행렬의 대각선 방향의 각 요소의 합을 구하시오
int[][] su = {
{ 4, 3, 2 }, // 0 2 0 4 00 01 02
{ 5, 9, 1 }, // 1 1 2 2 10 11 12
{ 6, 8, 7 } // 2 0 0 4 20 21 22
};
// 5-1 대각선 ↘ 방향의 합 (4+9+7)
//su[0][0]+su[1][1]+su[2][2]
// 5-2 대각선 ↙ 방향의 합 (2+9+6)
//su[0][2] +su[1][1]+su[2][0]
int sHap1 = 0;
int sHap2 = 0;
for(int a=0; a<=2; a++){
sHap1 = sHap1+su[a][a];
sHap2 = sHap2+su[a][2-a];
}
System.out.println("대각선 ↘ 방향의 합은: " + sHap1);
System.out.println("대각선 ↙ 방향의 합은: " + sHap2);
//결과값
//20, 17
// 5-3 위의 su배열에서 행과 열을 바꿔서 출력하시오
//전치행렬
/*
4 5 6
3 9 8
2 1 7
*/
int row=su.length;
for(int a=0; a<row; a++) {
int col=su[a].length;
for(int b=0; b<col; b++) {
System.out.print(su[b][a] + " ");
}
System.out.println();
}//for end
ㄴㅇㄹㄴㄹㄴㅇㄹㄴㅇㄹ
//문제 6)
//행렬 각각의 합, 차를 구하시오
int[][] aa={ {4,3},
{5,9} };
int[][] bb={ {1,2},
{6,7} };
int[][] cc={ {0,0}, {0,0} }; //합
// 5 5
// 11 16
int[][] dd={ {0,0}, {0,0} }; //차
// 3 1
// -1 2
for(int i=0; i<2; i++) {
for(int j=0; j<2; j++) {
cc[i][j] = aa[i][j] + bb[i][j]; //합
dd[i][j] = aa[i][j] - bb[i][j]; //차
}
}//for end
for(int i=0; i<2; i++) {
for(int j=0; j<2; j++) {
System.out.print(cc[i][j] + " ");
}
System.out.println();
}//for end
for(int i=0; i<2; i++) {
for(int j=0; j<2; j++) {
System.out.print(dd[i][j] + " ");
}
System.out.println();
}//for end
//int[][] cc ={{0,0}, {0,0}}; //합
//5 5
//11 16
//
//int[][] dd ={{0,0}, {0,0}}; //차
//3 1
//-1 2
ssssss
// 문제 7) 10진수값을 2진수값으로 변환 후 // 출력하시오.
int num = 5;
int[] binary = new int[8];
int count = 0;
//1101 for문으로 2를 계속 나누어서 몫이 있으면 1, 없으면 0 그리고 나머지
while(true){ //무한 loop
binary[count] = num%2;
count++;
num = num/2;
if(num==1){
binary[count]=num;
break;
}
}//while end
for(int i=count; i>=0; i--){
System.out.print(binary[i]);
}
System.out.println();
//Integer 클래스를 활용한 수의 변환
System.out.println(Integer.toBinaryString(15));
System.out.println(Integer.toOctalString(15));
System.out.println(Integer.toHexString(15));
댓글