본문 바로가기

알고리즘?/이분탐색(결정알고리즘)&그리디 알고리즘10

정리 이분 탐색 문제 1 2 3 그리디 문제 5 6 8 9 10 튜플 형태로 append & 람다 함수를 이용한 정렬(튜플의 두번째 값을 기준으로) 5 13 14 7 8 9 10 5 6 11 12 입력이 이런식으로 5줄(n)로 되어있다. import sys sys.stdin = open("input.txt", "rt") n = int(input()) a = [] for _ in range(n): s, e = map(int, input().split()) #튜플 형태로 append a.append((s, e)) #람다 함수를 이용한 정렬 하기 a.sort(key = lambda x: (x[1], x[0])) for x in a: print(x) 문제 8 deque 활용 deque(덱) 은 앞 뒤로 요소를 추가하.. 2023. 7. 19.
9. 증가 수열 만들기(그리디) [문제 아이디어] 투 포인터 활용 튜플 형태로 append [문제 증가 수열 만들기(그리디)] 1부터 N까지의 모든 자연수로 구성된 길이 N의 수열이 주어집니다. 이 수열의 왼쪽 맨 끝 숫자 또는 오른쪽 맨 끝 숫자 중 하나를 가져와 나열하여 가장 긴 증가수열을 만듭니다. 이때 수열에서 가져온 숫자(왼쪽 맨 끝 또는 오른쪽 맨 끝)는 그 수열에서 제거됩니다. 예를 들어 2 4 5 1 3 이 주어지면 만들 수 있는 가장 긴 증가수열의 길이는 4입니다. 맨 처음 왼쪽 끝에서 2를 가져오고, 그 다음 오른쪽 끝에서 3을 가져오고, 왼쪽 끝에서 4, 왼쪽 끝에서 5를 가져와 2 3 4 5 증가수열을 만들 수 있습니다. -입력설명 첫째 줄에 자연수 N(3 2023. 7. 19.
8. 침몰하는 타이타닉(그리디) [문제 아이디어] list에서 pop(0)을 하면 뒤에 있는 자료형을 하나씩 앞으로 가지고 오는 현산을 하게 되어 비효율적이다. 그래서 deque를 사용한다. deque는 자료형의 앞과 뒤에서 넣고 뺄 수 있다. from collections import deque p = deque(p) #자료형의 제일 앞에것을 pop한다. p.popleft() [문제 침몰하는 타이타닉(그리디) ] 유럽에서 가장 유명했던 유람선 타이타닉이 침몰하고 있다. 이 유람선에는 N명의 승객이 타고 있다. 구명보트를 타고 탈출해야 하는데 타이타닉에 있는 구명보드는 2명 이하로만 탈 수 있으며, 보트 한 개에 탈 수 있는 총 무게도 M kg 이하로 제한되어 있다. N명의 승객 몸무게가 주어졌을 때, 승객 모두가 탈출하기 위한 구명보.. 2023. 7. 19.
7. 창고정리 (그리디) [문제 아이디어] [문제 창고정리 (그리디) ] 창고에 상자가 가로방향으로 일렬로 쌓여 있습니다. 만약 가로의 길이가 7이라면 1열은 높이가 6으로 6개의 상자가 쌓여 있고, 2열은 3개의 상자, 3열은 9개의 상자가 쌓여 있으며 높이는 9라고 읽는다. 창고 높이 조정은 가장 높은 곳에 상자를 가장 낮은 곳으로 이동하는 것을 말한다. 가장 높은 곳이나 가장 낮은 곳이 여러곳이면 그 중 아무거나 선택하면 된다. 위에 그림을 1회 높이 조정을 하면 다음과 같아진다. 창고의 가로 길이와 각 열의 상자 높이가 주어집니다. m회의 높이 조정을 한 후 가장 높은 곳과 가장 낮은 곳의 차이를 출력하는 프로그램을 작성하세요. -입력설명 첫 번째 줄에 창고 가로의 길이인 자연수 L(1 2023. 7. 18.