본문 바로가기
알고리즘/개념

[알고리즘] 01 기본알고리즘

by dokii 2021. 11. 26.
728x90
반응형

01-1 알고리즘이란

  • 세 값의 최대값 
  1. 키보드로 숫자와 문자열 입력하기 ( Scanner sc = new Scanner(System.in); )
  2. System.in은 키보드와 연결된 표준입력 스트림.
  3. stdln.nextInt()가 호출되면 키보드로 입력한 정숫값을 얻을 수 있다. 이는 입력 스트림에서 문자나 숫자를 꺼내는 장치 역할을 한다.
  4. 자료형에따라 호출하는 메서드를 구분히야한다. ( nextBoolean() / nextByte() / nextInt() / next()->문자열, 줄바꿈 문자로 구분 / nextLine()문자열 1줄
  5. 알고리즘의 정의  : 문제를 해결하기위한것으로, 명확하게 정의되고 순서가 있는 유한 개의 규칙으로 이루어진 집합
  6.  
  7. public class d0_01 { static int max3(int a, int b, int c) { int max=a; if(b>max) max = b; if(c>max) max=c; return max; } static int max4(int a, int b, int c, int d) { int max=a; if(b>max) max = b; if(c>max) max=c; if(d>max) max=d; return max; } static int min3(int a, int b, int c) { int min=a; if(b<min) min=b; if(c<min) min=c; return min; } static int med3(int a, int b, int c) { if(a>=b) { if (b>=c) { return b; } else if(a<=c) { return a; } else { return c; } } else if (a>c) return a; else if (b>c) return c; else return b; } public static void main(String[] args) { System.out.println("max(3,2,1) = " + max3(3,2,1)); System.out.println("med(3,5,7) = " + med3(3,5,7)); //중앙값을 구하는 과정은 퀵정렬에서도 이용 } }
  • 조건 판단과 분기
  1. +, _, > 등과 같은 연산기호를 연산자라고하고, 그 대상이되는것을 피 연산자라고한다.
  2. 연산자는 피 연산자의 수에 따라 다음과 같이 3종류로 분류된다. 
  3. 단항연산자 : 피연산자 1개 (a++)
  4. 2항연산자 : 피연산자 2개 ( a<b )
  5. 3항연산자 : 피연산자 3개 (a?b:c)
  6. 특히 조건연산자 : 는 자바에서 유일한 3항 연산자다. a?b:c는 a가 true면 b를 반환하고, false면 c를 반환한다.
a = (x>y) ? x : y;
System.out.println((c==0) ? "c는 0" : "c는 0이아님");
  • 순서도의 기호

 

01-2 반복

  • 1부터 n까지 정수 합 구하기
  1.  while문 반복 : 어떤 조건이 성립하는동안 반복하여 실행함. 이때 증감식으로 빠져나올것도 생각해야함.
    while(제어식) 명령문
  2. for문 반복 : 하나의 변수를 사용하는 반복문은 for문이 낫다. 
    for(초기화 부분; 제어식; 업데이트 부분) 명령문

 

  • 양수만 입력하기
  1. do문은 일단 루프 본문을 한번 실행한 다음 계속 반복할것인지를 판단하는 사후 판단 방법이다. while문과 마찬가지로 ()안의 제어식을 평가한 값이 0이아니면 루프본문의 명령문이 반복된다.
    do문 while(제어식);
    do {
    	n = sc.nextInt(); // n이 0보다 클때까지 반복한다.
    } while (n<=0);​

 

  • 구조적 프로그래밍
  1. 드모르간 법칙
    x&&y 와 !(!x || !y)는 같다.
    x||y 와 !(!x && !y)는 같다.
  • 다중 루프
  1. 반복안에서 반복을 수행하는 다중루프.
  2. 곱셈표(구구단)
    for(int i =1; i<=9; i++) {
    	for(int j=1; j<=9; j++) {
        	System.out.printf("%3d",i*j);
        }
    }​
  • 직각 이등변 삼각형 출력(별찍기)
    for(int i=1; i<=n; i++) {
    	for(int j=1; j<=i; j++) {
        	System.out.print('*');
         }
        System.out.println();
    }

 

 

교재 두잇 자료구조와 함께 배우는 알고리즘 입문(자바편) 스터디 기간 21.11.22~11.27

 

728x90
반응형

댓글