본문 바로가기

알고리즘/정렬13

[Python] 백준 11497 - 통나무 건너뛰기 🧑‍💻 백준 11497 - 통나무 건너뛰기 Silver 1 - 정렬 인접한 통나무 높이의 차를 최소화 하는 문제다 여기서 제일 중요한 것은 통나무를 원형으로 세워 놓는 것이라서, 제일 앞과 제일 뒤에 있는 숫자도 높이의 차에 포함을 해야 한다 즉 단순히 정렬을 하게 된다면, 제일 앞에 있는 숫자와 제일 뒤에 있는 숫자의 차가 제일 커서, 답을 구할 수 없다 예시) 문제 풀이 먼저 정렬을 해야 하긴 한다 (오름차순으로 정렬을 했다) For문을 순회할 때 Index가 짝수 일 때 현재 index에서 빼기를 한다 index를 빼는 것은 0으로 시작해서, 뺄 때마다 -1 씩 누적을 시킨다 For문을 순회할 때 Index가 홀수 일 때 현재 index에서 같이 빼기를 한다 index를 빼는 것은 -2로 시작해서,.. 2023. 1. 4.
[Python] 백준 2108 - 통계학 🧑‍💻 백준 2108 - 통계학 Silver 3 - 정렬 산술과 딕셔너리를 주로 사용하면 쉽게 풀 수 있는 문제다 문제에서 구하라는 산술평균, 중앙값, 최빈값, 범위를 구하면 된다 산술평균은, 주어진 값들을 전부 더하고, 더한 값에서 주어신 숫자들의 수로 나누면 된다 중앙값은, 주어진 숫자들 중 중앙에 배치된 숫자를 구한다 (오름차순으로 정렬을 해야 한다) 최빈값은 중복 숫자가 제일 많은 숫자를 구한다. 만약에 2개 이상이 나오면, 중복 숫자가 많은 숫자들 중 2번째로 작은 숫자를 구한다 범위는 숫자들 중 최댓값과 최솟값의 차이를 구한다 예시) 문제 풀이 N이라는 숫자들의 개수를 준다 산술평균 숫자들을 sum을 이용해서 더해주고, N으로 나눈다 중앙값 오름차순으로 숫자들을 정렬하고, N을 2로 나눈다 그.. 2023. 1. 3.
[Python] 백준 1744 - 수 묶기 🧑‍💻 백준 1744 - 수 묶기 GOLD 4 주어진 숫자들을 더해서 제일 큰 수를 만드는 것 숫자들을 2개씩 묶어서 곱할 수 있다 즉 큰 숫자들끼리 묶어서 곱하면, 합을 최대로 만들 수 있다 문제 풀이 주어진 숫자들을 리스트에 넣을 때에, 양수 리스트와 음수 리스트에 따로따로 넣는다 즉 리스트가 2개다. 여기서 0 은 음수 리스트에 넣는다 양수 리스트는 내림차순으로 / 음수 리스트는 오른차순으로 정렬을 한다 deque를 사용한다 이유는 제일 앞에 있는 숫자들을 pop을 해야하는데, pop은 리스트에 있는 제일 마지막 숫자를 꺼낸다 첫번째 숫자를 빠른 속도록 꺼내기 위해서 popleft를 사용해야하는데, deque를 적용해야 사용할 수 있음 while문을 통해 양수 리스트와 음수 리스트에 있는 숫자 꺼내.. 2023. 1. 1.
[Python] 백준 5052 - 전화번호 목록 🧑‍💻 백준 5052 - 전화번호 목록 GOLD 4 - 정렬 접두어가 있으면 NO를 출력하고 없으면 YES를 출력하는 문제 여기서 접두어(Prefix)란? 어떤 단어 또는 숫자 앞에 새로운 단어 또는 숫자가 되는 것 예시) 문제 풀이 숫자들을 integer로 입력을 받아오는 것이 아닌, 문자열로 불러온다 숫자의 원래 크기가 중요한 것이 아닌, 문자열에 있는 앞의 숫자들이 문자열을 비교할 때에 일치가 하는지가 중요하다! 숫자들을 정렬을 시킨다 문제의 예시를 정렬하게 된다면 '911', '97625999', '91125426' ▶️ ['911', '91125426', '97625999'] '113', '12340', '123440', '12345', '98346' ▶️ ['113', '12340', '123.. 2022. 12. 29.