반응형

2021/01 29

[Python] sorted() 다중조건으로 정렬하는 방법

[Python] sorted() 다중조건으로 정렬하는 방법 2018 KAKAO BLIND RECRUITMENT - [3차] 방금그곡 문제에 정렬을 해야 하는 부분이 있는데, sorted함수 안에서 itemgetter를 사용하여 해결하려했습니다. 그러나 원하는대로 작동하지 않아, 결국 itemgetter를 쓰지 않고 다른 방법으로 해당 코드를 변경하여 풀었습니다. 이 기회에 sorted() 함수를 간략하게 정리하려 합니다. 예제 >>> a = [(1,3), (0,3), (1,4), (1,5), (0,1), (2,4)] >>> b = sorted(e, key=lambda x: x[0]) >>> b [(0, 3), (0, 1), (1, 3), (1, 4), (1, 5), (2, 4)] # 기본 동작은 오름차순..

[알고리즘] 10진수를 n진수로 변경하기

10진수를 n진수로 변경하기 2018 KAKAO BLIND RECRUITMENT - [3차] n진수 게임을 풀며 10진수를 n진수로 변경하는 로직을 작성했었다. 생각보다 오래걸렸고 로직도 복잡하게 짜서 타인의 깔끔한 로직을 기록하려 한다. def solution(n, t, m, p): #재귀함수 이용 - 10진수를 n진수로 def convert(n, base): arr = "0123456789ABCDEF" q, r = divmod(n, base) if q == 0: return arr[r] else: return convert(q, base) + arr[r] answer = '' candidate = [] # 모든 턴의 답 for i in range(t*m): conv = convert(i..

[알고리즘] 2020 KAKAO BLIND RECRUITMENT - 후보키

2020 KAKAO BLIND RECRUITMENT - 후보키 url : https://programmers.co.kr/learn/courses/30/lessons/42890 고민을 많이 했지만 마땅한 답이 떠오르지 않은 문제. 특히 2차원 배열이 주어지고 각 열에 대한 요소들만을 묶는 로직을 구현하는 것이 조금 막막했다. 말로 설명하려니 어색하다. 글로 다시 정리해보자. 내가 생각하기에 깔끔한 코드 from itertools import combinations def solution(relation): row = len(relation) col = len(relation[0]) # 전체 조합 candidates = [] for i in range(1, col + 1): candidates.extend(..

[Python] deque 사용법

[Python] deque 사용법 deque는 스택과 큐의 기능을 모두 가진 놈이다. deque 생성 예제 >>> from collections import deque # 문자열로 큐 만들기 >>> q = deque('milhouse') >>> q deque(['m','i','l','h','o','u','s','e']) # 빈 큐 만들기 >>> q1 = deque() # 원소가 있는 큐 만들기 >>> q2 = deque([1,2,3]) # 큐 최대 길이 명시하여 큐 만들기 >>> q3 = deque(maxlen = 5) >>> q4 = deque([1,2,3], maxlen =..

[알고리즘] 2018 KAKAO BLIND RECRUITMENT - [1차] 뉴스 클러스터링

[알고리즘] 2018 KAKAO BLIND RECRUITMENT - [1차] 뉴스 클러스터링 2018 KAKAO BLIND RECRUITMENT - [1차] 뉴스 클러스터링 문제를 풀며 아름다운 코드를 발견했습니다. 저만 보기 아까워 기록하려합니다. url = https://programmers.co.kr/learn/courses/30/lessons/17677 내가 생각하기에 깔끔한 코드 import re from collections import Counter pattern = re.compile('[a-z][a-z]') def preprocessing(content): result = [] for i in range(0, len(content)-1): two_letter = conten..

[알고리즘] 2020 카카오 인턴십 - 수식 최대화

2020 카카오 인턴십 - 수식 최대화 url = https://programmers.co.kr/learn/courses/30/lessons/67257 문제 푸는데 꽤나 시간이 걸렸다. IDE 가 없는 환경에서 시험봐야 했다면 더 오래 걸렸을 것 같다. 가장 헷갈렸던 부분은 deque 자료구조에서 특정 인덱스 값을 지우는 부분과 그 이후의 인덱스 조작에서 많이 헤맸다... 아직 내공이 많이 부족한가보다. 더 열심히 풀자! 나의 소스코드 from itertools import permutations from collections import deque def solution(expression): answer = [] stack = deque(fill_stack(expression)) operator = ..

[알고리즘] 프로그래머스 2017 팁스타운 - 짝지어 제거하기

프로그래머스 2017 팁스타운 - 짝지어 제거하기 url = https://programmers.co.kr/learn/courses/30/lessons/12973 문제 설명 짝지어 제거하기는, 알파벳 소문자로 이루어진 문자열을 가지고 시작합니다. 먼저 문자열에서 같은 알파벳이 2개 붙어 있는 짝을 찾습니다. 그다음, 그 둘을 제거한 뒤, 앞뒤로 문자열을 이어 붙입니다. 이 과정을 반복해서 문자열을 모두 제거한다면 짝지어 제거하기가 종료됩니다. 문자열 S가 주어졌을 때, 짝지어 제거하기를 성공적으로 수행할 수 있는지 반환하는 함수를 완성해 주세요. 성공적으로 수행할 수 있으면 1을, 아닐 경우 0을 리턴해주면 됩니다. 예를 들어, 문자열 S = baabaa 라면 b aa baa → bb aa → aa → ..

[알고리즘] 프로그래머스 연습문제 - 다음 큰 숫자

프로그래머스 연습문제 - 다음 큰 숫자 url = programmers.co.kr/learn/courses/30/lessons/12911 비교적 간단한게 풀었던 문제이지만, 구글링이 불가능한 코딩 테스트라면 조금 버벅일 수 있을만한 문제였다. 이 문제에서는 bin() 함수를 사용해야 하는데 사용해 본 적이 없어서 조금 난감했을 것 같다. 해당 문제는 자연수 n이 주어졌을 때, n 의 다음 큰 숫자를 구하는 문제이고 조건은 아래와 같다. 자연수 n이 주어졌을 때, n의 다음 큰 숫자는 다음과 같이 정의 합니다. 조건 1. n의 다음 큰 숫자는 n보다 큰 자연수 입니다. 조건 2. n의 다음 큰 숫자와 n은 2진수로 변환했을 때 1의 갯수가 같습니다. 조건 3. n의 다음 큰 숫자는 조건 1, 2를 만족하는..

[알고리즘] 2019 카카오 개발자 겨울 인턴십 - 튜플

2019 카카오 개발자 겨울 인턴십 - 튜플 url : https://programmers.co.kr/learn/courses/30/lessons/64065 2019 카카오 개발자 겨울 인턴십 - 튜플 문제를 풀며 익숙하지 않았던 것들에 대해 정리하고자 한다. s = "{{1,2,3},{2,1},{1,2,4,3},{2}}" 라는 문자열이 주어지면, 해당 문자열을 ['1,2,3', '2,1', '1,2,4,3', '2'] 처럼 변경해야 했다. 이 때, 나는 한 번에 숫자를 깔끔하게 나누는 것에 대해 미처 생각하지 못했다. 처음 나의 접근 방식 s = "{{1,2,3},{2,1},{1,2,4,3},{2}}" 문자열을 나눌 때 s[1:-1]을 통해 양 사이드의 괄호를 제거했다. 그리고 나서 스택을 만들어 괄호..

반응형