일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- snmp test
- linux시간으로 변경
- selinux port 등록
- python subprocess
- c++ 정규식
- centos pyhon 설치
- 정규식 활용
- python popen
- regex_search
- 1697
- grafana dashboard
- influxdb 설치
- gcc 업데이트
- 정규식 컴파일
- subporcess path
- c3 축 없애기
- 백준
- c3 step graph
- semanage
- InfluxDB
- 정규식 문자열 출력
- g++ 업데이트
- c3 초
- gcc regex
- telegraf
- c3 축 가리기
- CentOS7
- c3 second
- snmp
- python os
- Today
- Total
목록알고리즘 (45)
리셋 되지 말자
코드 from collections import Counter def solution(arr): # Counter dict : Counter({10: 3, 3: 2, -10: 2, 6: 1, 2: 1, 7: 1}) cd = Counter(arr) input() # input : 10 9 -5 2 3 4 5 -10 keys = list(map(int, input().split())) # output : 3 0 0 1 2 0 0 2 for key in keys: print(cd[key], end=' ') input() # input : 6 3 2 10 10 10 -10 -10 7 3 arr = list(map(int, input().split())) solution(arr) Counter는 배열에서 각 원소..
코드 # 목표 갯수 : n, 나무 길이 목록 : arr def solution(n, arr): left = 1 right = max(arr) mid = right while left
코드 def solution(arr): # 덩치 등수를 저장할 배열 선언 answer = [0 for _ in range(len(arr))] # 타겟이 되는 사람 arr[i] for i in range(len(arr)): # 랭크가 0이 아닌 1부터 시작함으로 1로 초기화된 rank_cnt 선언 rank_cnt = 1 # 타겟이 되는 사람인 arr[i]와 비교할 arr[j] 순회. 자기 자신이면 패스 # 만약 타겟 arr[i]보다 덩치가 더 큰 사람이 있으면 rank_cnt + 1 for j in range(len(arr)): if j==i: continue if arr[i][0] < arr[j][0] and arr[i][1] < arr[j][1]: rank_cnt += 1 # 타겟인 arr[i]의 랭크..
코드1 - Counter만 사용 import sys from collections import Counter def solution(arr): # round : 소수점에서 반올림한 평균 출력 print(round(sum(arr)/len(arr))) # 홀수개인 원소 중, 가장 가운데 있는 원소 출력 print(arr[len(arr)//2]) # Counter : 원소값이 각각 몇개 있는지 분류 cd = Counter(arr) # 최빈값의 횟수를 저장 max_num = max(cd.values()) cnt_arr = [] # 최빈값에 해당하는 key를 cnt_arr에 저장 for key in cd.keys(): if cd[key] == max_num: cnt_arr.append(key) # 최빈값에 해당하..
코드 import sys from collections import defaultdict def solution(n): arr = [] dd = defaultdict(int) for _ in range(n): num = int(sys.stdin.readline()) dd[num] += 1 for i in range(1, 10001): if dd.get(i): for _ in range(dd.get(i)): print(i) n = int(input()) solution(n) 설명 입력 개수가 최대 1천만 이므로, sys.stdin.readline() 으로 입력 시간을 줄인다. 메모리 제한이 8MB 이므로, 배열에 모든 수를 저장하면 안된다. 그래서 defaultdict를 사용해서 1~1만 사이의 수가 각각..
코드 def solution(arr): arr.sort(key=lambda x: int(x[0])) for per in arr: print(per[0], per[1]) n = int(input()) arr = [] for i in range(n): age, name = input().split() arr.append([age, name]) solution(arr) 설명 얼핏 보면 그냥 나이순으로 정렬하면 된다. 왜냐하면 파이썬의 sort는 stable(정렬 전과 후의 순서가 보장됨)정렬이니깐 문제는 나이인 age를 int로 바꾼 뒤에 정렬해줘야 한다는 점이다. 왜냐면 '12' 와 '2'를 비교하면, 문자열은 앞자리부터 비교를 하기 때문에 '2'가 더 큰 것으로 비교가 된다. age만 int로 형변환 해준..
코드1 - gcd 사용 from math import gcd def solution(a, b): print(gcd(a, b)) print(a*b//gcd(a,b)) a, b = map(int, input().split()) solution(a, b) 코드2 - gcd, lcm 사용 from math import gcd from math import lcm def solution(a, b): print(gcd(a, b)) print(lcm(a,b)) a, b = map(int, input().split()) solution(a, b) 설명 gcd, lcm 함수 둘 다 math 패키지에서 사용할 수 있다. gcd는 3.5 때 추가됐고, lcm은 3.9 때 추가됐다.
코드1 - 반복문 def solution(n, k): answer = 0 tmp = 1 for i in range(n, n-k, -1): tmp = tmp * i answer += tmp tmp = 1 for i in range(k, 0, -1): tmp = tmp * i print(answer//tmp) n, k = map(int, input().split()) solution(n, k) 코드2 from math import factorial def solution(n, k): print(factorial(n)//(factorial(n-k)*factorial(k))) n, k = map(int, input().split()) solution(n, k) 설명 이항계수 그대로 구현하면 된다. 파이썬에서 m..