피드로 돌아가기
새로워지기·서른의 생활코딩

6일차) 4장 연습문제 20180606_am 1차시도

NS
normalstory
표지 이미지


[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

// }

java_jungsuk3_연습문제_20160227.pdf
다운로드


// [4-9] 숫자로 이루어진 문자열 str이 있을 때, 각 자리의 합을 더한 결과를 출력하는 코

// 드를 완성하라. 만일 문자열이 "12345"라면, ‘1+2+3+4+5’의 결과인 15를 출력이 출력되

// 어야 한다. (1)에 알맞은 코드를 넣으시오.

// [Hint] String클래스의 charAt(int i)을 사용


}

}







pdfjava_jungsuk3_연습문제_20160227.pdf
친절한 찰쓰씨
글쓴이
친절한 찰쓰씨
친절한 찰쓰씨 · 일상 UX 디자이너
기획·디자인·단상을 조용히 기록합니다.
작가 페이지에서 더 보기

이어서 읽기

새로워지기

꾸준히, 오래, 지치지 않고

Mar 31, 2026·8
새로워지기

테크 라이프 발란스

Feb 7, 2026·3
새로워지기

휴탈리티 박정렬

Feb 7, 2026·11