목록sort (6)
호기심 많은 분석가

코딩테스트 연습 - H-Index H-Index는 과학자의 생산성과 영향력을 나타내는 지표입니다. 어느 과학자의 H-Index를 나타내는 값인 h를 구하려고 합니다. 위키백과1에 따르면, H-Index는 다음과 같이 구합니다. 어떤 과학자가 발표 programmers.co.kr 내 풀이 def solution(citations): for ind in range(len(citations)+1)[::-1] : if sum([1 if i>=ind else 0 for i in citations]) >= ind: return ind 우선 문제의 내용이 너무 어려웠다. 테스트 케이스를 보고는 바로 이해하지 못했는데, 위키백과를 통해 완벽히 이해할 수 있었다. 1부터 하나씩 커가면서 n이상 인용된 논문이 n 편 이상..

코딩테스트 연습 - 가장 큰 수 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 programmers.co.kr def solution(numbers): numbers = list(map(str, numbers)) numbers.sort(key=lambda x: x*3, reverse=True) return str(int("".join(numbers))) 이번 문제의 풀이는 정말 경이롭다. 총 2가지의 실패를 경험하고 다른 분의 코드를 참고했다. 첫 번째는 str형태는 sort 해줬을 때 앞의 자리 수에 따라..

코딩테스트 연습 - K번째수 [1, 5, 2, 6, 3, 7, 4] [[2, 5, 3], [4, 4, 1], [1, 7, 3]] [5, 6, 3] programmers.co.kr 내 풀이 def solution(array, commands): return [sorted(array[com[0]-1:com[1]])[com[2]-1] for com in commands] 다들 최대한 짧게 코딩하는 것을 좋아해 보여서 한 줄로 코딩해보았다. sort함수가 너무 잘 구현되어 있기 때문에 문제의 설명에 따라 진행하기만 하면 쉽게 해결할 수 있음. 또한 list comprehension은 역시 쓸 때마다 기분이 좋아지는 문법이야.

코딩테스트 연습 - 전화번호 목록 전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다. 구조 programmers.co.kr def solution(phone_book): answer = True phone_book.sort() for i in range(len(phone_book)-1) : if phone_book[i] == phone_book[i+1][:len(phone_book[i])]: return False return answer 우선 sort 문법을 통해 배열을 앞자리 크기 순으로 정렬해준다. 그러면 ["12", "124", "1235"] -> ["12", "1235"..

10814번: 나이순 정렬 온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을 www.acmicpc.net import sys n = int(sys.stdin.readline().strip()) arr = [sys.stdin.readline().split() for i in range(n)] new_arr = sorted(arr, key=lambda x : int(x[0])) for i in new_arr : print(i[0], i[1]) sort를 나이에 대해서만 해주면 기입한 순서는 그대로 유지가 되므로 건드리지 않아도 된다. print() 구문 안에 여러 개의 원소를..

포스팅 개요 '혹시나 책에 있을 모든 실수와 오류는 온전히 제 책임이며, 책에 실린 좋은 아이디어와 표현은 모두 리뷰어님들의 조언 덕분입니다. 정말 고맙습니다.'라는 지은이의 글은 나동빈 저자님의 인품을 느낄 수 있는 한 줄이었습니다. 저도 저런 마인드를 가진 사람이 되겠다고 다짐하며 책과의 여정을 떠나보겠습니다. 포스팅 본문 정렬이란 데이터를 특정한 기준에 따라서 순서대로 나열하는 것을 말한다. 프로그램에서 데이터를 가공할 때 대부분 정렬해서 사용하는 경우가 많기에 정렬 알고리즘은 프로그램을 작성할 때 가장 많이 사용되는 알고리즘 중 하나다. 정렬을 공부하면 '알고리즘의 효율성'도 쉽게 이해할 수 있다. 면접에서도 단골 문제로 출제되니 꼭 기억해두자. 데이터를 보고 우리의 뇌는 우리도 모르게 데이터의 ..