본문 바로가기

Sort6

itemgetter 사용하기 sort문제를 풀 때 key=lambda x:x[1] 이런식으로 풀었었는데 내 기준으로 이것보다 간단한 itemgetter 를 알게되었다. from operator import itemgetter를 써주면 사용할 수 있다. from operator import itemgetter data = [ ("gg", 25, 11), ("sd", 342, 972), ("aa", 36, 616), ("td", 16, 234), ("oi", 95, 435) ] data.sort(key=itemgetter(0)) print(data) #[('aa', 36, 616), ('gg', 25, 11), ('oi', 95, 435), ('sd', 342, 972), ('td', 16, 234)] from operator impo.. 2020. 5. 31.
2751번 수 정렬하기2 문제 출처 : https://www.acmicpc.net/problem/2751 2751번: 수 정렬하기 2 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 숫자가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. www.acmicpc.net import sys N=int(input()) M=[] for i in range(N): M.append(int(sys.stdin.readline())) M.sort() for i in M: print(i) 이전 포스팅에서 말했던 sys를 사용했다! 2020. 5. 30.
2750번 수 정렬하기 문제 출처 : https://www.acmicpc.net/problem/2750 2750번: 수 정렬하기 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 숫자가 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. www.acmicpc.net N=int(input()) M=[] for i in range(N): M.append(int(input())) M.sort() for i in M: print(i) 간단한 정렬문제인데 일반적인 input()보다는 sys.stdin.readline()이 시간적으로 더 빠를것이다..! 2020. 5. 30.
나누어 떨어지는 숫자 배열 문제 출처 : https://programmers.co.kr/learn/courses/30/lessons/12910 array의 각 element 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수를 작성해야하고, divisor로 나누어 떨어지는 element가 하나도 없다면 배열에 -1을 담아 반환해야한다. 먼저 for문으로 arr를 돌아가면서 if문을 이용해 divisor로 나누어지면 새로 생성한 answer에 삽입해준다. 그리고 나누어 떨어지는 element가 하나도 없으면 answer의 길이는 0이 되기 때문에 -1를 삽입해준다. 마지막으로 answer을 정렬해서 반환해주도록 한다. def solution(arr, divisor): answer = [] for i i.. 2020. 5. 5.
sorted()와 sort()의 차이 python에서 정렬 문제가 자주 나오고 다른 종류의 문제에서도 정렬이 자주 쓰인다. 여기서 sorted()와 sort()가 쓰이는데 이 두 방법의 차이점은 무엇일까? 먼저, 예시로 설명하자면 a=[3,6,1,4,7] b=sorted(a) print(b) #[1, 3, 4, 6, 7] a=[3,6,1,4,7] a.sort() print(a) #[1, 3, 4, 6, 7] 이렇게 된다. 결과는 당연히 같다. sorted()는 원래의 list는 원래대로 놔두고, 한번 더 list를 가져와 정렬한다. sort()는 원래의 list내에서 정렬이 되는 것이라고 생각하면 된다..! 따라서, sorted()는 메모리 사용량을 두배로 늘어난다고 보면 되고, 속도는 sort()가 빠르다. 때때로 원래의 list를 사용해.. 2020. 5. 3.
K번째수 문제 출처 : https://programmers.co.kr/learn/courses/30/lessons/42748 처음엔 result에 append 하는 부분을 잘못 잡아 에러가 났지만 list범위를 다시 생각해보고 추가하니 성공할 수 있었다. for문을 여러번 돌려 시간 초과가 될 수 있으니 다른 방법을 찾아봐야겠다..! def solution(array, commands): answer = [] result=[] for i in commands: answer.append(array[i[0]-1:i[1]]) for i in answer: i.sort() for i in range(len(answer)): result.append(answer[i][commands[i][2]-1]) return resu.. 2020. 5. 3.