1. .sort() 메서드, sorted() 함수
- .sort() 메서드 : 메모리 공간 절약을 위해 시퀀스를 제자리에서 수정하여 효율적
정렬된 시퀀스를 반환하지 않음
key와 reverse 두 개의 인자를 받음
(reverse=True) 내림차순 정렬
- sorted() 함수 : sort() 메서드와 다르게 정렬된 객체를 반환함
iterable 객체, key, reverse의 인자를 받음
c = [5, 4, 3, 2, 1]
print(f'sorted 함수: {sorted(c)}', f'원본: {c}', sep='\n')
c.sort()
print(f'sort 메서드: {c}')
2. %d %f %s %x %o 포맷팅
num_1 = 15
num_2 = 3.0
str_1 = 'abc'
print('숫자 1 : %d'%num_1) # 정수
print('숫자 2 : %f'%num_2) # 실수
print('문자열 : %s'%str_1) # 문자열
print('16진수 : %x'%num_1) # 16진수(소문자), %X는 대문자
print('8진수 : %o'%num_1) # 8진수
# 문자열이 끝나는 부분에 %로 어떤 변수에 저장된 값을 가져올지 지정
# 결과
# 숫자 1 : 15
# 숫자 2 : 3.000000
# 문자열 : abc
# 16진수 : f
# 8진수 : 17
#-------------------------------------#
print('%d' % (423))
print('{}'.format(423))
print('%4d' % (423))
print('{:4d}'.format(423))
c = 1
d = 2
print(f'%{c} : {d}')
# 결과
# 423
# 423
# 423
# 423
#%1 : 2
출처: https://blog.naver.com/hjy5405/222607731596,
https://blog.naver.com/senatomatoma/222218127406
3. random 모듈
random.randint(정수 몇부터, 몇까지),
random.randrange() : 범위 내의 정수를 반환
random.random() : 0.0에서 1.0 사이의 실수 중에서 난수 반환,
random.uniform(몇부터, 몇까지) : 실수 반환,
random.shuffle(),
random.choice(),
random.sample(매개변수, 몇 개 뽑을지)
출처 : https://blog.naver.com/jsm6616/222586366648
4. 중복된 인자를 제거한 set() 자료구조는 sort 기능이 없기 때문에 먼저 list로 만들어 주어야 한다.
(나는 list로 변환 안 하고 그냥 sorted() 사용함)
5. 경우의 수가 얼마나 될지 모르므로, 뽑아야 하는 숫자만큼의 for문을 중복으로 돌리면 된다(Ver. 3).
현수는 1부터 100 사이의 자연수가 적힌 N장의 카드를 가지고 있습니다.
같은 숫자의 카드가 여러 장 있을 수 있습니다.
현수는 이 중 3장을 뽑아 각 카드에 적힌 수를 합한 값을 기록하려고 합니다.
3장을 뽑을 수 있는 모든 경우를 기록합니다. 기록한 값 중 K번째로 큰 수를 출력하는 프로그램을 작성하세요.
# Ver. 1
import random
N, K = map(int, input().split())
cards = list(map(int, input().split()))
nums = []
for i in range(100000):
a = sum(random.sample(cards, 3))
if a in nums: # 중복 제거
pass
else:
nums.append(a)
# nums = sorted(set(nums)) # 중복 제거 후 오름차순으로 나열
nums = sorted(nums)
# print(nums)
# print('정답 %d,' % nums[-K], '경우의 수 %d개' % len(nums))
print(nums[-K])
#-----------------------------------------------------------#
# Ver. 2
import random
N, K = map(int, input().split())
cards = list(map(int, input().split()))
nums = set()
for i in range(100000):
a = sum(random.sample(cards, 3))
nums.add(a)
nums = sorted(nums)
print(nums[-K])
#-----------------------------------------------------------#
# Ver. 3
N, K = map(int, input().split())
cards = list(map(int, input().split()))
nums = set()
for i in range(N):
for j in range(i+1, N):
for l in range(j+1, N):
nums.add(cards[i]+cards[j]+cards[l])
nums = list(nums)
nums.sort(reverse=True)
print(nums[K-1])
# 혹은
# nums = sorted(nums)
# print(nums[-K])
# input : 10 3
# cards : 13 15 34 23 45 65 33 11 26 42
# [39, 47, 49, 50, 51, 52, 54, 57, 58, 59, 60, 61, 62, 64, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 78, 79, 80, 81, 82, 83, 84, 86, 87, 88, 89, 90, 91, 92, 93, 94, 98, 99, 100, 101, 102, 103, 104, 105, 106, 109, 110, 111, 112, 113, 114, 118, 120, 121, 122, 123, 124, 125, 130, 132, 133, 136, 140, 141, 143, 144, 152]
# 정답 143, 경우의 수 72개
6. 무한대값
변수 = float('inf')
'개인 공부' 카테고리의 다른 글
7/19 화_RPA, 코딩 테스트 연습(Python) (0) | 2022.07.20 |
---|---|
7/17 일_코딩 테스트 연습(Python) (0) | 2022.07.17 |
6/22 수_리눅스 명령어 모음 (0) | 2022.06.22 |
6/21 화_PyTorch Hub, YOLOv5 Inference Settings, Non-Maximum Suppression(NMS) (0) | 2022.06.21 |
6/20 월_IOPub message rate (0) | 2022.06.20 |