[4-2] 1부터 20까지의 정수 중에서 2 또는 3의 배수가 아닌 수의 총합을 구하시오.
// [시도 01] 반복문을 배우기 전
// 1 <= x < 21
// x%2 != 0
// x%3 != 0
int sum =0;
int x = 1 ;
if(1 <= x && x < 21){
x ++;
if(x%2 != 0 || x%3 != 0){
sum = sum + x;
}
}
System.out.println("2번 답 : " + sum);
// 아.. 역시.. 반복이 아니니까 한 바퀴만 도네..
// 증감식 i++이 의미가 없는 거지
// 다시 올라가서 반복해야하니까..
// [시도 02] 반복문을 배운 후
int sum1 = 0; //합을 구하기 위한 변수 선언 및 초기화
//for(){} //반복하는 어떤 수들에 대한 연산을 하기.
//그런데 모르는 수에 대한 연산은 아니니까..
for(int i=1;i<21;i++){ //필터 1 (1 <= i < 21) <-- 1부터 20까지의 정수
//sum = sum + i; //일단 총합
//필터 2 (i%2==0 || i%3==0) <-- 2의 배수 또는 3의 배수 조건
if(i%2!=0 || i%3!=0){
sum1 = sum1 + i; //궁극의 총합
}
}
System.out.println(sum1);
[4-3] 1+(1+2)+(1+2+3)+(1+2+3+4)+...+(1+2+3+...+10)의 결과를 계산하시오.
// [시도 01] 반복문을 배우기 전
// x 1
// x + (x + x+1) 1+(1+2)
// x + (x + x+1) + (x + (x + x+1)) 1+(1+2)+(1+2+3)
// [시도 02] 반복문을 배운 후
//공통 수식이 안나오네... 직접 해보자...
//1 //sum
//(1+2) //sum=sum+i++
//(1+2+3) //sum=sum+i++
//(1+2+3+4) // ...
int sum = 1;
for(int i =2 ; i<11 ; i++){
sum=sum+i;
}
System.out.println(sum);
// 값이 55? 이상하네... 수기로 다시 확인해보자...
System.out.println( 1+
(1+2)+
(1+2+3)+
(1+2+3+4)+
(1+2+3+4+5)+
(1+2+3+4+5+6)+
(1+2+3+4+5+6+7)+
(1+2+3+4+5+6+7+8)+
(1+2+3+4+5+6+7+8+9)+
(1+2+3+4+5+6+7+8+9+10));
// 헉...역시.... 값이 다르다 220?? !!!
// 다시...
1 // sum
(1+2)
1+(1+2) // sum + (sum + i)
1+(1+2) +(1+2+3) // sum + (sum + i)
1 // 1
(1+2)
1+(1+2) // 1+ (1+ 2)
1+(1+2) +(1+2+3) // 1+ (1+ 2) + 1+ (1+ 2) +3
// 수식이 틀렸네.....
(1)+ //0 //sum+1
(1+2)+ //3 //sum+2
(1+2+3)+ //6 //sum+3
(1+2+3+4)+ //10 //sum+4
(1+2+3+4+5)+ //15 //sum+5
...
= (sum_0) + (sum+2) + (sum+3) + (sum+4).... +(sum+10)
= (sum +j(1)++) + (sum+j++) + (sum+j++) + (sum+j++).... +(sum+j(10))
// 첫 합을 구하는 반복문이랑
// 이전 합을 반복해서 더하는 용도의 반복문을 두개로 만들어볼까?
int sum = 1;
for(int i =2 ; i<11 ; i++){
sum=sum+i;
for(int j =2 ; j<11 ; j++){
sum=sum+j;
}
}
System.out.println(sum);
// 값이 64? 이상하네... 수기로 다시 확인해보자...
// break point로 확인해본 결과... // 다른 질문... 이 생김
// 이전 합s + 새로운 합... 이 포인트인데.. 지금 내가 사용하고 있는 식은
// 새로운 합일 뿐... 왜냐면 합을 담는 그릇이 한개니까
// 이전에 저장된 값을 활용하는 것이 불가능...
// 합을 담는 그릇을 하나 더 만들어보자
// [시도 03]
int sumA = 0;
int sumB = 0;
for(int i =1 ; i<11 ; i++){
sumA=sumA+i;
for(int j =1 ; j<11 ; j++){
sumB=sumA+j;
}
sumA + sumB; (+에러)
}
System.out.println(sumB);
[4-4] 1+(-2)+3+(-4)+... 과 같은 식으로 계속 더해나갔을 때,
몇까지 더해야 총합이 100이상이 되는지 구하시오.
// [시도 01]
int p=0;//홀수(양수) 값들의 합을 담을 변수
int m=0;//짝수(음수) 값들의 합을 담을 변수
int sum4 =0;
//언제까지 더해야할지 모르니까 while
int i = 0; //반복문용 변수
while(true){
if(sum4<100){ // 언제 끝내지?
if(i%2!=0){
p=p+i;
i++; //증감식
}else{
m=m+i;
i++; //증감식
}
sum4 = p-m; //합계
}else{
break;
}
}
System.out.println(p);
System.out.println(m);
System.out.println(sum4);
// 값들이 많이 이상하다....
// [시도 02]
int sum4 =0;// 합계
//언제까지 더해야할지 모르니까 while
int i = 1; //반복문용 변수
while(true){
sum4=(i%2==0)? sum4-i : sum4+i;
i++;
if(sum4>=100){
break;
}
}
System.out.println(i);
[4-5] 다음의 for문을 while문으로 변경하시오.
// public class Exercise4_5 {
// public static void main(String[] args) {
for(int i5=0; i5<=10; i5++) {
for(int j=0; j<=i5; j++){
System.out.print("*");
}
System.out.println();
}
//시도1)
int i5=0;
while(i5<=10){
for(int j=0;j<=i5 ;j++){
System.out.print("*");
}
System.out.println();
i5++;
}
// } // end of main
// } // end of class
-----------------------------------------------------------------------------------------------------------------
package z_exam;
public class exam04 {
public static void main(String[] args) {
// [4-1] 다음의 문장들을 조건식으로 표현하라.
// 1. int형 변수 x가 10보다 크고 20보다 작을 때 true인 조건식
// 10 <= x && x <20
// 2. char형 변수 ch가 공백이나 탭이 아닐 때 true인 조건식
// " " != ch && tab != ch
// 3. char형 변수 ch가 ‘x' 또는 ’X'일 때 true인 조건식
// ch == ‘x' || ch == ’X'
// 4. char형 변수 ch가 숫자(‘0’~‘9’)일 때 true인 조건식
// ‘0’ <= ch && ch < ‘10’
// 5. char형 변수 ch가 영문자(대문자 또는 소문자)일 때 true인 조건식
// "A" <= ch && ch <= "Z" || "a" <= ch && ch <= "z"
// 6. int형 변수 year가 400으로 나눠떨어지거나 또는 4로 나눠떨어지고 100으로 나눠떨어지지
// 않을 때 true인 조건식
// (year%400 == 0 || year%4 == 0) && year%100 != 0
// 7. boolean형 변수 powerOn가 false일 때 true인 조건식
// powerOn == false
// 8. 문자열 참조변수 str이 “yes”일 때 true인 조건식
// str == "yes"
// [4-2] 1부터 20까지의 정수 중에서 2 또는 3의 배수가 아닌 수의 총합을 구하시오.
// [시도 01] 반복문을 배우기 전
// 1 <= x < 21
// x%2 != 0
// x%3 != 0
// int x = 1 ;
// if(1 <= x && x < 21){
// x ++;
// }else if(x%2 != 0 || x%3 != 0 ){
// x += 1;
// x ++;
// }
// System.out.println("2번 답 : " + x);
// [시도 02] 반복문을 배운 후
int sum1 = 0; //합을 구하기 위한 변수 선언 및 초기화
//for(){} //반복하는 어떤 수들에 대한 연산을 하기.
//그런데 모르는 수에 대한 연산은 아니니까..
for(int i=1;i<21;i++){ //필터 1 (1 <= i < 21) <-- 1부터 20까지의 정수
//sum = sum + i; //일단 총합
//필터 2 (i%2==0 || i%3==0) <-- 2의 배수 또는 3의 배수 조건
if(i%2!=0 || i%3!=0){
sum1 = sum1 + i; //궁극의 총합
}
}
System.out.println(sum1);
//^ [4-3] 1+(1+2)+(1+2+3)+(1+2+3+4)+...+(1+2+3+...+10)의 결과를 계산하시오.
// [시도 01] 반복문을 배우기 전
// x 1
// x + (x + x+1) 1+(1+2)
// x + (x + x+1) + (x + (x + x+1)) 1+(1+2)+(1+2+3)
// [시도 02] 반복문을 배우기 후
int sum = 1;
//공통 수식이 안나오네...
//1 //sum
//(1+2) //sum=sum+i++
//(1+2+3) //sum=sum+i++
//(1+2+3+4) // ...
for(int i =2 ; i<11 ; i++){
sum=sum+sum+i;
}
System.out.println(sum);
// [4-4] 1+(-2)+3+(-4)+... 과 같은 식으로 계속 더해나갔을 때,
// 몇까지 더해야 총합이 100이상이 되는지 구하시오.
int sum4 =0;// 합계
//언제까지 더해야할지 모르니까
int i = 1; //반복문용 변수
while(true){
sum4=(i%2==0)? sum4-i : sum4+i;
i++;
if(sum4>=100){
break;
}
}
System.out.println(i);
//^ [4-5] 다음의 for문을 while문으로 변경하시오.
// [연습문제]/ch4/Exercise4_5.java
// public class Exercise4_5 {
// public static void main(String[] args) {
for(int i5=0; i5<=10; i5++) {
for(int j=0; j<=i5; j++){
System.out.print("*");
}
System.out.println();
}
//시도1)
int i5=0;
while(i5<=10){
for(int j=0;j<=i5 ;j++)
System.out.print("*");
System.out.println();
i5++;
}
// } // end of main
// } // end of class
// [4-6] 두 개의 주사위를 던졌을 때, 눈의 합이 6이 되는 모든 경우의 수를 출력하는 프
// 로그램을 작성하시오.
// [4-8] 방정식 2x+4y=10의 모든 해를 구하시오.
// 단, x와 y는 정수이고 각각의 범위는 0<=x<=10, 0<=y<=10 이다.
// 2y=5-x //x=5-2y
// 0<=x && x<=10 //0~11 - 11종, 시작은 0
// 0<=y && y<=10 //0~11 - 11종, 시작은 0
// int x8 = (int)(Math.random()*11+0);
// int y8 = (int)(Math.random()*11+0);
// if(0<=x8 && x8<=10 || 0<=y8 && y8<=10){
// 2*x8 + 4*y8 = 10
// }
// [4-9] 숫자로 이루어진 문자열 str이 있을 때, 각 자리의 합을 더한 결과를 출력하는 코
// 드를 완성하라. 만일 문자열이 "12345"라면, ‘1+2+3+4+5’의 결과인 15를 출력이 출력되
// 어야 한다. (1)에 알맞은 코드를 넣으시오.
// [Hint] String클래스의 charAt(int i)을 사용
}
}
