일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- BASIC
- graph
- String
- 종만북
- server
- programmers
- Algospot
- Python
- 생활코딩
- dfs
- 따라하면서 배우는 C언어
- C
- JavaScript
- Cleancode
- 따배씨
- web
- php
- DP
- sorting
- 따라하며 배우는 C언어
- C언어
- greedy
- Algorithm
- 인프런
- udemy
- 정수론
- BOJ
- 백준
- BFS
- Math
- Today
- Total
목록sorting (12)
몽상실현개발주의
[BOJ] 1744 / 수 묶기 / Python 파이썬 https://www.acmicpc.net/problem/1744 1744번: 수 묶기 길이가 N인 수열이 주어졌을 때, 그 수열의 합을 구하려고 한다. 하지만, 그냥 그 수열의 합을 모두 더해서 구하는 것이 아니라, 수열의 두 수를 묶으려고 한다. 어떤 수를 묶으려고 할 때, 위치에 www.acmicpc.net 풀이 양수, 1, 0, 음의 정수에 대해 구분하여 계산해 주는 문제이다. 수열의 두 수를 묶어 최대값을 만들기 위해 다음과 같은 로직을 세웠다. 수열이 양수인 경우: 큰 수 부터 2개씩 묶어 곱하기 양수에 1이 포함 된 경우: 곱했을 경우 보다 더했을 경우가 더 큰 수가 된다. 수열이 음수인 경우: 작은 수 부터 2개씩 묶어 곱하기 0: 음..
[BOJ] 11399 / ATM / Python 파이썬 https://www.acmicpc.net/problem/11399 11399번: ATM 첫째 줄에 사람의 수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어진다. (1 ≤ Pi ≤ 1,000) www.acmicpc.net 풀이 기다려하는 시간이 어떻게 counting 되는지를 먼저 생각하였더니 쉽게 해결하였다. ATM 에 다섯 사람이 대기한다고 생각해 보자 1번 : A 시간 / 2번 : B 시간 / 3번 : C 시간 / 4번 : D 시간 / 5번 : E 시간 1번부터 5번까지의 사람 순서대로 대기하였을때 counting 되는 시간은 A A+B A+B+C A+B+C+D A+B+C+D+E 가 ..
[BOJ] 1931 /회의실 배정 / Python 파이썬 https://www.acmicpc.net/problem/1931 1931번: 회의실 배정 (1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다. www.acmicpc.net 풀이 회의실을 배정 할 수 있는 경우 중 가장 좋은 조건을 선택하는 탐색 문제이다. 한번의 탐색 만으로 해답을 찾기 위해서는, 탐색을 하는 순서가 중요하다. 회의실을 예약 할 수 있는 기회가 많이 주어지는 경우는, 이전 회의가 되도록 이른시간에 종료되는 경우이다. 이른시간에 종료되는 회의 중에서도 빨리 시작하는 회의가 우선적으로 예약될 가능성이 높다. 위 두가지의 조건으로 미리 회의실 예약 시간을 정렬하여 탐색을 진행하였다. N = int(input()) ..
[BOJ] 11728 / 배열 합치기 / Python 파이썬 https://www.acmicpc.net/problem/11728 11728번: 배열 합치기 첫째 줄에 배열 A의 크기 N, 배열 B의 크기 M이 주어진다. (1 ≤ N, M ≤ 1,000,000) 둘째 줄에는 배열 A의 내용이, 셋째 줄에는 배열 B의 내용이 주어진다. 배열에 들어있는 수는 절댓값이 109보다 작거 www.acmicpc.net 풀이 주어지는 두 배열을 합쳐 정렬하는 문제이다. 파이썬에서 제공되는 sort() method 로 쉽게 해결하였다. N, M = map(int, input().split()) A = list(map(int, input().split())) B = list(map(int, input().split()))..
[BOJ] 11004 / K 번째 수 / Python https://www.acmicpc.net/problem/11004 11004번: K번째 수 수 N개 A1, A2, ..., AN이 주어진다. A를 오름차순 정렬했을 때, 앞에서부터 K번째 있는 수를 구하는 프로그램을 작성하시오. www.acmicpc.net 풀이 Python 의 정렬을 사용하면 간단히 풀리는 문제이다. import sys N, K = map(int, sys.stdin.readline().split()) nums = list(map(int, sys.stdin.readline().split())) nums.sort() print(nums[K-1])
[BOJ] 11652 / 카드 / Python 파이썬 https://www.acmicpc.net/problem/11652 11652번: 카드 준규는 숫자 카드 N장을 가지고 있다. 숫자 카드에는 정수가 하나 적혀있는데, 적혀있는 수는 -262보다 크거나 같고, 262보다 작거나 같다. 준규가 가지고 있는 카드가 주어졌을 때, 가장 많이 가지 www.acmicpc.net 풀이 중복 되는 숫자의 갯수를 처리하기 위하여 Dictionary 를 사용하였다. 그리고 조건에 맞추어 정렬하기 위하여, Dictionary 의 key 와 value 를 tuple 로 받아오는 items() method 와 Lambda 를 사용 하였다. Python Dictionary items() The items() method ret..
[BOJ] 10989 / 수 정렬하기 3 / Python 파이썬 https://www.acmicpc.net/problem/10989 10989번: 수 정렬하기 3 첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 숫자가 주어진다. 이 수는 10,000보다 작거나 같은 자연수이다. www.acmicpc.net 풀이 단순한 숫자 정렬 문제이지만, 입력값 N 의 범위가 10,000,000 까지 여서 단순히 배열에 담게되면 메모리가 초과된다. (메모리가 터져 버린다!) 입력값의 수는 많지만 숫자의 범위가 10,000보다 작거나 같은 자연수 이기 때문에 배열의 index 와 value 를 이용하여 간단히 풀 수 있다. 배열의 index 를 입력된 숫자로, valu..
[BOJ] 10825 / 국영수 / Python 파이썬 https://www.acmicpc.net/problem/10825 10825번: 국영수 첫째 줄에 도현이네 반의 학생의 수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 한 줄에 하나씩 각 학생의 이름, 국어, 영어, 수학 점수가 공백으로 구분해 주어진다. 점수는 1보다 크거나 같고, 1 www.acmicpc.net 풀이 이전 정렬 문제보다 조금 더 복잡한 조건으로 정렬하는 문제이다. 이 문제 또한 lambda 를 이용하여 정렬 조건을 만든후, sort() 에 대입해 주면 간단히 풀 수 있다. import sys N = int(sys.stdin.readline()) studentWithScore = [] for _ in range(N..