본문 바로가기

알고리즘

(158)
파이썬)요격 시스템 https://school.programmers.co.kr/learn/courses/30/lessons/181188 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr def solution(targets): answer = 0 targets.sort(key=lambda x: [x[1], x[0]]) e = 0 for target in targets: if target[0] >= e: answer += 1 e = target[1] return answer
파이썬)수들의 합2 https://www.acmicpc.net/problem/2003 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())) start = 0 end = 1 cnt = 0 while start 3이므로 end를 +1 증가시킨다. 그럼 end는 2가 되고 arr[start:end]는 [3,4]가된다. sum은 7이고 7 > m(6) 이므로 start + 1..
파이썬)현수막 https://www.acmicpc.net/problem/14716 14716번: 현수막 혁진이의 생각대로 프로그램을 구현했을 때, 현수막에서 글자의 개수가 몇 개인지 출력하여라. www.acmicpc.net import sys sys.setrecursionlimit(100000) n, m = map(int, sys.stdin.readline().split()) arr = [] dx = [0, 0, -1, 1, -1, -1, 1, 1] dy = [1, -1, 0, 0, -1, 1, -1, 1] one = [] for i in range(n): arr.append(list(map(int, sys.stdin.readline().split()))) visit = [[False for _ in range(m)]..
파이썬)치즈 https://www.acmicpc.net/problem/2636 2636번: 치즈 아래 과 같이 정사각형 칸들로 이루어진 사각형 모양의 판이 있고, 그 위에 얇은 치즈(회색으로 표시된 부분)가 놓여 있다. 판의 가장자리(에서 네모 칸에 X친 부분)에는 치즈가 놓 www.acmicpc.net from collections import deque n, m = map(int, input().split()) arr = [] for i in range(n): a = list(map(int, input().split())) arr.append(a) dx = [1, -1, 0, 0] dy = [0, 0, -1, 1] time = 0 ans = [] def bfs(): q = deque() cnt = 0 q.appe..
파이선)꼬인 전깃줄 https://www.acmicpc.net/problem/1365 1365번: 꼬인 전깃줄 첫 줄에 전봇대의 개수 N(1 ≤ N ≤ 100,000)이 주어지고, 이어서 N보다 작거나 같은 자연수가 N개 주어진다. i번째 줄에 입력되는 자연수는 길 왼쪽에 i번째 전봇대와 연결된 길 오른편의 전봇대가 www.acmicpc.net from bisect import bisect_left n = int(input()) arr = list(map(int, input().split(" "))) dp = [arr[0]] for i in range(1, len(arr)): if dp[-1] < arr[i]: dp.append(arr[i]) else: idx = bisect_left(dp, arr[i]) dp[idx] =..
파이썬) 연구소 https://www.acmicpc.net/problem/14502 14502번: 연구소 인체에 치명적인 바이러스를 연구하던 연구소에서 바이러스가 유출되었다. 다행히 바이러스는 아직 퍼지지 않았고, 바이러스의 확산을 막기 위해서 연구소에 벽을 세우려고 한다. 연구소는 크 www.acmicpc.net 즉 주어진 2차원 배열에서 벽(1) 세개를 새워, 0이 가장 많을 때의 개수를 구하는 문제이다 나는 이 문제를 백준-알고리즘 분류 - bfs에서 봤을 땐 어떤 방식으로 풀어야할지 감이 잡히지 않았지만 브루트포스 유형에서 감을 잡게 되었다. 풀이법 브루트포스 알고리즘인 만큼 벽을 세울 수 있는 경우의 수를 모두 구하여 0의 개수를 새면 된다. 경우의 수를 구하는 만큼 combinations를 이용했다. from..
파이썬)예산 https://www.acmicpc.net/problem/2512 2512번: 예산 첫째 줄에는 지방의 수를 의미하는 정수 N이 주어진다. N은 3 이상 10,000 이하이다. 다음 줄에는 각 지방의 예산요청을 표현하는 N개의 정수가 빈칸을 사이에 두고 주어진다. 이 값들은 모두 1 이상 www.acmicpc.net n = int(input()) arr = list(map(int, input().split())) money = int(input()) start = 0 end = max(arr) max_log = 0 if sum(arr)
프로그래머스) 대충 만든 자판 https://school.programmers.co.kr/learn/courses/30/lessons/160586?language=python3 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr def solution(keymap, targets): answer = [] obj = {} for i in range(len(keymap)): for j in range(len(keymap[i])): if keymap[i][j] not in obj: obj[keymap[i][j]] = j else: if obj[keymap[i][j]] > j: obj[keymap..