본문 바로가기
728x90

Algorithm98

[BOJ/Python] 1600. 말이 되고픈 원숭이 📌 문제 https://www.acmicpc.net/problem/1600 1600번: 말이 되고픈 원숭이 첫째 줄에 정수 K가 주어진다. 둘째 줄에 격자판의 가로길이 W, 세로길이 H가 주어진다. 그 다음 H줄에 걸쳐 W개의 숫자가 주어지는데, 0은 아무것도 없는 평지, 1은 장애물을 뜻한다. 장애물이 있 www.acmicpc.net 📌 문제 접근 방법 말처럼 움직일 경우와 보통으로 움직일 경우의 델타 배열을 따로 정의 visited를 3차원으로 만들어서 말처럼 움직인 횟수를 인덱스로 각각 다른 리스트에 방문 체크 📌 코드 from collections import deque def bfs(i, j): queue = deque() queue.append((i, j, 0)) visited = [[[0 f.. 2021. 10. 4.
[Python] 2차원 배열 2차원 배열 1차원 list를 묶어놓은 list 세로 길이(행의 개수) = N, 가로 길이(열의 개수) = M 일때 2차원 배열 만들기 arr = [[0] * M for _ in range(N)] # 아래와 같은 경우는 안됨!! # 모든 행이 같은 1차원 리스트를 참조하고 있기 때문 arr = [[0]*M]*N 배열 순회 i : 행의 좌표, j : 열의 좌표 행 우선 순회 for i in range(len(Array)): for j in range(len(Array[i])): Array[i][j]​ 열 우선 순회 for j in range(len(Array[0])): for i in range(len(Array)): Array[i][j]​ 지그재그 순회 for i in range(len(Array)): .. 2021. 8. 22.
[Algorithm] 탐욕 알고리즘 (Greedy Algorithm) 탐욕(Greedy) 알고리즘 최적해를 구하는 데 사용되는 근시안적 방법 여러 경우 중 하나를 결정해야 할 때마다 그 순간에 최적이라고 생각되는 것을 선택하여 최종 해답에 도달 ex) 거스름 돈의 지폐/동전 개수 최소화 각 선택의 시점에서 이루어지는 결정은 지역적으로는 최적이지만, 그 선택들을 계속 수집하여 최종적인 해답을 만들었다고 하여 그것이 최적이라는 보장은 없음 탐욕 알고리즘 동작 과정 해 선택 : 현재 상태에서 부분 문제의 최적 해를 구한 뒤, 이를 부분해 집합(Solution Set)에 추가 실행 가능성 검사 : 새로운 부분해 집합이 실행 가능한지 확인, 문제의 제약 조건을 위반하지 않는지 검사 해 검사 : 새로운 부분해 집합이 문제의 해가 되는지 확인 해 검사 : 아직 전체 문제의 해가 완성되.. 2021. 8. 22.
[SWEA/Python] 4835. 구간합 📌 문제 https://swexpertacademy.com/main/main.do SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 📌 문제 접근 방법 M개의 숫자의 합을 구해야하므로 max, min을 처음부터 M개의 숫자의 합으로 초기화 현재 total에 저장된 numbers 리스트의 맨 앞의 값(i)을 빼고 맨 뒤의 값의 바로 뒤의 값(M+i) 더하기 max, min 비교 📌 코드 import sys sys.stdin = open('input.txt') T = int(input()) for t in range(1, T+1) : N, M = map(int, input().split()) numbers = lis.. 2021. 8. 13.
728x90