본문 바로가기
[Python] Sorted()에서 key 정렬 기준에 따라 속도가 달라지는 이유 Python sorted()와 key 정렬기준 최적화 과정 1. 들어가기에 앞서들어가기에 앞서 말하자면 이 글은 가설을 세우고 다시 정정하는 과정을 담고 있다. 따라서 가설이 맞다고 생각하면서 읽기보다는, 그 과정에서 어떤 오류가 있었는지를 살펴보면 더 유용할 것이다. 2. sorted()에서 같은 정렬 기준을 사용했는데, 실행 속도가 다르다코딩 테스트 문제 리트코드937 - 로그 파일 재정렬을 풀다가 예상보다 정렬 속도가 느리게 나오는 경우를 발견했다. 교재에 있는 답안을 그대로 제출했더니 전체 제출된 답안의 런타임 중에 좌측과 같은 분포가 나타났고, 그 후 다른 답안을 참고하여 sorted()의 key 파라미터를 수정하여 제출했더니 우측의 분포가 나타났다.내가 참고한 교재에서는 정렬 시 아래와 같은 .. 2025. 3. 16.
[프로그래머스][예산] 정렬을 이용한 풀이 https://school.programmers.co.kr/learn/courses/30/lessons/12982 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제에 대한 이해: 각 부서에 지원할 수 있는 전체 예산 금액 budget 이 정해져 있다. 정해진 금액 budget과 부서별로 필요한 예산이 담긴 배열 d가 주어질 때, 예산 한도 내에서 지원할 수 있는 최대 부서의 수를 구하라. 이 문제를 정리하는 이유: 부서별 필요 예산이 담긴 d를 오름차순으로 정렬하기만 하면 매우 쉽게 풀 수 있는 문제를 또 DFS로 풀려고 했다. 지원할 수 있는 부서의 .. 2023. 1. 23.
[백준][14888][Python] 파이썬에서 음수 나눗셈에 대해, // https://www.acmicpc.net/problem/14888 14888번: 연산자 끼워넣기 첫째 줄에 수의 개수 N(2 ≤ N ≤ 11)가 주어진다. 둘째 줄에는 A1, A2, ..., AN이 주어진다. (1 ≤ Ai ≤ 100) 셋째 줄에는 합이 N-1인 4개의 정수가 주어지는데, 차례대로 덧셈(+)의 개수, 뺄셈(-)의 개수, www.acmicpc.net 문제 자체는 평이하며 브루트포스와 백트랙킹을 활용하면 풀 수 있다. 이 포스팅에서는 문제 자체에 대한 풀이는 다루지 않도록 한다. 이 문제를 따로 포스팅하는 이유는 파이썬의 나눗셈 연산에 대한 의문을 해소하기 위해서이다. 위의 문제는 숫자들을 사칙연산을 해야 하는데 더하기, 빼기, 곱하기는 +, -, * 와 같이 익히 알고 있는 연산자를 쓰면.. 2023. 1. 12.
[코드업 문제풀이] 6098 : [기초-리스트] 성실한 개미 코드업 파이썬 기초 알고리즘 문제 100제 중에서 6098번에 대한 풀이이다. 100제 끝. import sys d = [[int(x) for x in sys.stdin.readline().rstrip().split()] for y in range(10)] d[1][1] = 9 i = 1 j = 1 while j < 9: if d[i][j+1] == 0: d[i][j+1] = 9 j += 1 elif d[i][j+1] == 1: if d[i+1][j] == 1: break elif d[i+1][j] == 2: d[i+1][j] = 9 break else: d[i + 1][j] = 9 i += 1 elif d[i][j+1] == 2: d[i][j+1] = 9 break; else: d[j][i+1] = 9.. 2022. 2. 20.
[코드업 문제풀이] 6097 : [기초-리스트] 설탕과자 뽑기 코드업 파이썬 기초 알고리즘 문제 100제 중에서 6097번에 대한 풀이이다. t, d = map(int, input().split()) dimension = [[0 for x in range(d)] for y in range(t)] n = int(input()) location = [[int(x) for x in input().split()] for i in range(n)] for xy in location: l = xy[0] d = xy[1] x = xy[2] - 1 y = xy[3] - 1 if d == 0: for v in range(l): dimension[x][y + v] = 1 else: for v in range(l): dimension[x + v][y] = 1 for i in dimen.. 2022. 2. 19.