본문 바로가기

반응형

배열

(8)
[프로그래머스] 최소 직사각형(python) Programmers, 최소 직사각형 프로그래머스 위클리 챌린지 8주차 TL;DR 배열(리스트, list/array) 구현(implementation) 문제 요약 1. 다양한 크기의 명함들을 모두 수납할 수 있으면서 작아서 들고 다니기 편한 명함 지갑을 만들어야 한다. 2. 조사된 명함의 크기들을 모두 넣을 수 있으면서도 가장 작은 지갑의 크기를 반환하는 함수를 작성해야 한다. 3. 명함의 경우 가로로 눕혀서 수납할 수 있다. - 가로와 세로 길이가 다른 명함의 크기가 조사된다. 이 때, 명함은 가로로 눕혀서 지갑에 넣을 수 있다. 이 말인 즉슨, 가로로 눕힌 명함. 즉, 주어진 가로의 길이와 세로의 길이를 반대로 했을 때도 조사해야 한다는 것이다. - 나는 이 문제를 모두 가로로 눕혔다고 가정하여 가로..
[프로그래머스] 위클리 챌린지 2주차(python) 프로그래머스 위클리 챌린지 2주차 TL;DR 배열(리스트, List) 구현(Implementation) 문제 요약 1. 학교의 과제에서 각 학생들이 받은 점수의 평균을 사용해서 각 학생이 받은 학점을 반환하는 함수를 작성한다. 2. 각 학생들은 자기 자신과 다른 학생들의 점수를 준다. 3. 각 학생들의 점수에서 자기 자신이 준 점수가 받은 점수 중 유일한 최고점이거나 최저점일 경우 해당 점수를 제외하고 평균을 계산한다. 4. 평균이 90점 이상인 학생은 A, 80점 이상 90점 미만인 학생은 B, 70점 이상 80점 미만인 학생은 C, 50점 이상 70점 미만인 학생은 D, 50점 미만인 학생은 F를 부여한다. - 학생들은 자기 자신 및 다른 학생들에게 점수를 부여한다. - 한 학생이 받은 점수 중 자기..
[리트코드] Merge Sorted Array(python) 리트코드, Merge Sorted Array_정렬된 배열 병합 TL;DR 배열을 문제에 제시된 조건에 맞게 해결할 수 있는지 문제 분석 1. m과 n의 유효한 원소를 갖고 있는 비내림차순으로 정렬된 정수 배열 nums1와 nums2 2. nums1과 nums2를 nums1에 비내림차순으로 정렬하여 합쳐야 한다. 3. 정렬된 답은 nums1에 저장되어야 한다. 4. nums1은 m + n길이를 갖고 있으며 첫 번째, m개 만큼이 정렬의 대상이 되는 정수들이다. 5. nums2는 n길이를 갖고 있으며, n이 0이라면 무시한다. - 비내림차순(non-decreasing order) : 오름차순과는 다른 개념이다. nums1과 nums2에서 같은 원소가 있을 때는 nums1의 원소가 nums2의 원소보다 앞서 ..
[리트코드] Best Time to Buy and Sell Stock(python) 리트코드, Best Time to Buy and Sell Stock_주식을 사고팔기 가장 좋을 때 TL;DR 주어진 배열을 순회하며 문제의 조건을 구현할 수 있는지 문제 분석 1. i번째 날 주어진 주식의 가격이 담긴 배열 prices가 주어진다. 2. 가장 주식이 쌀 때 구매하고 싶고, 미래에 가장 값이 비쌀 때 주식을 판매하고 싶다. 3. 그 때의 최대 수익을 반환하라. 만약 수익을 창출할 수 없다면 0을 반환하라. 입출력 형태 - 일 별 주식의 가격이 담긴 배열 prices가 주어진다. - 예시 1 : - 주식이 가장 저렴한 1일때 사서, 그 이후 미래에 가장 비쌀 때인 6일 때 팔면 최대 수익인 5를 얻을 수 있다. - 예시 2: - 어느 시점에 주식을 사던, 수익을 창출할 수 없다. 따라서 0을..
[리트코드] Product of Array Except Self(python) 리트코드, Product of Array Except Self_자기 자신을 제외한 배열 곱셈 TL;DR 문제 조건에 따라 배열을 활용하여 문제를 풀 수 있는지 문제 분석 1. 주어진 정수 배열 nums에서 각 원소를 제외한 나머지 원소들의 곱으로 이루어진 배열을 반환한다. 2. 숫자들은 32비트 정수로 한정된다. 3. 시간 복잡도가 O(n)이어야 하며, 나머지 연산을 활용하면 안된다. - 1 : 해결해야 하는 문제 조건에 대해서 말하고 있다. - 2 : 문제 자체적으로 값의 상-하한을 주고 있다. 파이썬에서는 크게 신경쓰지 않아도 된다. - 3 : 문제의 제약 조건을 말하고 있다. 이 부분이 굉장히 풀이를 하는데 어렵게 다가왔다. 입출력 형태 - nums : 정수 배열 nums가 주어진다. - 각 원소를..
[리트코드] Array Partition 1(python) 리트코드, Array Partition 1_배열 분할 TL;DR 문제에 원하는 조건에 맞게 배열을 조작할 수 있는지 문제 분석 1. 길이가 2n인 정수 배열 nums가 주어진다. 2. nums에서 만들 수 있는 n개 쌍에서 각 쌍의 최소값의 합이 최대가 될 때의 값을 반환한다. - 1 ~ 2 : 해결해야 하는 문제 조건에 대해서 말하고 있다. 입출력 형태를 통해 어떤 문제인지 더 잘 이해할 수 있다. 입출력 형태 - nums : 정수 배열이 주어진다. - 예시 1 - 만들 수 있는 쌍의 모든 경우는 explanation에서 보이는 바와 같다. - 각 쌍에서 최소값의 합이 최대가 되는 경우는 3번 (1, 2), (3, 4)로 만들었을 때이다. - 예시 2 - 만들 수 있는 쌍 중 쌍의 최소값의 합이 최대가..
[리트코드] 3Sum(python) 리트코드, 3Sum_세 수의 합 TL;DR 투 포인터(two pointer)를 활용한 배열 문제 문제 분석 1. 주어진 숫자 배열에서, 세 수를 더해서 0이 되는 세 수를 배열에 담아 반환하라. 2. 단, 이 때, 세 수의 인덱스가 같으면 안된다.(i != j, i != k, j != k) 3. 동일한 세 수의 쌍이 배열에 담기면 안 된다. - 1 ~ 2 : 해결해야 하는 문제에 대해서 설명하고 있다. - 3 : 문제 해결 시 주의사항에 대해서 설명하고 있다. - 예를 들어, [0, 0, 0, 0, 0, 0]이 주어졌을 경우 [[0, 0, 0], [0, 0, 0]]과 같이 저장이 되어야 한다. - 이 때, 각 0의 인덱스가 모두 달라야 한다. 같은 인덱스를 참조하여 넣은 답일 경우 오답이 된다. 입출력 ..
[리트코드] Two Sum(python) 리트코드, Two Sum_두 개의 합 문제 1. 주어진 정수의 배열 nums와 정수 target에 대해 더해서 target이 되는 두 개의 숫자 인덱스를 반환하라. 2. 각 입력에 대해서는 오직 하나의 정답만이 존재하고, 하나의 원소를 두 번 사용할 수 없다. 3. 정답은 어떤 순서로 반환되어도 상관 없다. 입출력 형태 - 예시 1번 - nums에 입력이 [2, 7, 11, 15] target이 9로 주어졌다. - 문제 조건에 따라 nums에서 합이 9가 되는 원소의 인덱스를 반환하면 된다. - 2와 7을 더했을 때 9가 되므로 2의 인덱스인 0과 7의 인덱스인 1을 반환하면 된다. - 예시 3번 - nums = [3, 3], target = 6 - 문제 조건 2에 의해 동일한 원소를 두 번 사용하면 안..