항해 99 온보딩 커리큘럼

[Java언어기초 1주차] 왜인지 할머니가 생각나는 조반... [조건문, 반복문]

디스타입 2023. 3. 9. 00:19

if, switch, for, while

 

학습 진행 및 완료 상황

  • Java 문법 뽀개기 1주차 1-11 반복문 퀴즈 (진도율 40%)
  • Chapter 4 조건문과 반복문

학습 중 발생한 이슈 / 고민 또는 이를 해결한 내용

지금까지 단순 출력?만 해와서 잘 몰랐는데 반복문을 작성하자 갑자기 노트북에서 발열이 느껴졌다..

조금만 힘을 내.. 나의 맥북에어..

쿨러를 주문했다.

 

특이사항(아이디어 메모등)

같은 문제, 같은 값을 찾는다 하더라도 그 방법은 무궁무진하다는걸 느꼈다.

 

과제

연습문제 4-1

  • int형 변수 x가 10보다 크고 20보다 작을 때 true인 조건식
    x > 10 && x < 20
  • char형 변수 ch가 공백이나 탭이 아닐 때 true인 조건식
    ch != ' ' && ch != '\t'
  • char형 변수 ch가 'x' 또는 'X'일 때 true인 조건식
    ch == 'x' || ch == 'X'
  • char형 변수 ch가 숫자('0'~'9')일 때 true인 조건식
    '0' <= ch && ch >= '9'
  • char형 변수 ch가 영문자(대문자 또는 소문자)일 때 true인 조건식
    ('a' <= ch && ch >= 'z') || ('A' <= ch && ch >= 'Z')
  • int형 변수 year가 400으로 나눠떨어지거나 또는 4로 나눠떨어지고 100으로 나눠떨어지지 않을 때 true인 조건식
    year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)
  • boolean형 변수 powerOn이 false일 때 true인 조건식
    powerOn == false 또는 !powerOn
  • 문자열 참조변수 str이 "yes"일 때 true인 조건식
    str.equals("yes")

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

 

public static void main(String[] args) {
    int sum = 0;
    for (int i = 0; i < 20; i++) {
        int value = i + 1;
        if(value % 2 != 0 && value % 3 != 0){
            sum += value;
        }
    }
    System.out.println("sum = " + sum);
}

 

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

 

public static void main(String[] args) {
    int sum = 0;
    int result = 0;
    for (int i = 0; i < 10; i++) {
        sum += i + 1;
        result += sum;
    }
    System.out.println("result = " + result);
}  // result = 220

 

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

 

public static void main(String[] args) {
    int sum = 0; // 총합을 저장할 변수
    int i = 0; // 1씩 증가하면서 몇번째 수를 찾기 위한 변수
    while(sum < 100){
        i++;
        if(i % 2 != 0){  //홀수일땐 값을 더하고 짝수일땐 값을 뺀다.
            sum += i;
        } else {
            sum -= i;
        }
    }
    System.out.printf("총합이 100이상 되려면 %d번째까지 더해야 합니다.%n", i);
} // 결과 : 총합이 100이상 되려면 199번째까지 더해야 합니다.

 

나는 꼼수?로 모든 짝수 값을 빼는 방식으로 답을 찾았지만

왠지...

출제자의 의도와 다른 것 같아 다른 방식으로도 만들어보았다.

 

public static void main(String[] args) {
    int sum = 0; // 총합을 저장
    int sign = 1; // 부호를 바꾸는데 사용
    int num;
    for (int i = 1; true; i++, sign = -sign) {
        // 증감식에서 sign에 -를 곱해 부호를 바꿔주고 1씩 증가하는 i와 곱해 num에 저장해준다.
        // 1+(-2)+3+(-4)+...
        num = i * sign;
        sum += num;
        if (sum >= 100) {
            break;
        }
    }
    System.out.println(sum); // 100
    System.out.println(num); // 199
}

 

오늘의 한줄

어제의 나보다는 한발짝 더 나아간 것 같다.