목록정렬 (15)
라떼는말이야
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cEw4Lt/btree5gC4WT/Ok1vDpaBcSdCuw3R8h6xok/img.png)
캡처를 좀 늦게했지만 8번째로 풀이했습니다!! 1~2단계 수준인 것 같은데 확실히 저번 주 문제보다 쉬웠고, 사람들의 풀이도 빠르네요 [다른 사람 풀이]에서 MANGBAAM을 발견하면 추천 한 번씩 눌러주세요..ㅎ ※ 전체 소스코드는 가장 밑에 있습니다. 문제 설명 개발자가 사용하는 언어와 언어 선호도를 입력하면 그에 맞는 직업군을 추천해주는 알고리즘을 개발하려고 합니다. 아래 표는 5개 직업군 별로 많이 사용하는 5개 언어에 직업군 언어 점수를 부여한 표입니다. 예를 들면, SQL의 SI 직업군 언어 점수는 3점이지만 CONTENTS 직업군 언어 점수는 2점입니다. SQL의 HARDWARE, PORTAL, GAME 직업군 언어 점수는 0점입니다. 직업군 언어 점수를 정리한 문자열 배열 table, 개발..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/dt4EhC/btrcIVU70ky/hn5HycgcV5lOb0dI0s6dW1/img.gif)
계수 정렬은 특정한 조건에서 가능한 정렬 알고리즘이다. 특정한 조건만 만족한다면 현존하는 정렬 알고리즘 중 기수 정렬과 더불어 가장 빠른 알고리즘 중 하나이다. 계수 정렬의 시간 복잡도는 무려 O(N + K)이다. (N: 데이터의 개수, K: 데이터 중 최대값) 계수 정렬의 조건 데이터의 크기 범위가 제한된 경우 ex) 0 ~ 100 까지의 점수를 정렬하는 경우 데이터가 양의 정수인 경우 데이터가 실수인 경우 무한의 범위를 가질 수 있으므로 1번 조건에 부합하지 못함 가장 큰 데이터와 가장 작은 데이터의 차이가 1,000,000을 넘지 않는 경우 필수적인 조건은 아니지만 차이가 클 수록 메모리의 사용이 많아짐 계수 정렬의 정렬 방법 계수 정렬은 버블 정렬, 병합 정렬, 선택 정렬, 삽입 정렬, 퀵 정렬 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/D6OLm/btrcStoubdL/2PsOPMqHXDmfGu634VL4DK/img.gif)
퀵 정렬은 이름에서 알 수 있듯이 정렬 알고리즘 중 속도가 빠른 알고리즘이다. 이해가 쉽고 간단한 정렬 알고리즘인 선택 정렬과 삽입 정렬의 시간 복잡도가 O(N^2) 인 것에 비해 퀵 정렬의 평균 시간 복잡도는 O(NlogN)이다. 아이디어는 다음과 같다. 기준이 되는 데이터인 pivot을 하나 선택한다. 일반적으로 가장 많이 사용되는 것은 주어진 array의 첫 번째 요소이다. (array[0]) pivot을 기준으로 pivot 보다 작은 데이터와 pivot보다 큰 데이터로 구분한다. pivot을 pivot보다 작은 데이터와 pivot보다 큰 데이터 사이에 위치시키면 pivot의 위치가 결정된다. [pivot 이하] [pivot] [pivot 초과] pivot보다 작은 데이터와 pivot보다 큰 데이터..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/HLSka/btrcExeoiEQ/iVTFCznFQgiCsg6D4Djc9k/img.png)
문제 설명 H-Index는 과학자의 생산성과 영향력을 나타내는 지표입니다. 어느 과학자의 H-Index를 나타내는 값인 h를 구하려고 합니다. 위키백과1에 따르면, H-Index는 다음과 같이 구합니다. 어떤 과학자가 발표한 논문 n편 중, h번 이상 인용된 논문이 h편 이상이고 나머지 논문이 h번 이하 인용되었다면 h의 최댓값이 이 과학자의 H-Index입니다. 어떤 과학자가 발표한 논문의 인용 횟수를 담은 배열 citations가 매개변수로 주어질 때, 이 과학자의 H-Index를 return 하도록 solution 함수를 작성해주세요. 제한사항 과학자가 발표한 논문의 수는 1편 이상 1,000편 이하입니다. 논문별 인용 횟수는 0회 이상 10,000회 이하입니다. 입출력 예 입출력 예 설명 이 과학..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/coDcWD/btrcA3kpGMY/UEvkMwX8gSftfGh2j4bFS0/img.png)
문제 설명 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 수는 6210입니다. 0 또는 양의 정수가 담긴 배열 numbers가 매개변수로 주어질 때, 순서를 재배치하여 만들 수 있는 가장 큰 수를 문자열로 바꾸어 return 하도록 solution 함수를 작성해주세요. 제한 사항 numbers의 길이는 1 이상 100,000 이하입니다. numbers의 원소는 0 이상 1,000 이하입니다. 정답이 너무 클 수 있으니 문자열로 바꾸어 return 합니다. 입출력 예 나의 풀이 여러 시도를 해보았는데 생각보다..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/b5KcUN/btq7PTUbUpj/LhWODkIpok9x1BlAmklDg0/img.png)
문제 설명 문자열 s에 나타나는 문자를 큰것부터 작은 순으로 정렬해 새로운 문자열을 리턴하는 함수, solution을 완성해주세요. s는 영문 대소문자로만 구성되어 있으며, 대문자는 소문자보다 작은 것으로 간주합니다. 제한 사항 str은 길이 1 이상인 문자열입니다. 입출력 예 나의 풀이 def solution(s): return ''.join(sorted(list(s), reverse = True)) 문자열을 리스트로 저장한 후 sorted(list, reverse=True) 함수로 내림차순으로 정렬한다. 이 결과로 나온 리스트를 ''.join으로 하나의 문자열로 만들어 return 한다. 대문자는 소문자보다 ASCII 값이 작다. 그렇기 때문에 위 방법으로 정렬했을 때 대문자가 뒤로 간다. (내림차순)
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/wTZT9/btq7QwYM0zV/9hZcBDMXO93yiMYjMFKd8k/img.png)
문제 설명 함수 solution은 정수 n을 매개변수로 입력받습니다. n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요. 예를들어 n이 118372면 873211을 리턴하면 됩니다. 제한 조건 n은 1이상 8000000000 이하인 자연수입니다. 입출력 예 나의 풀이 def solution(n): answer = sorted(list(str(n)), reverse=True) return int(''.join(answer)) 입력 받은 정수 n을 str() 함수에 넣어서 문자열로 만들어준 후 list() 함수에 넣어서 리스트로 만든다. 그리고 만들어진 list를 sorted 함수에 넣고, reverse = True로 옵션을 주면 내림차순으로 정렬된 리스트를 반환한다. 반환된 리스트를..