코딩테스트[파이썬]/입문자를 위한 코딩테스트 핵심 42

[스택] - 올바른 괄호

올바른 괄호 괄호 문자열이 입력되면 올바른 괄호이면 "YES", 올바르지 않으면 "NO"를 출력합니다. (())() 이것은 괄호의 쌍이 올바르게 위치하는 거지만, (()()))은 올바른 괄호가 아니다. 제한사항: • 문자열 s의 길이는 100을 넘지 않습니다. 나의 코드 def solution(s): answer = 'YES' stack=[] for x in s: if x=='(': stack.append(x) elif stack and x==')': stack.pop() elif len(stack)==0 and x==')': answer="NO" if len(stack)>0: answer="NO" return answer print(solution("((()))()")) print(solution("(..

[이진탐색] -고정된 숫자

오름차순으로 정렬된 일차원 배열의 원소 중 인덱스 번호(인덱스 번호는 0번부터 시작합니다.) 와 자기 자신의 값이 같으면 이 원소를 고정된 숫자라고 합니다. 예를 들어 [-3, -2, 0, 1, 3, 5, 8, 9, 12] 배열에서 고정된 숫자는 5입니다. 배열 원소 5의 인덱스 번호가 5로 원소와 인덱스 값이 같습니다. 매개변수 nums에 오름차순으로 정렬된 정수 배열이 주어지면 배열 원소 중 고정된 숫자를 찾 아 반환하는 프로그램을 작성하세요. 고정된 숫자는 유일합니다. 고정된 숫자가 없다면 -1를 반환하세요. 제한사항: • nums의 길이는 1,000,000을 넘지 않습니다. nums의 원소는 유일값입니다. • 1

[이진탐색] -트럭 찾기

현수는 이사를 하려고 합니다. 이삿짐 센터에는 여러 개의 트럭이 있습니다. 각 트럭은 짐을 실을 수 있는 총 무게 제한이 있 습니다. 이사 비용은 현수가 선택한 트럭의 무게 제한에 곱하기 10을 한 값입니다. nums에 각 트럭의 무게 제한이 오름차순으로 주어지고, 현수의 이사하는 짐의 총 무게가 weight주어지면 현수가 짐을 실을 수 있는 최소비용의 트럭을 찾아 선택된 트럭의 인덱스 번 호를 반환하는 프로그램을 작성하세요. 인덱스 번호는 0번부터 시작합니다. 현수가 이사할 수 있는 트럭이 존재하지 않을 경우 -1를 반환합니다. 제한사항: • nums의 길이는 100,000,000을 넘지 않습니다. nums의 원소는 유일값입니다. • 1

이진탐색

이진 탐색 nums에 오름차순으로 정렬된 정수 배열이 주어지고, target에 nums배열에서 찾고자 하는 값 이 주어지면 nums배열에서 target의 인덱스 번호를 찾아 반환하는 프로그램을 작성하세요. 인덱스 번호는 0번부터 시작합니다. target값이 nums에 존재하지 않을 경우 -1를 반환합니다. 제한사항: • nums의 길이는 100,000,000을 넘지 않습니다. nums의 원소는 유일값입니다. • -100,000,000

[그리디] -카드 점수

카드 점수 N개의 카드가 일렬로 놓여져 있습니다. 각 카드에는 숫자가 적혀있습니다. 현수는 카드가 일렬로 놓여진 줄의 양 끝 즉 왼쪽 맨 끝카드와 오른쪽 맨 끝 카드 둘 중 하나 를 가져갈 수 있습니다. 현수는 양 끝에서 가져가는 방식으로 k개의 카드를 가져갈 수 있습니 다. 그리고 가져간 카드에 적혀진 숫자의 총합이 현수가 얻는 점수입니다. 일려로 놓여진 각 카드의 숫자가 매개변수 nums에 주어지고, 현수가 가져갈 수 있는 카드의 개수 k가 주어지면 현수가 얻을 수 있는 최대점수를 반환하는 프로그램을 작성하세요. 제한사항: • nums의 길이는 300,000을 넘지 않습니다. • nums의 원소는 100을 넘지 않는 자연수입니다.. • 2

[다시보기] [그리디] - 선긋기

선긋기 한 번의 선긋기는 수직선상의 한 점에서 다른 한 점까지 선을 긋는 것입니다. 선을 그을 때는 이미 선이 있는 위치에 겹쳐서 그을 수도 있습니다. 여러번 그은 곳과 한 번 그은 곳의 차이는 없습니다. 수직선은 0번 지점부터 m번 지점까지의 길이를 갖고 있습니다. 매개변수 nums에 각각의 선긋기 정보가 주어지면 0번 지점부터 m번 지점까지 연속적인 선이 그어지도록 하기 위한 선긋기 최소횟수를 반환하는 프로그램을 작성하세요. 모든 입력은 0번 지점부터 m번지점까지 연속적인 선이 그어집니다. 제한사항: • 3

[그리디] -최대 사과의 개수

최대 사과의 개수 여러 종류의 사과박스가 있습니다. 각 박스의 종류에 따라 박스에 담겨있는 사과의 개수가 다릅니다. 트럭에 박스를 실으려고 합니다. 트럭에 박스을 실을 수 있는 최대 개수 제한이 있습니다. 매개변수 box에 각 박스 종류의 정보가 주어지고, limit에 트럭의 실을 수 있는 박스의 최대 개수가 주어지면 트럭에 실을 수 있는 사과의 최대 개수를 반환하는 프로그램을 작성하세요. 제한사항: • box의 길이는 100,000을 넘지 않습니다. • box[i][0]은 i 종류 박스의 개수, box[i][1]은 i 종류의 박스 한 개에 들어 있는 사과의 개수 입니다. 서로 다른 종류의 박스라도 담아 있는 사과의 개수는 같을 수 있습니다. • 1

[그리디] -버스

버스 학생들이 버스에 타고 여행을 가려고 합니다. 버스는 승객을 태울 수 있는 무게 제한이 있습니다. 매개변수 weight에 각 학생들의 몸무게 정보가 주어지고, limit에 버스가 태울 수 있는 총 승객 의 무게가 주어지면 버스에 탈 수 있는 최대인원수를 구하여 반환하는 프로그램을 작성하세 요. 제한사항: • weight의 길이는 100,000을 넘지 않습니다. • 50

[정렬] - 두수의 합

두 수의 합 정수 수열 안에서 수열의 원소 두 개의 합이 target값이 되는 경우를 찾고 싶습니다. 매개변수 nums에 길이가 n인 수열이 주어지고, 매개변수 target에 자연수 값이 주어지면 이 수열안에서 두 개의 원소의 합이 정수 target값이 되는 두 원소를 구해 배열에 오름차순으로 담아 반환합니다. 두 개의 원소의 합이 target값이 되는 경우는 오직 한가지 뿐인 입력만 주어집니다. 한 원소를 두 번 더하는 것은 안됩니다. nums의 각 원소는 유일값입니다. 답이 없을 경우 [0, 0]을 반환합니다. 제한사항: • nums의 길이 3

[정렬] - 두 수의 차

두 수의 차 매개변수 nums에 수열이 주어지면 수열의 원소 중 두 수의 차가 가장 작은 쌍을 찾아 반환하 는 프로그램을 작성하세요. 수열의 원소는 유일값들로 이루어져 있습니다. 두 수의 차가 가장 작은 쌍이 여러개면 모든 쌍을 배열에 담아 반환합니다. 배열에 담는 순서는 상관없습니다. 단 두 수는 오름차순 정렬된 쌍으로 표현합니다. 정확성, 효율성테스트를 합니다. 제한사항: • nums의 길이는 100,000을 넘지 않습니다. • 1