07.31

바르고·2023년 7월 31일
0

월말

월말 - 5- x, y  i, j 방위 헷갈리지 말고 확인.
  - 8방위 말고 3방위만 해도 됐을것...
    - 사실 왠만하면 continue 되긴하지만..
    - 3/8 시간복잡도는 아니긴 함.
    - 아니다. 우상단 대각선 방향이면 못하잖아. 4방향 탐색 해야함.
  - 출력 0일때는 x,y 좌표값 출력 말았어야.
  - 6목 이상에 속하는 케이스 제외하기 위해 반대편 방향이 같은 색이면 pass
  
삼성코테
  - 외워서 하는 건 안나옴.
  - 직접 해보는 문제들 나옴. 직관.
  
재귀 -> void -> return (가지치기 등등...)

APS 기본

1./출력 처리
2. SW 문제 해결
3. 알고리즘 성능
  1) 시간 복잡도 -> nlogn으로..!
  2) 공간 복잡도
4. 재귀 호출
5. 재귀 호출 - 피보나치 수열
6. 재귀 호출 응용 - 하노이 탑

-----
표준 입출력
  - System.in
  - System.out
  - System.error.. 안 씀..

표준 입출력의 대상변경
  - System.setin()
  
System.in -> InputStream 타입.

Scanner.
  - 다양한 입력 소스에서 데이터를 읽어 구분자로 토큰화하고 다양한 타입으로 변환.
  - nextInt()..
  - 2차원 입력일 시 좀 비추...

  -주요 메소드
    - nextInt()
      - int타입 반환
      - 유효 문자열 후 White space 문자(space,, 개행) 만나면 White space 직전까지 처리
    - nextDouble()
      - double타입 반환
      - 동일
    - next()
      - 문자열 반환
      - 동일
    - nextLine()
      - 문자열 반환
      - 개행(enter) 문자를 만나면 개행문자까지 처리
      - next()와 달리 문자열 안에 띄어쓰기를 할 수 있음(space, tab 가능)
  
-----
BufferedReader.
  - 필터 스트림 유형
  - 줄 단위로 문자열 처리 기능 제공 -> readLine()
  - 대량의 데이터 처리 시 수행시간 효율적.
  - StringTokenizer 쓰세요.

-----

java.lang.StringBuilder
  - 문자열 조작을 지원하는 클래스
  - 자바에서 상수로 취급되는 문자열을 조작 시마다 새로운 문자열이 생성되는 것을 방지해줌.
  - append()
  - toString()

java 숫자에 _ 써도 유효한 숫자로 인식.
  - ex) 1_000_000
  
-----

SW 문제 해결이란.
  -프로그래밍을 하기 위한 많은 제약 조건과 요구사항을 이해하고 최선의 방법을 찾아내는.
  
  
문제 이해 -> 익숙한 용어로 재정의 -> 어떻게 해결할지, 시간체크(시간체크, 시간복잡도) -> 계획을 검증 -> 구현 -> 최적화
문제 최소 3번 읽자.

직관과 체계적인 접근
  - 비슷한 문제
  - 단순화
  - 수식으로 표현
  - 문제를 분해 할 수?
  
-----

알고리즘 : 유한한 단계를 통해 문제를 해결하기 위한 절차나 방법이다. 주로 컴퓨터용어로 쓰이며, 컴퓨터가 어ㄸㄴ일을 수행하기 위한 단계

무엇이 좋은 알고리즘
  - 정확성
  - 작업량 (중요)
  - 메모리 사용량 (중요)
  - 단순성
  - 최척성

시간 복잡도
  - 최선의 경우(Best Case)
    - 빅 오메가 표기법
  - 최악의 경우(Worst Case)
    - 빅 오 표기법
  - 평균의 경우(Avg Case)
	- 빅 세타 표기법
    
빅-(O) 표기법
  - n에 대한 항만을 표시
  - 계수 무시.. 상수는 1

공간 복잡도
  - 메모리 사용량
  - 생성한 객체의 메모리 사용량
 
 ------
 
 반복과 재귀.
   - 비슷
   
 재귀 함수, recursive function
   - 함수 내부에서 직접 혹은 간접적으로 자기 자신을 호출하는 함수
   - 일반적으로 재귀적 정의를 이용해서 재귀 함수를 구현
   - 따라서, 기본 부분과 유도 부분으로 구성.
   - 재귀적은 반복에 비해 간결하고 이해하기 쉽다.
     - 익숙치 않으면 어렵다고 느낀다.
   - 함수 호출은 프로그램 메모리 구조에서 스택을 사용 -> 성능 저하
   - 가변적인 호출..! -> 재귀..!
   
 재귀 함수 작성
   1. 함수의 정의 명확히 할 것.
     - 무슨일을 하는 지.
   2. 함수 실행 시 실행을 결정하는 결정적 내용(변화 요인) -> 매개변수 설정.
   3. 기저 조건 찿기
   
   유도 파트 먼저 작성 후 끝날 기저조건 작성하는 것도.

알고리즘 스터디 - 자료구조(스택,큐,덱)

... 
profile
바르고의 다락방

1개의 댓글

comment-user-thumbnail
2023년 7월 31일

잘 봤습니다. 좋은 글 감사합니다.

답글 달기