[알고리즘] 알고리즘 - #1.반복문

01 - 2 반복


While 문 💡

사전 판단 반복 구조

실행 전에 반복을 계속할지를 판단

 


package alogrithm_1_2;

import java.util.Collection;
import java.util.Collections;
import java.util.LinkedList;
import java.util.Scanner;

public class SumWhile {

	public static void main(String[] args) {
		Scanner stdIn = new Scanner(System.in);
		
		System.out.println("1부터 n까지의 합을 구합니다.");
		System.out.println("n의 값 : ");
		
		int n = stdIn.nextInt();
		
		int sum = 0;
		int i = 1;
		
		while (i <= n) {
			System.out.println("sum 더하기 전 : " + sum);
			sum += i;
			System.out.println("sum 더한 후 : " + sum);
			i++;
		}
		
		System.out.println("1부터 " + n + "까지의 합은" + sum +" 입니다.");
		
		
		
	}
}

 


for문  💡

사전 판단 반복문

✋하나의 변수를 사용하는 반복문은 while문 보다는 for문이 더 좋다!

 


package alogrithm_1_2;

import java.util.Scanner;

public class SumFor {

	public static void main(String[] args) {
		Scanner stdIn = new Scanner(System.in);
		
		System.out.println("1부터 n까지의 합을 구합니다.");
		System.out.println("n의 값 : ");
		int n = stdIn.nextInt();
		
		int sum = 0;
		
		for (int i = 1; i <= n; i++) {
			sum += i;
		}
		
		System.out.println("1부터 " + n + "까지의 합은" + sum +" 입니다.");
	}

}
✍️ 전위형 증가, 후위형 증가 연산자 (for문에 주로 사용)
  • 전위형 증가 연산자 ++a
  • 식 전체를 평가하기 전에 피연산자의 값을 증가
  • 후위형 증가 연산자 a++
  • 식 전체를 평가한 후에 피연산자의 값을 증가

 

확장 for 문

확장 for문을 사용하면 배열의 스캔을 매우 간단하게 구현

 

for (double i : a) { //확장 for문
	sum += i;
}
package alogrithm_2_1;

public class ArraySumForIN {

	
	public static void main(String[] args) {
		double[] a = {1.0, 2.0, 3.0, 4.0, 5.0};
		
		for (int i = 0; i < a.length; i++) {
			System.out.println("a["+ i + "] : " + a[i]);
		}
	
		double sum = 0;
		
		for (double i : a) { //확장 for문
			sum += i;
		}
		
		System.out.println("모든 요소의 합은 " + sum + " 입니다.");
			

	}
}

() 안의 콜론(:) ⇒ "~의 안에 있는"

 

확장 for문의 장점

  • 배열의 길이를 조사하는 수고를 덜어줌
  • iterator와 같은 방법으로 스캔

✅ 인덱스 자체의 값이 필요하지 않으면 확장 for문으로 구현하는 것이 좋다.


do ~ while 문 💡

사후 판단 반복문 

루프 본문을 한 번 실행한 다음에 계속 반복할 것인지 판단

 

for문은 처음에 제어식을 평가한 결과가 0이면 루프 본문은 한 번도 실행 ❌

do문은 루프 본문이 반드시 한 번은 실행 ⭕

 

do {
	
    실행문
    
} while (조건문);

 

 

 

package alogrithm_1_2;

import java.util.Scanner;

public class SumForPos {

	public static void main(String[] args) {
		Scanner stdIn = new Scanner(System.in);
		int n;
		 
		System.out.println("1부터 n까지의 합을 구합니다.");
		
		
		do {
			System.out.print("n의 값 : ");
			n = stdIn.nextInt();
		} while (n <= 0) ;
		
		int sum = 0;
		
		for(int i=1; i <= n; i++) {
			sum += i;
		}
		System.out.println("1부터 " + n + "까지의 합은" + sum +" 입니다.");
	}

}

 

 


논리연산자

 

논리 연산자는 &&(AND), ||(OR), !(NOT) 3개로 이루어져 있으며,  반드시 결과가 참(True)거짓(False) 으로 도출

 

  • -  &&  (AND)
  A B Result
A && B 0 0 0
1 0 0
1 1 1
0 1 0
  • - || (OR)
  A B Result
A || B 0 0 0
1 0 1
1 1 1
0 1 1
  • ! (NOT)
  A Result
!A 0 1
1 0

 

단축평가

왼쪽 피연산자의 평가 결과만으로 정확해지는 경우 오른 쪽 피연산자의 평가를 수행하지 않음
  • (false)&&(아무개) 는 “아무개”부분을 수행하지 않고 false로 평가
  • (true)||(아무개)는 “아무개”부분을 수행하지 않고 true로 평가
boolean을 가지고 논리연산을 하게 될 경우에는 &&, ||과 다르게 단축평가를 하지 않음


&, |이 논리연산을 하게 되는 경우에는 좌측과 우측 모두 수행


 

해당 내용은 Do it! 자료구조와 함께 배우는 알고리즘 입문[자바편] 을 참고하여 정리했습니다.