본문 바로가기

Algorithm/Greedy19

[백준] 2812번 크게 만들기 뭔가.. 되게 오래 걸릴꺼 같았는데 생각보다 금방 풀었다.. 뭔가 더 로직을 간편화 할 수 있을꺼같은데.. 나중에 해봐야지.. import sys length, delete = map(int, sys.stdin.readline().strip().split()) valNum = list(sys.stdin.readline().strip()) ans = [valNum[0]] for i in range(1, length): if len(ans) == length - delete: if i != length and delete == 0: ans.append(valNum[i:]) break while len(ans) > 0 and ans[-1] 0: ans.pop() d.. 2020. 11. 28.
[백준] 11508번 2+1 세일 5분컷 문제.. import sys def greedy(milk): ans = milk[0] for i in range(1, len(milk)): if (i + 1) % 3 == 0: continue else: ans += milk[i] return ans N = int(sys.stdin.readline()) milk = [0] for _ in range(N): milk.append(int(sys.stdin.readline())) milk.sort(reverse=True) print(greedy(milk)) 2020. 10. 20.
[백준] 14241번 슬라임 합치기 뭐지.. 이거.. 실1 문제인데 왤캐 쉬워;; 10분컷;; import sys def greedy(slime, N): ans = 0 for i in range(N - 1): x = slime[i] y = slime[i + 1] ans += x * y slime[i + 1] = x + y return ans N = int(sys.stdin.readline()) slime = list(map(int, sys.stdin.readline().split())) print(greedy(slime, N)) 2020. 10. 20.
[백준] 1946번 신입 사원 취직의 염원을 담아서 풀었다 10분컷 했다 import sys def greedy(sd, N): ans = 1 current = sd[1] for i in range(2, N +1): temp = sd[i] if temp < current: ans += 1 current = temp return ans T = int(sys.stdin.readline()) for _ in range(T): N = int(sys.stdin.readline()) scoreData = [0] * (N + 1) for _ in range(N): x, y = map(int, sys.stdin.readline().split()) scoreData[x] = y print(greedy(scoreData, N)) 2020. 10. 20.