chapter 01 - 1 알고리즘이란 ?
문제를 해결하기 위해 명확하게 정의되고 순서가 있는 유한 개의 규칙으로 이루어진 집합
-
최댓값 구하는 알고리즘
- max3(a, b, c) 함수 생성하여 활용
① max에 a값 대입
② b > max인 경우 max에 b값 대입
③ c > max인 경우 max에 c값 대입
- 순서대로 진행되는 순차적 구조
- ②, ③은 조건 만족 시 해당 명령 실행하는 선택 구조
- 연습문제
- 네 값의 최댓값 구하기
(ⓒⓞⓓⓔ) ex01.java
- 세 값의 최솟값 구하기
(ⓒⓞⓓⓔ) ex02.java
- 네 값의 최솟값 구하기
(ⓒⓞⓓⓔ) ex03.java
- 13종류의 대소관계 조합에 대해 중앙값 구하기
(ⓒⓞⓓⓔ) ex04.java
- 조건 판단과 분기 알고리즘
- ex) if (n > 0) ...
else if (n < 0) ...
else ..
→ 3가지로 분기
- ex) if (n == 1) ...
else if (n == 2) ...
→ 3가지로 분기 : n이 1 또는 2가 아닌 경우가 존재하기 때문에 else문이 생략된 것으로 분석 가능
chapter 01 - 2 반복
반복 구조 (loop)
어떤 조건이 성립하는 동안 코드 반복하여 실행하는 구조
-
while문
- 사전 판단 반복 구조 : 실행 전 반복 여부 판단하는 구조
- while (조건문) {
명령문 (루프 본문이라고 함)
}
- 연습 문제
- while문 사용한 실습 예제 수정하여 while문 종료 시 i값이 n+1인 것 확인
(ⓒⓞⓓⓔ) ex06.java
-
for문
- 하나의 변수를 사용할 때에는 while문보다 추천
- for (초기화; 조건문; 업데이트) {
명령문 (루프 본문이라고 함)
}
- for문의 초기화 부분, 조건문, 업데이트 부분 생략 가능하지만, 세미콜론은 필수
- for문의 초기화 부분에서 선언한 변수는 for문 내에서만 유효함
- 연습 문제
- for문 사용한 실습 예제 참고하여 n이 7인 경우 '1 + 2 + 3 + 4 + 5 + 6 + 7 = 28'로 출력
(ⓒⓞⓓⓔ) ex07.java
- 가우스 덧셈 방법 활용하여 1부터 n까지의 정수 합 구하기
(ⓒⓞⓓⓔ) ex08.java
- 정수 a, b를 포함하여 그 사이의 모든 정수의 합 구하여 return하는 메서드
(ⓒⓞⓓⓔ) ex09.java
-
do-while문
- 사후 판단 반복 구조 : 루프 본문 한 번 실행 후 반복 여부 판단 / 무조건 한 번은 실행됨
- while문 뒤 조건문 만족 시에만 do문 내 루프 본문 실행 가능
- do {
명령문
} while (조건식);
- 연습 문제
- 두 변수 a, b 입력 받은 후 b-a 결과 출력
(ⓒⓞⓓⓔ) ex10.java
- 양의 정수 입력하고 자릿수 출력
(ⓒⓞⓓⓔ) ex11.java
구조적 프로그래밍 (structured programming)
입구와 출구 하나씩 존재하는 구성 요소만을 계층적으로 배치하여 프로그램 구성하는 방법
- 순차, 선택, 반복 3종류의 제어 흐름 사용
다중 루프
- 루프가 중첩되어 반복 안에서 반복하는 경우
- 연습 문제
- 위, 왼쪽에 곱하는 수가 있는 곱셈표 출력
(ⓒⓞⓓⓔ) ex12.java
- ex12.java 를 덧셈으로 수행하기
(ⓒⓞⓓⓔ) ex13.java
- 입력한 수를 한 변으로 하는 정사각형 * 기호로 출력하는 프로그램
(ⓒⓞⓓⓔ) ex14.java
- 왼쪽 아래, 위, 오른쪽 위, 아래가 직각인 이등변 삼각형 출력하는 프로그램 (메소드 작성)
(ⓒⓞⓓⓔ) ex15.java
- n단의 피라미드 출력하는 프로그램 (메소드 작성)
(ⓒⓞⓓⓔ) ex16.java
- n단의 숫자 피라미드 출력하는 프로그램 (메소드 작성)
(ⓒⓞⓓⓔ) ex17.java
* 참고 내용 *
키보드로 숫자와 문자열 입력하기
import java.util.Scanner; // 클래스 앞에 선언
Scanner scanner = new Scanner(System.in); // 입력받기 전 (main 메소드 앞쪽)에 작성
scanner.nextInt( ); // 정수값 입력 받음
- nextBoolean( ) : true 또는 false (boolean 자료형) 값 입력 받음
- nextByte( ) : byte 타입
- nextShort( ) : short 타입
- nextInt( ) : int 타입
- nextLong( ) : long 타입
- nextFloat( ) : float 타입
- nextDouble( ) : double 타입
- next( ) : String 타입 ; 스페이스 / 줄 바꿈 문자로 구분
- nextLine( ) : String 타입 1줄
메서드 반환값
- return type이 void인 메서드는 값 반환하지 않음.
- 각 메서드에서 선언한 type의 결과값을 호출한 위치에 return
연산자와 피연산자
- 연산자 (operator) : 연산 기호
- 피연산자 (operand) : 연산의 대상이 되는 것
- 연산자의 종류 : 피연산자 수에 따라 분류 가능
- 단항 연산자 ; 피연산자 1개 ex) i++
- 2항 연산자 (binary opertor) ; 피연산자 2개 ex) a + b
- 3항 연산자 (ternary operator) ; 피연산자 3개 ex) condition ? trueReturn : falseReturn
- ? : 조건 연산자로, 조건을 만족하면 trueReturn값을, 아니라면 falseReturn값을 반환한다. (유일한 3항 연산자)
논리 연산
- 논리곱
x | y | x && y |
true | true | true |
true | false | false |
false | true | false |
false | false | false |
- 논리합
x | y | x || y |
true | true | true |
true | false | true |
false | true | true |
false | false | false |
- 단축 평가 (short circuit evaluation)
- 논리 연산 식 전체 평가 시 왼쪽 결과만으로 정확해져 오른쪽 피연산식 평가 수행하지 않는 경우
'Android ᙏ̤̫͚ > JAVA Algorithm' 카테고리의 다른 글
Chapter 06. 정렬 (1) (0) | 2021.01.21 |
---|---|
Chapter 05. 재귀 알고리즘 (0) | 2021.01.16 |
Chapter 04. 스택과 큐 (0) | 2021.01.13 |
Chapter 03. 검색 (0) | 2021.01.13 |
Chapter 02. 기본 자료구조 (0) | 2021.01.10 |