목록algorithm (61)
현제의 현재이야기
https://school.programmers.co.kr/learn/courses/30/lessons/181188 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 요격시스템.py def solution(targets): targets.sort(key=lambda x: x[1]) target_j = float('inf') answer = 0 for i, j in targets: if i >= target_j: answer += 1 target_j = j target_j = min(target_j, j) return answer + 1 target_j를 두어..
2003번: 수들의 합 2 첫째 줄에 N(1 ≤ N ≤ 10,000), M(1 ≤ M ≤ 300,000,000)이 주어진다. 다음 줄에는 A[1], A[2], …, A[N]이 공백으로 분리되어 주어진다. 각각의 A[x]는 30,000을 넘지 않는 자연수이다. www.acmicpc.net n, m = map(int,input().split()) arr = list(map(int, input().split())) left, right = 0, 1 answer = 0 while right > [] a = [1, 2, 3] print(a[2:4]) >> [3] a = [1, 2, 3] print(a[3:10000]) >> [] 2. left와 right가 같을 때, left부터 left - 1 까지 탐색이 되기..
| 문제 2n개의 숫자가 주어졌을 때, 이 숫자를 각각 n개씩 2개의 그룹으로 나눠 각 그룹 원소합의 차가 최소가 되도록 하는 프로그램을 작성해주세요. n = int(input()) arr = list(map(int, input().split())) one = [] result = float('inf') def calculate(): global result result = min(abs((sum(arr) - sum(one)) - sum(one)), result) def make(curr_num, cnt): if curr_num == 2 * n: if cnt == n: calculate() return one.append(arr[curr_num]) make(curr_num + 1, cnt + 1) one..
[0 for _ in range(n)]과 [0] * n 의 차이점은 없다. 단순히 0을 n번 복사하는 것을 for문으로 반복하기 때문에 새로운 것을 지정해주는 것 하지만 [0, 0, 0] * 3 은 주소를 공유하기 때문에? 위험하다. ⭐️방향성⭐️이 없으면 DP를 사용할 수 없다. 상태에 대한 정의, 뭘 최대로 해야하나 뭘 최소로해야 문제가 풀리나를 잘 훈련해야함(like 횟수와 도달한 수만 중요하지 경로는 중요하지 않다?!) 최대 증가 부분 수열 | 문제 N개의 숫자가 주어졌을 때, 가장 긴 증가 부분 수열의 길이를 구하는 프로그램을 작성해보세요 부분 수열이란 수열의 원소들 중 임의로 몇 개를 골라 순서대로 나열한 수열을 의미하고, 이때 순서대로 나열했을 때 원소들이 계속 증가한다면 이 수열을 증가 부..
나이트(BFS) | 문제 나이트는 다음과 같이 노란색 위치를 기준으로 검은색 8곳으로 움직임이 가능합니다. n * n 격자 위에서 격자를 벗어나지 않고 나이트가 시작점에서 도착점까지 가는 데 걸리는 최소 이동 횟수를 구하는 프로그램을 작성해보세요. from collections import deque n = int(input()) lst = list(map(int, input().split())) (r1, r2) = (lst[0] - 1, lst[1] - 1) (r3, r4) = (lst[2] - 1, lst[3] - 1) visited = [ [0 for _ in range(n)] for _ in range(n) ] result = [ [0 for _ in range(n)] for _ in range(..
DFS, BFS에 대한 고찰 드디어 깨우쳐 버린 그래프 탐색. 재귀 함수에 대한 것을 이해하고 보니 dfs가 쉬워졌다. 리스트로 푸는 문제는 전에 이해가 가능했었는데 그래프에서는 어려움을 겪었었다. 근데 알아버림 두, 네 방향 탈출 가능 여부 판별 DFS와 BFS차이 | 문제 n * m 크기의 이차원 영역의 좌측 상단에서 출발하여 우측 하단까지 뱀에게 물리지 않고 탈출하려고 합니다. 이동을 할 때에는 반드시 상, 우에 인접한 칸으로만 이동할 수 있으며, 뱀이 있는 칸으로는 이동을 할 수 없습니다. 예를 들어 과 같이 뱀이 배치 되어 있는 경우 실선과 같은 경로로 탈출을 할 수 있습니다. 이 때 뱀에게 물리지 않고 탈출 가능한 경로가 있는지 여부를 판별하는 코드를 작성해보세요. DFS(두방향) n , m ..