본문 바로가기

반응형

Python

(88)
[프로그래머스] 파일명 정렬(python) Programmers, 파일명 정렬 2018년 카카오 블라인드 채용 출제 문제 TL;DR 정렬(sort) 구현(implementation) 문제 요약 1. 주어진 파일명을 3개의 부분으로 나누어 기준에 따라 정렬을 하는 프로그램을 작성해야 한다. 2. 파일명은 HEAD, NUMBER, 입력 순으로 정렬된다. 2-1. HEAD는 숫자가 아닌 문자로 이루어져 있는 최소 한 글자 이상의 문자이다. 2-2. NUMBER는 한 글자에서 최대 다섯 글자 사이의 연속된 숫자로 앞쪽에 0이 올 수 있다. 2-3. 나머지 부분은 TAIL으로 숫자가 다시 나타날 수 있으며 아무 글자가 없을 수도 있다. - 문제에서 주어지는 조건을 만족시키면서 정렬할 수 있도록 구현하는 문제이다. - 주어진 입력을 HEAD, NUMBER,..
[프로그래머스] 전화번호 목록(python) Programmers, 전화번호 목록 TL;DR 해시(Hash) 문제 요약 1. 전화번호부에 여러 사람의 번호가 리스트 형태로 주어진다. 2. 주어진 전화번호 중 하나의 번호가 다른 번호의 접두어인지 확인한다. 3. 만약 접두어인 경우가 있으면 False, 없다면 True를 반환한다. - 접두어는 가장 앞에 오는 형태를 말한다. 입출력 형태를 통해 이를 확인할 수 있다. 입출력 형태 예시 1 :: '119'가 '1195524421'의 접두어가 되기 때문에 False를 반환한다. - 한 번호가 다른 번호의 접두어인 경우는 접두어가 되는 번호가 다른 번호에 포함되어 있으면서, 접두어가 되는 번호로 시작해야 한다. 예시 2 :: 그 어떤 번호도 다른 번호의 접두어인 경우가 없다. 예시 3 :: '12'가 '1..
[프로그래머스] 가장 큰 수(python) Programmers, 가장 큰 수 TL;DR 정렬(sort) 문제 요약 1. 주어진 0 또는 양의 정수들을 이어 붙여서 만들 수 있는 수 중 가장 큰 수를 반환한다. - 입력으로 주어진 수들을 순서를 다르게 배치하여 여러 다른 수를 만들 수 있다. - 만들 수 있는 수 중 가장 큰 수를 문자열 타입으로 반환하면 된다. 입출력 형태 예시 1 :: 6, 10, 2로 만들 수 있는 수 중 가장 큰 수는 6210이다. 따라서 이를 반환하면 된다. - 6, 10, 2로 만들 수 있는 수는 6102, 6210, 1062, 1026, 2610, 2106 이렇게 6가지를 만들 수 있다. 이 중 가장 큰 수는 6210이기 때문에 6210을 반환하도록 작성하면 된다. 풀이 def solution(numbers): # 주..
[프로그래머스] 소수 찾기(python) Programmers, 소수 찾기 TL;DR DFS(깊이 우선 탐색) 문제 요약 1. 한 자리 숫자가 적힌 종이 조각을 붙여 소수를 몇 개 만들 수 있는지 알아내는 함수를 작성하라. - 주어진 숫자들로 만들 수 있는 모든 경우의 숫자들 중에서 소수의 개수를 반환하는 프로그램을 찾으면 된다. - 깊이 우선 탐색(DFS)을 사용해서 만들 수 있는 숫자들의 조합을 찾으면 문제를 해결할 수 있다. 입출력 형태 풀이 import math def solution(numbers): answer = 0 permutations = set() prev_elements = [] def dfs(elements): if ''.join(prev_elements) != '': permutations.add(int(''.join(p..
[프로그래머스] 더 맵게(python) Programmers, 더 맵게 TL;DR 힙(heap) 문제 요약 1. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 갖고 있는 음식을 섞어서 스코빌 지수를 늘리려고 한다. 2. 갖고 있는 음식 중 스코빌 지수를 가장 낮은 두 개의 음식을 아래와 같은 방법으로 섞어 새로운 음식을 만든다. `섞은 음식의 스코빌 지수 = 가장 맵지 않은 음식의 스코빌 지수 + (두 번째 맵지 않은 음식의 스코빌 지수 * 2)` 3. 갖고 있는 모든 음식의 스코빌 지수가 K 이상이 될 때까지 반복하여 섞는다. - 보유 하고 있는 모든 음식의 스코빌 지수가 K 이상이 될 때까지 스코빌 지수가 가장 낮은 2개 음식을 뽑아 주어진 공식에 맞게 섞는 것을 반복하면 된다. - 파이썬에서는 힙(heap)이 최소 힙(min hea..
[리트코드] Kth Largest Element in an Array(python) 리트코드, K-th Largest Element in an Array_k번째 큰 원소 TL;DR 힙(heap) 문제 요약 1. 주어진 숫자 배열 nums와 k에 대해서 배열에서 k번째로 큰 원소를 반환한다. 2. k번째 큰 원소는 k번째 개별 원소가 아닌 정렬된 상태에서 k번째로 큰 원소를 의미한다. 입출력 형태 - 예시 1의 경우, 내림차순으로 정렬하면 [6, 5, 4, 3, 2, 1]이 된다. 이 중 2번째로 큰 수는 5이다. - 예시 2의 경우, 내림차순으로 정렬하면 [6, 5, 5, 4, 3, 3, 2, 2, 1]이 된다. 이 중 4번째로 큰 수는 4이다. 풀이 우선, 단순 리스트를 정렬한 후 해당하는 원소를 조회하는 방법으로 해결할 수 있다. class Solution: def findKthLa..
[리트코드] Balanced Binary Tree(python) 리트코드, Balanced Binary Tree_균형 이진 트리 TL;DR 트리(Tree) 깊이 우선 탐색(DFS) 문제 요약 1. 주어진 이진 트리가 높이 균형이 맞는지 아닌지를 판별하는 프로그램을 작성하라. 2. 높이 균형이 맞는 이진 트리는 모든 노드들의 왼쪽 및 오른쪽 서브 트리의 높이 차이가 1을 초과하지 않는 트리를 의미한다. - 형제 노드 간의 차이가 1을 초과하지 않을 때는 True를, 그렇지 않은 경우에는 False를 반환하면 된다. 입출력 형태 - 예시 1의 경우 모든 서브트리에서 높이 차이가 최대 1이다. 그렇기 때문에 True를 반환하였다. - 예시 2의 경우 가장 하위에 있는 서브트리와([3, 4, 4])가 루트의 서브트리([1, 2, 2])와 높이 차이가 1을 초과하기 때문에 f..
[프로그래머스] 위클리 챌린지 2주차(python) 프로그래머스 위클리 챌린지 2주차 TL;DR 배열(리스트, List) 구현(Implementation) 문제 요약 1. 학교의 과제에서 각 학생들이 받은 점수의 평균을 사용해서 각 학생이 받은 학점을 반환하는 함수를 작성한다. 2. 각 학생들은 자기 자신과 다른 학생들의 점수를 준다. 3. 각 학생들의 점수에서 자기 자신이 준 점수가 받은 점수 중 유일한 최고점이거나 최저점일 경우 해당 점수를 제외하고 평균을 계산한다. 4. 평균이 90점 이상인 학생은 A, 80점 이상 90점 미만인 학생은 B, 70점 이상 80점 미만인 학생은 C, 50점 이상 70점 미만인 학생은 D, 50점 미만인 학생은 F를 부여한다. - 학생들은 자기 자신 및 다른 학생들에게 점수를 부여한다. - 한 학생이 받은 점수 중 자기..