반응형

알고리즘 12

좌표평면 위의 직사각형 면적 구하기 - python

문제 좌표평면위에 여러 개의 점이 찍혀있다. [x, y]형식으로 주어진다. 이 점들을 이어서 직사각형을 만들 수 있는 모든 경우에 대해 가장 넓은 직사각형의 넓이를 구하여라. 만약 직사각형을 만들 수 없다면 -1을 리턴하라. 단, 직사각형이 x, y축에 평행한 경우만 고려한다. 입출력 예시 1) input = [[1,1], [4,1], [4,6], [1,6] ,[4,3], [2,3], [2,1], [2,0] ,[4,10], [1,10], [6, 10]] output = 27 입출력 예시 2) input = [[4,1], [1,1], [4,6], [1,6] ,[4,3], [2,3], [2,1]] Output = 15 입출력 예시 3) input = [[2,1], [2,0] ,[4,10], [1,10]] O..

프로그래머스 | 2022 KAKAO BLIND RECRUITMENT > 주차 요금 계산 - 파이썬

문제는 어렵지 않다. 차근차근 풀면 어떻게든 풀 수 있는 문제. 다만 코드를 짜다보니 점점 더러워지는 나의 코드....ㅜㅜ 문제 설명 주차장의 요금표와 차량이 들어오고(입차) 나간(출차) 기록이 주어졌을 때, 차량별로 주차 요금을 계산하려고 합니다. 아래는 하나의 예시를 나타냅니다. 만약 출차기록이 없다면 23:59에 나간 것으로 간주한다. 기본요금 적용 시간보다 적은 시간 머물렀다면 당연히 기본요금으로 매긴다. 단위시간이 10분인데 8분 머물렀다면 10분으로 간주한다. 상식적인 주차요금을 계산하면 된다. 아래는 내가 짠 코드... (더러움 주의ㅜㅜ) import math def solution(fees, records): answer = [] dic = {} #key: number, value: {mi..

프로그래머스 | 2022 KAKAO BLIND RECRUITMENT > k진수에서 소수 개수 구하기 - 파이썬

이번 문제도 간단한 문제였다. 그런데 왜이렇게 어렵게 풀었을까나 ㅜㅜ 주어진 숫자 n을 k진수로 바꾼 후, 0을 기준으로 숫자들을 잘라낸다. 그 숫자들이 소수인가? 그렇다면 소수인 숫자가 몇 개인가! 0을 기준으로 split하면 됐을텐데 나는 왜 for문을 돌면서 하나하나 체크했지ㅜㅜ? def solution(n, k): answer = 0 knum = transfer(n, k) + '0' curr = '' left = 0 right = 0 for digit in knum : if digit != '0': curr = curr + str(digit) else : if curr == '': continue if isPrime(int(curr)) and left == 0 and right == 0: answ..

프로그래머스 | 2022 KAKAO BLIND RECRUITMENT> 신고 결과 받기

카카오 문제는 막 어렵기도 전에 문제가 넘 길다. 하지만 문해력도 실력인걸? 알고리즘 공부한지 오래됐으니 이제 슬슬 감을 잡기 위해 하루에 한문제씩 풀어야겠다. 파이썬 넘나 오랜만. def solution(id_list, report, k): answer = [] stopped = set([]) dic = {i: {"report_user": set([]), "reported": 0} for i in id_list} for data in report : [report_from, report_to] = data.split(' ') if(report_to not in dic[report_from]["report_user"]) : dic[report_from]["report_user"].add(report_to..

[LeetCode 리트코드] Max Number of K-Sum Pairs, python

문제 You are given an integer array nums and an integer k. In one operation, you can pick two numbers from the array whose sum equals k and remove them from the array. Return the maximum number of operations you can perform on the array. (해설) int배열 nums와 int k가 주어진다. nums의 두 숫자를 골라 더해서 k가 되면 nums에서 삭제한다. 이렇게 k를 만들 수 있는 쌍의 최대값을 구하여라. 예 Input: nums = [1,2,3,4], k = 5 Output: 2 1,4 그리고 2, 3 추가사항 1

[LeetCode 리트코드] Add Two Numbers, python 파이썬

문제 You are given two non-empty linked lists representing two non-negative integers. The digits are stored in reverse order, and each of their nodes contains a single digit. Add the two numbers and return the sum as a linked list. You may assume the two numbers do not contain any leading zero, except the number 0 itself. 0이상의 정수로 이루어진 linked list 두 개가 주어진다. 각 노드의 값은 한 자리 숫자이다. linked list는 거꾸로된 방..

[LeetCode 리트코드] Merge Sorted ArraySolution

문제 Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array. The number of elements initialized in nums1 and nums2 are m and n respectively. You may assume that nums1 has enough space (size that is equal to m + n) to hold additional elements from nums2. (해설) integer 어레이 nums1과 nums2을 nums1에 합쳐서 정렬하라. nums1의 요소 개수는 m, num2의 요소 개수는 n이다. nums1의 길이는 m+n이다. 예 input ..

[LeetCode 리트코드] Check If Two String Arrays are Equivalent, python3, 파이썬

문제 string리스트 word1과 word2가 주어진다. 이 리스트들을 모두 합쳤을 때 두 개가 같으면 true, 다르면 false를 리턴하라. 예 input : word1 = ["ab", "c"], word2 = ["a", "bc"] output : true input : word1 = ["a", "cb"], word2 = ["ab", "c"] output : false 추가사항 word1과 wor2의 길이는 10^3이하. 각 리스트에 있는 문자열의 길이도 10^3 이하. 각 리스트의 문자열을 다 합친 길이도 10^3 이하. 나의 솔루션 class Solution: def arrayStringsAreEqual(self, word1: List[str], word2: List[str]) -> bool: ..

[LeetCode 리트코드] Longest Substring Without Repeating Characters , python3

문제 문자열 s가 주어진다. s의 substring중에서 중복된 문자가 없는 substring의 최대 길이를 리턴하라. 예 input : s = "abcabcbb" output : 3 추가사항 0 한국어 번역) The naive approach is very straightforward. But it is too slow. So how can we optimize it? -> 단순한 접근은 상당히 직관적이지만 매우 느리다. 어떻게 최적화할 수 있는가? In the naive approaches, we repeatedly check a substring to see if it has duplicate character. But it is unnecessary. If a substring s[i:j]​ fr..

[LeetCode 리트코드] Find a Corresponding Node of a Binary Tree in a Clone of That Tree

문제 바이너리 트리 original이 주어진다. 그리고 그것의 레퍼런스 버전인 cloned가 주어진다. target노드가 head가 되는 cloned된 트리를 리턴하라. 언뜻 보면 되게 간단하다. 그냥 bfs로 돌면서 target과 value가 같은 노드가 있으면 리턴하면 된다. 예 추가사항 노드의 개수는 1개 이상 10^4개 이하 target 노드는 무조건 original 중에 있음 나의 솔루션 # Definition for a binary tree node. # class TreeNode: # def __init__(self, x): # self.val = x # self.left = None # self.right = None def bfs(node: TreeNode, val): if node.va..

반응형