230221 TIL(Today I Learn)

이용만·2023년 2월 21일
0

내가 약하고 어려워하는 반복문이다. 구조는 알기에 주로 어려워하는 부분만 기록하겠다.
#반복문
#향상된 for문
#break문과 continue문

#for문과 while문의 차이
for 는 반복횟수를 알 때, while 은 몇번이고 상관없이 조건에 맞춰서 반복할 때 사용한다.

향상된 for문

  • 향상된 for문은 반복실행을 하기 위해 카운터 변수와 증감식을 사용하지 않습니다. 배열 및 컬렉션 항목의 개수만큼 반복하고 자동적으로 for문을 빠져나갑니다.
public class EnhancedForLoop {
  public static void main(String[] args) throws Exception {
    String[] names = {"kimcoding", "javalee", "ingikim"};
    for(String name : names) {
      System.out.println(name + "님은 자바를 공부중 입니다.");
    }
  }
}
/*
kimcoding님은 자바를 공부중 입니다.
javalee님은 자바를 공부중 입니다.
ingikim님은 자바를 공부중 입니다.
*/

위와 같이 for문의 괄호( ()) 안에는 배열에서 꺼낸 항목을 저장할 변수 선언, 콜론( : ), 그리고 사용할 배열이 작성됩니다. 향상된 for문을 처음 실행 할 때, names 배열에서 가져올 첫번째 값이 존재하는지 확인 하고, 값이 존재하면 해당값을 변수인 name에 저장합니다. 그리고 그 안의 실행문을 실행합니다. 블록 내부의 실행문이 모두 실행 되면 다시 names 배열에서 가져올 값이 있는지 확인 하고 만약 가져올 다음 항목이 없다면 자동적으로 for문이 종료됩니다.


#어려웠던 알고리즘 문제

1.isPrime

2.listPrimes

문제 : 2 이상의 자연수를 입력받아 2부터 해당 수까지의 소수(prime number)들을 리턴해야 합니다.
출력 : 2-3-5-7-11-13-17 형식으로 리턴해야된다.

package com.codestates.coplit; 

public class Solution { 
	public boolean isPrime(int num) {

    if(num == 2){
      return true;
    }

    if(num ==1 || num % 2 == 0){
      return false;
    }

    //홀수는 홀수로만 나누어 떨어질 수 있다.
    //2는 들어올 필요 없으니 3부터 시작한다. 
    //홀수는 홀수로만 나누어 떨어질 때만 점검하면 되기에 divider+2
    //제곱근 까지 나누어 떨어지면 뒤에 대칭되는 숫자도 나누어 떨어지는 것이기에 소수가 아닌 것
    //divider <= (int)Math.sqrt(num)
    for(int divider = 3; divider <= (int)Math.sqrt(num); divider + 2){
      if(num % divider == 0){
        return false;
      }
      return true;
    }
  }
}
profile
성장하는 개발자가 되고자 합니다.

0개의 댓글