본문 바로가기

Android ᙏ̤̫͚/JAVA Algorithm

Chapter 01. 기본 알고리즘

 

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