ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 조건문과 반복문 연습문제
    Java/조건문 & 반복문 2020. 11. 3. 23:20

     

     

     

     

     

    자바의 정석 챕터 4의 연습문제를 풀어보고, 틀린 문제는 다시 한번 생각해볼 것이다.

     

    풀어서 맞춘답 표시

    풀어서 틀린답 표시 및 코드로 직접 실습해보기

     

     

     

    1. 다음의 문장들을 조건식으로 표현하라.

     

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

            10 < x && x < 20

     

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

            !( ch == ' ' || ch =='\t' )     or     ch != ' ' && ch != '\t'

     

      3) char형 변수 ch가 'x' 또는 'X'일 때 true인 조건식

            ch == 'x' || ch == 'X'

     

      4) char형 변수 ch가 숫자('0' ~ '9')일 때 true인 조건식

            '0' <= ch && ch <= '9'

     

      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       or       powerOn == false

     

      8) 문자열 참조변수 str이 "yes"일 때 true인 조건식

          str.equals( "yes" )      or      "yes".equals(str)

     

     

     

     

     

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

     

           int sum = 0;

     

           for ( int x = 1; x <= 20; x++ ) {

              if ( !( x % 2 == 0 || x % 3 == 0 )) {

                 sum += ++x; 

              }

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

           }

     

     

     교재의 답)

     

     내가 푼 답 )

     i를 선증가 시켜서 sum에 더했는데, 그게 아니라 그냥 i값이 1씩 증가하는 값을 2나 3으로 나눴을 때 배수가 아닌경우에 더해야 됐다. if안의 조건식에서 2와 3으로 나누었을 때 0이되면 2와 3의 배수이므로, 그게 아닐 때만 sum에 더하는 방법으로 구현해보았다.

     

     

     

     

     

     

     

    3. 1 + (1+2) + (1+2+3) + (1+2+3+4) + ... + (1+2+3+4+...+10)의 결과를 계산하시오.

           int sum = 0;

           

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

              

           }

     

     

     교재의 답)

    i의 값이 1부터 10까지 1씩 증가하고, 그 증가하는 i의 값을 누적해서 sum 변수에 저장하면, 각각 i가 1씩 증가할 때 마다 sum에 저장되는 값들을 확인할 수 있다. 이 값을 totalSum 이라는 변수에 다 더하면 sum의 합한것을 구할 수 있다.

     

     

     

     

     

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

     

       내가 푼 답 ) 

       우선 내가 생각한 것은 짝수인 수들은 음수이고 홀수인 수들은 양수인것을 파악하였다. 그리고 총 몇까지 더해야 총합이 100이 되는지도 알 수 없었다. 그래서 wihle문을 사용해야겠다고 생각했다. 전체합을 구하는 변수와 처음 더해야 되는 수와 1씩 증가하면서 음수, 양수를 번갈아 가며 바꿔지며 나오는 규칙을 발견하였고, 그걸 저장할 변수를 하나 더 선언하였다. 홀수가 나올 때는 전체의 합을 계속 더하고, 짝수가 나올 때는 총합에서 빼는 식으로 계산을 하고, 총합이 100이 넘을 경우 전체 while문을 나가도록 코드를 짜 보았다. 

     

     

     

     

    밑에 코드는 반복을 하면서 1씩 증가하는 num과 총합 sum을 출력해보았다.

     

     

     

     

     

     

       교재의 답 ) 

     교재의 답을 보았지만, 한번에 잘 이해가 가지 않았다. 이건 이해해보고 정리해보려고 한다.

     

     

           

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    [참고 도서 Java의 정석_기초편] http://www.kyobobook.co.kr/product/detailViewKor.laf?ejkGb=KOR&mallGb=KOR&barcode=9788994492049&orderClick=LEa&Kc=

Designed by Tistory.