본문 바로가기
  • think normal
새로워지기/서른의 생활코딩

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

by 청춘만화 2018. 6. 7.

package z_exam;


public class exam04 {

public static void main(String[] args) {


//o //[4-1] 다음의 문장들을 조건식으로 표현하라.

// 1. int형 변수 x가 10보다 크고 20보다 작을 때 true인 조건식

// 10 <= x && x <20 

// 2. char형 변수 ch가 공백이나 탭이 아닐 때 true인 조건식

// " " != ch && '\t' != 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인 조건식

// boolean powerOn = false; //이미 선언했네!!!

// (!powerOn)

//boolean의 디폴트는 null

//1이 참 0이 거짓

// 8. 문자열 참조변수 str이 “yes”일 때 true인 조건식

// String str = "yes";

// equals

// str==equals("yes");

// "yes"==equals();

 



//o //[4-2] 1부터 20까지의 정수 중에서 '2 또는 3의 배수'가 '아닌' 수의 총합을 구하시오.

// 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);



//********************* 풀이 방식 3종

//for 2개로 1가지, for 1개로 2가지

//! //[4-3] 1+(1+2)+(1+2+3)+(1+2+3+4)+...+(1+2+3+...+10)의 결과를 계산하시오.

// int sum = 0;

// int s=1;

// for(int i = 1; i<11; i++){

// sum = sum + i; 

// }

// System.out.println(sum); 


// int sum = 0;

// for(int i = 1; i<11 ; i++){

// for(int j=1; i+1; j++){     //i+1

// sum = sum + j;  //1+2

// }

// // sum = sum + i; //안쪽 for문 자체가 반복되는 거잖아~~~ 여기서 더하면 중복에 중복이지!

// }

// System.out.println(sum); 

// int sum = 0;

// for(int i = 1; i<11 ; i++){

// for(int j=1; j<=i; j++){    //i+1

// sum = sum + j;  //1+2

// }

// // sum = sum + i; //안쪽 for문 자체가 반복되는 거잖아~~~ 여기서 더하면 중복에 중복이지!

// }

// System.out.println(sum);

//참고 문제// 참고 문제 

//수업 내용// 구구단에서 짝수단에 홀수 곱만 출력

// 안쪽부터 하는게 중요하구나!!!

// for(int dam=2 ; dam<10 ; dam++){

// if(dam%2==0){

// for(int gob=1 ; gob<10 ; gob++){

// if(gob%2!=0){

// System.out.println(dam +"*"+ gob  +"="+ dam*gob);

// }

// }

// System.out.println(""); //결과가 다름점 주의!!!

// }

// System.out.println(""); //결과가 다름점 주의!!!

// }


// 풀이 방식 2종

//o! //[4-4] 1+(-2)+3+(-4)+... 과 같은 식으로 계속 더해나갔을 때,몇까지 더해야   총합이 100이상이 되는지 구하시오.

// //언제까지 더해야할지 모르니까  while

// int sum4 =0;// 합계 

// int i = 1; //반복문용 변수

// while(true){

// sum4=(i%2==0)? sum4-i : sum4+i;

// if(sum4>=100){

// break;

// }

// i++;

// }

// System.out.println(i);


//0 //[4-5] 다음의 for문을 while문으로 변경하시오.


// for(int i=0; i<=10; i++) {

// for(int j=0; j<=i; j++){

// System.out.print("*");

// }

// System.out.println();

// }

// int i =0;

// while(i<=10){

// int j=0;  // 여기가 포인트 !!!!!!!!! while 밖으로 나오질 못하니까!!!

// while(j<=i){

// System.out.print("*");

// j++;

// }

// System.out.println();

// i++;

// }



//o //[4-6] 두 개의 주사위를 던졌을 때, 눈의 합이 6이 되는 모든 경우의 수를 출력하는 프 로그램을 작성하시오.

// int a=1;

// int b=1;

// while(a<6){

// b=6-a;

// System.out.println(a + "+" + b );

// a++;

// }

// int a=1;

// int b=1;

// for(int i= 1 ; i<7 ;i++){

// for(int j =1 ; j<7 ; j++){

// if(i+j==6){

// System.out.println(i +"+"+ j +"="+ i+j);

// }

// }

// }



//o //[4-7] Math.random()을 이용해서 1부터 6사이의 임의의 정수를 변수 value에 저장하는 코드를 완성하라. (1)에 알맞은 코드를 넣으시오.


// int value = (int)(Math.random()*6+1 ); //1<=i,7  //7-1   //+1

// System.out.println("value:"+value);



//! //[4-8] 방정식 2x+4y=10의 모든 해를 구하시오. 단, x와 y는 정수이고 각각의 범위는 0<=x<=10, 0<=y<=10 이다.

// [실행결과]

// x=1, y=2 x=3, y=1 x=5, y=0

// int x = 0;

//

// while(x<11){

// int y = 0;

// while(y<11){

// x=5-2*y;

// System.out.println("y="+ y +","+ "x=" + x);

// y++;

// }

// x++;

// }


// for(int x =0 ; x<11 ; x++){

// for(int y=0 ; y<11 ; y++){

// if(2*x + 4*y ==10){

// System.out.println("y="+ y +","+ "x=" + x);

// }

// }

// }

// //= while 로 

// int x = 0;

// while(x<11){

// int y = 0;

// while(y<11){

// if(2*x+4*y==10){

// System.out.println("y="+ y +","+ "x=" + x);

// }

// y++;

// }

// x++;

// }



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

//만일 문자열이 "12345"라면, ‘1+2+3+4+5’의 결과인 15를 출력이 출력되 어야 한다. (1)에 알맞은 코드를 넣으시오.

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

// [실행결과] 

// 15

// String str = "12345"; 

// int sum = 0;

// for(int i=0; i < str.length(); i++) {

// char ch = str.charAt(i);  

// //char     char

// sum=sum+ch-'0';  // '0'이 핵심 !!!

// //int     char   

// }

// System.out.println("sum="+sum);



//! //[4-10] int 타입의 변수 num 이 있을 때, 각 자리의 합을 더한 결과를 출력하는 코드를 완성하라. 

//만일 변수 num의 값이 12345라면, ‘1+2+3+4+5’의 결과인 15를 출력하라. (1) 에 알맞은 코드를 넣으시오.

//[주의] 문자열로 변환하지 말고 숫자로만 처리해야 한다.

//[실행결과]

//15

// int num = 12345; 

// int sum = 0;

//

// for(int i=0; i<6; i++){

// int n = num%10; // 맨뒷자리 밑장빼기

// num=num/10; // 10으로 나누기. int니까 자동으로 1 이하는 절삭된다

// sum=sum+n; // i<6 니까 5번 이런 행위를 반복해서 나온 값을 더한다 

// }

// System.out.println("sum="+sum);



//! //[4-11] 피보나치(Fibonnaci) 수열(數列)은 앞을 두 수를 더해서 다음 수를 만들어 나가 는 수열이다. 

//예를 들어 앞의 두 수가 1과 1이라면 그 다음 수는 2가 되고 

//num3 = num1+ num2

//그 다음 수는 1과 2를 더해서 3이 되어서 1,1,2,3,5,8,13,21,... 과 같은 식으로 진행된다. 

//num1 = num2   

//num2 = num3 

//****벽돌깨기 게임처럼 옆으로 이동

//1과 1부터 시작하는 피보나치수열의 10번째 "수"는 무엇인지 계산하는 프로그램을 완성하시오.

//for(int i=3 ; i<11 ; i++) //10일때 밖으로 나온다 

// Fibonnaci 수열의 시작의 첫 두 숫자를 1, 1로 한다. 

// [실행결과]

// 1,1,2,3,5,8,13,21,34,55


// int num1 = 1;

// int num2 = 1;

// int num3 = 0; //세번째값 

// System.out.print(num1+","+num2);

//

// for(int i=3 ; i<11 ; i++){

// num3 = num1+ num2;

// num1 = num2;

// num2 = num3;

// System.out.print(","+num3);

// }



//x //[4-12] 구구단의 일부분을 다음과 같이 출력하시오.


// [실행결과]

// 2*1=2 3*1=3 4*1=4

// 2*2=4 3*2=6 4*2=8

// 2*3=6 3*3=9 4*3=12

// 5*1=5 6*1=6 7*1=7

// 5*2=10 6*2=12 7*2=14

// 5*3=15 6*3=18 7*3=21

// 8*1=8 9*1=9 

// 8*2=16 9*2=18 

// 8*3=24 9*3=27

//1차

// for(int dan =2; dan<10 ; dan++){//밖에서 반복되는 수

// for(int gob =1; gob<4 ; gob++){//안에서 반복하는 수 부터 (1~3)

// System.out.println(dan +"x"+ gob +"="+ dan*gob);

// }

// }

//2차

// for(int gob=1 ; gob<4; gob++){

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

// for(int dan=8 ; dan<10; dan++){

// System.out.print(dan +"x"+ gob +"="+ dan*gob+"\t");

// }

// }

// // + int dan=5 ; dan<8;

// // + int dan=8 ; dan<10;

//3차

// int gob=1 ;

// while(gob<4){

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

// int dan=2;

// int aha=5;

//// if(dan*gob/dan == 3){

//// dan += 3;

//// aha += 3;

//// }

// while(dan<aha){

// System.out.print(dan +"x"+ gob +"="+ dan*gob+"\t");

// dan++;

// }

// gob++;

//

// if(4<=gob && gob<8 ){

// gob = 1;

// }

//

// }

// //4차

// for(int gob=1 ; gob<4; gob++){

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

// for(int dan=2 ; dan<5; dan++){

// System.out.print(dan +"x"+ gob +"="+ dan*gob+"\t");

// }

// }

// for(int gob=1 ; gob<4; gob++){

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

// for(int dan=5 ; dan<8; dan++){

// System.out.print(dan +"x"+ gob +"="+ dan*gob+"\t");

// }

// }

// for(int gob=1 ; gob<4; gob++){

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

// for(int dan=8 ; dan<10; dan++){

// System.out.print(dan +"x"+ gob +"="+ dan*gob+"\t");

// }

// }

//!X //[4-13] 다음은 주어진 문자열(value)이 숫자인지를 판별하는 프로그램이다. (1)에 알맞 은 코드를 넣어서 프로그램을 완성하시오.


// String value = "12o34"; 

// char ch = ' ';

// boolean isNumber = true;

//// // 반복문과 charAt(int i)를 이용해서 문자열의 문자를

//// // 하나씩 읽어서 검사한다.

// for(int i =0; i<5 ; i++){

// ch=value.charAt(i);

// if(!('0'<=ch && ch<='9')){

// isNumber = false;

// }

// }

// if(isNumber){

// System.out.println("숫자이다");

// }else{

// System.out.println("숫자가 아니다");

// }




//! //[4-14] 다음은 숫자맞추기 게임을 작성한 것이다. 1과 100사이의 값을 반복적으로 입력 해서 컴퓨터가 생각한 값을 맞추면 게임이 끝난다. 

//사용자가 값을 입력하면, 컴퓨터는 자 신이 생각한 값과 비교해서 결과를 알려준다. 사용자가 컴퓨터가 생각한 숫자를 맞추면 게임이 끝나고 몇 번 만에 숫자를 맞췄는지 알려준다. 

//(1)~(2)에 알맞은 코드를 넣어 프 로그램을 완성하시오.

// 1~100사이의 임의의 값을 얻어서 answer에 저장한다. 

// [실행결과]

// 1과 100사이의 값을 입력하세요 :50 더 큰 수를 입력하세요.

// 1과 100사이의 값을 입력하세요 :75 더 큰 수를 입력하세요.

// 1과 100사이의 값을 입력하세요 :87 더 작은 수를 입력하세요.

// 1과 100사이의 값을 입력하세요 :80 더 작은 수를 입력하세요.

// 1과 100사이의 값을 입력하세요 :77 더 작은 수를 입력하세요.

// 1과 100사이의 값을 입력하세요 :76 맞췄습니다.

// 시도횟수는 6번입니다.

// int answer = (int)(Math.random()*101)+1; //**컴퓨터가 생각한 랜덤 값(사용자와 비교되는 값)***시작점은 뒤에!!!

// System.out.println(answer);

// int input = 0; // 사용자입력을 저장할 공간 

// int count = 0; // 시도횟수를 세기위한 변수

//

// // 화면으로 부터 사용자입력을 받기 위해서 Scanner 클래스 사용 

// java.util.Scanner s = new java.util.Scanner(System.in);

// do {

// count++;

// System.out.print("1과 100사이의 값을 입력하세요 :");

// input = s.nextInt(); // 입력받은 값을 변수 input에 저장한다.

//

// if(input==answer){

// System.out.println(input+ "\n 맞췄습니다.");

// System.out.println("시도횟수는" +count+ "번입니다.");

// System.out.println(answer);

// break;

// }else if(input<answer){

// System.out.println(input+ "\n 더 큰 수를 입력하세요.");

// System.out.println(answer);

// }else{

// System.out.println(input+ "\n 더 작은 수를 입력하세요.");

// }

// } while(true); // 무한반복문




//x// [4-15] 다음은 회문수를 구하는 프로그램이다. 회문수(palindrome)란, 숫자를 거꾸로 읽어도 앞으로 읽는 것과 같은 수를 말한다. 

// 예를 들면 ‘12321’이나 ‘13531’같은 수를 말한 다. (1)에 알맞은 코드를 넣어서 프로그램을 완성하시오.

// [Hint] 나머지 연산자를 이용하시오.


// int tmp = number;

// int number = 12321;

// int result =0; // 변수 number를 거꾸로 변환해서 담을 변수 

// while(tmp !=0) {


// }

// if(number == result)

// elseSystem.out.println( number + "는 회문수 입니다.");

// System.out.println( number + "는 회문수가 아닙니다.");


//     int number = 12321;

//     int tmp = number;

//

//     int result = 0;

//

//     while (tmp != 0) {

//       result *= 10;

//       result = result + tmp % 10;

//       tmp = tmp / 10;

//     }

//

//     if (number == result) {

//       System.out.println(number + "는 회문수 입니다.");

//     } else {

//       System.out.println(number + "는 회문수가 아닙니다.");

//     }

//     

//     

//     String value = "12o34";

//     char ch;

//     boolean isNumber = true;

//

//     for (int i = 0; i < value.length(); i++) {

//       ch = value.charAt(i);

//       if (ch < 48 || ch > 57) {

//         isNumber = false;

//       }

//     }

//

//     if (isNumber) {

//       System.out.println(value + "는 숫자입니다.");

//     } else {

//       System.out.println(value + "는 숫자가 아닙니다.");

//     }    

    

}

}


댓글