Do it 자료구조와 함께 배우는 알고리즘 입문 자바편
을 읽고 정리한 내용입니다.
문제를 해결하기 위한 것
으로, 명확하게 정의되고 순서가 있는 유한 개의 규칙으로 이루어진 집합
알고리즘이 프로그램의 기반으로 제대로 사용되기 위해서는 다음 조건을 만족해야 한다.
- 입력과 출력 (Input/Output)
- 정확성 (Correctness)
- 유한성 (Finiteness)
- 명확성 (Definiteness)
- 유효성 (Effectiveness)
처리하고자 하는 문제의 수서와 상호간의 관계를 기호를 사용하여 표현한 그림
어떤 조건이 성립하는 동안 반복해서 수행하는 것
while(제어식) 명령문
for(초기화부분; 제어식; 업데이트부분) 명령문
do문 while(제어식);
논리 연산의 식 전체 평가의 결과가 왼쪽 피연산자의 평가 결과만으로도 정확하다면 오른쪽 피연산자의 평가를 수행하지 않는 것
||
왼쪽 피연산자의 평가 결과가 true
면 단축평가&&
왼쪽 피연사자의 평가 결과가 false
면 단축평가각 조건을 부정하고 논리곱을 논리합으로, 논리합을 논리곱으로 바꾸고 다시 전체를 부정하면 원래의 조건과 같다는 법칙
(x && y) == !(!x || !y);
(X || y) == !(!x && !y);
반복문 안에 다시 반복
// 곱셈표
public class Multi99Tabel {
public static void main(String[] args) {
for(int i=1; i<=9; i++) {
for(int j=1; j<=9; j++) {
System.out.printf("%3d", i*j);
}
System.out.println();
}
}
}
위의 코드는 다음과 같이 처리된다.
i가 1일 때 : j를 1 => 9로 증가시키면서 1 * j를 출력한다. 그리고 줄을 바꾼다.
i가 2일 때 : j를 1 => 9로 증가시키면서 2 * j를 출력한다. 그리고 줄을 바꾼다.
i가 3일 때 : j를 1 => 9로 증가시키면서 3 * j를 출력한다. 그리고 줄을 바꾼다.
i가 4일 때 : j를 1 => 9로 증가시키면서 4 * j를 출력한다. 그리고 줄을 바꾼다.
.
.
이를 그림으로 나타내면 다음과 같다.
// 직각 이등변 삼각형
public class TriangleLB {
public static void main(String[] args){
Scanner scan = new Sacnner(System.in);
int n;
System.out.println("왼쪽 아래가 직각인 이등변 삼각형을 출력합니다.");
do {
System.out.print("몇 단 삼각형입니까? : ");
n = scan.nextInt();
}while ( n <= 0);
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= i; j++)
System.out.print('*');
System.out.println();
}
}
}
위 코드는 다음과 같이 처리된다
i가 1 일 때 : j를 1 => 1로 증가시키면서 *를 출력한다. 그리고 줄을 바꾼다.
i가 2 일 때 : j를 1 => 2로 증가시키면서 *를 출력한다. 그리고 줄을 바꾼다.
i가 3 일 때 : j를 1 => 3로 증가시키면서 *를 출력한다. 그리고 줄을 바꾼다.
i가 4 일 때 : j를 1 => 4로 증가시키면서 *를 출력한다. 그리고 줄을 바꾼다.
.
.
이를 그림으로 나타내면 다음과 같다.