본문 바로가기

Algorithm475

[파이썬] 백준 22866 : 탑 보기 (골드3) [파이썬] 백준 22866 : 탑 보기 (골드3) https://www.acmicpc.net/problem/22866 풀이 방향성 생각 한 노드 다른 방향으로 볼 수 있는 건물의 수를 탐색하면 시간 초과. $O(nlogn)$ 밑으로 풀어야함. 한 번 순회로 앞 뒤 모두 체크하기는 어려움. 스택을 통해서 뒤의 정보만 저장하고 새로운 정보를 바탕으로 스택 바꾸기. 전체코드 N = int(input()) H = list(map(int,input().split())) def search(infos,reverse): # 볼 수 있는 개수 / 볼 수 있는 빌딩까지 최소 거리 / 볼 수 있는 빌딩 인덱스 counts,dists,close_idx = [0]*N,[10**6]*N,[10**6]*N start,end,st.. 2024. 4. 4.
[파이썬] 백준 18234 : 당근훔쳐먹기 (골드3) [파이썬] 백준 18234 : 당근훔쳐먹기 (골드3) https://www.acmicpc.net/problem/18124 풀이 방향성 생각 영양제가 항상 시작보다 크기때문에 최대한 오래 기다리는게 이득이다. 앞에서 부터 그리디하게 가져가면 당근이 온전하게 성장 불가능하다. 정렬 이후 뒤에서부터 접근한다. 맨 뒤에서 k일차에는 wi에 영양제가 (k-1)번 들어간 당근을 먹는다. 전체코드 import sys input = lambda : sys.stdin.readline().rstrip() N,T = map(int,input().split()) infos = [list(map(int,input().split())) for _ in range(N)] infos.sort(key=lambda x:(x[1],x[0.. 2024. 4. 2.
[파이썬] 코드트리 : 코드트리 코딩 대회 (골드1) [파이썬] 코드트리 : 코드트리 코딩 대회 (골드1) https://www.codetree.ai/training-field/search/problems/codetree-coding-contest/description?page=33&pageSize=20 풀이 방향성 생각 모든 케이스를 탐색하기에는 힘들어보임. 경우의 수를 줄이기 위해서 리스트 -> dict 사용 (누가 풀었는지는 중요 x, 순서고려 x) dict 정보를 바탕으로 DFS로 탐색 전체코드 from collections import defaultdict as dd N,M = map(int, input().split()) infos = list(map(int, input().split())) # 최대 집중력보다 크면 x if max(infos) .. 2024. 4. 2.
[파이썬] 프로그래머스 : 인사고과 (레벨3) [파이썬] 프로그래머스 인사고과 (레벨3) https://school.programmers.co.kr/learn/courses/30/lessons/152995 풀이 방향성 생각 입력이 10만이라 각 사람에서 자신보다 둘 다 높은 점수를 가지는 경우는 체크 불가능 정렬 / 힙 / 해시 등을 생각해볼 수 있다. 정렬 이후 근태, 동료평가 중 하나를 피벗으로 삼고 조사하면 효율적으로 조사 가능 A점수가 크고 B점수가 작은 애들부터 조사 시작하기. A는 항상 작아지는 경우라서 B점수가 더 작아지는 경우가 생기면 인센x 전체코드 from collections import defaultdict as dd def solution(scores): A,B = scores[0] S = A+B Bmax = 0 scores... 2024. 4. 2.