학/Algorithm 8

[구현] 행렬(Matrix)

일반적으로 2차원 공간은 행렬의 의미로 사용 → Column(열) ↓ Row (행) (0, 0) (0, 1) (0, 2) (1, 0) (1, 1) (1, 2) (2, 0) (2, 1) (2, 2) 시뮬레이션 및 완전탐색 문제에서 방향 벡터가 자주 활용됨. 1번 방법 #동, 서, 남, 북 dx = [0, 0, -1, 1] dy = [1, -1, 0, 0] # 현재 위치 x, y = 1, 1 for i in range(4): # 다음 위치 nx = x + dx[i] ny = y + dy[i] print(nx, ny) 2번 방법 #동, 서, 남, 북 step = [(0, 1), (0, -1), (-1, 0), (1, 0)] # 현재 위치 row, column = 1, 1 for i in range(4): # ..

학/Algorithm 2023.02.15

그리디

그리디 알고리즘이란? - 현재 상황에서 지금 당장 좋은 것만 고르는 알고리즘 - 매 순간 가장 좋아 보이는 것을 선택하며, 현재의 선택이 나중에 미칠 영향은 고려 x 1. 단순히 현재 상황에서 가장 좋아 보이는 것만 반복적으로 선택해도 최적의 해를 구할 수 있는가 2. 정당한가(정당성 분석) tip. 기준에 따라 좋은 것을 선택함으로 문제에서 "가장" 에 대한 기준을 알게 모르게 제시해 줌. ex) 거스름 돈 더보기 닫기 닫기 #거스름 돈 문제(3_1) n = 1260 count = 0 coin_types = [500, 100, 50, 10] for coin in coin_types: count += n//coin n %= coin print(count) 1. 가장 큰 화폐 단위부터 돈을 거슬러 주면 됨..

학/Algorithm 2023.02.02

구현

구현이란? - 머릿속에 있는 알고리즘을 소스코드로 바꾸는 과정 (풀이 방법 구상 -> 정확히 구현) - 모든 범위의 코딩 테스트 문제 유형을 포함하는 개념이긴 완전 탐색 _ 모든 경우의 수를 주저 없이 다 계산하는 해결 방법 시뮬레이션 _ 문제에서 제시한 알고리즘을 한 단계씩 차례대로 직접 수행 (+ 코드가 길어지는 문제, 실수 연산과 특정 소수점 출력 문제, 문자열 슬라이싱, 라이브러리 사용 문제) 1. 메모리 제약 사항 생각하기 ( 변수의 표현 범위, 리스트 크기 ) 2. 좌표 문제의 경우, 이동할 방향을 기록 tip. 문제의 길이가 길지만, 문법에 익숙하다면 오히려 쉬울 수 있음. ex) 상하좌우 ( 시뮬레이션 ) 더보기 닫기 입력 N (1 ≤ N ≤ 100) ; N * N 크기의 정사각형, 가장 ..

학/Algorithm 2023.01.10