일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 투포인터
- 누적합
- 분할정복
- DFS
- BFS
- 재귀
- 플로이드-워셜
- 그래프 이론
- DP
- join
- 시뮬레이션
- 구현
- 브루트포스
- 다이나믹프로그래밍
- 우선순위큐
- 다익스트라
- 트리
- 다시
- 서브쿼리
- 다이나믹 프로그래밍
- 에라토스테네스의 체
- 그리디
- 백트래킹
- MST
- 그래프 탐색
- 크루스칼
- 수학
- 해시
- 자료구조
- GROUP BY
- Today
- Total
목록수학 (11)
기록하고 까먹지 말기

날짜 : 2023. 09. 29 사용 언어 : python 문제 코드 import sys k = int(sys.stdin.readline()) def binary(n): s = "" while n > 0: s += str(n % 2) n = n // 2 s = s[::-1] return s[1:] tmp = binary(k+1) res = "" for i in tmp: if i == "0": res += "4" else: res += "7" print(res) 풀이 - 입력받은 K에 대해 4, 7만으로 구성된 수를 만드는 과정은 다음과 같다. - (K + 1)을 2진수로 만든 후, 해당 수에서 가장 좌측의 수를 제외한 값에서 각각 0을 4로, 1을 7로 변환하여 리턴한다. 알게된 점 - 맨 처음 K에 대..

날짜 : 2023. 09. 11 사용 언어 : python 문제 코드 def solution(a, b): a.sort() b.sort(reverse=True) answer = 0 for i in range(len(a)): answer += a[i] * b[i] return answer 풀이 - 두 개의 배열 a, b를 각각 오름차순, 내림차순으로 정렬한다. - 그 다음 각각의 인덱스에 맞게 a와 b의 원소를 곱하여 더한다. 알게된 점 - 곱셈은 값이 지수방식으로 커지기 땜누에 인자를 최소한으로 만들어 주는 것이 메인이었다. - 다시 코테를 시작한 만큼 열심히 풀어야겠다. 참고 사이트 -

날짜 : 2023. 07. 27 사용 언어 : python 문제 코드 import sys n = int(sys.stdin.readline()) a = list() for _ in range(n): a.append(int(sys.stdin.readline())) t = int(round(n * 0.15 + 0.0000001)) if n == 0: print(0) exit(0) a.sort() a = a[t:n-t] s = 0 for i in a: s += i # print(a) print(int(round(s / len(a)+0.0000001))) 풀이 - 문제대로 n값이 0이 아닐 때 0.15를 곱해서 생략할 개수를 구한다. - 숫자 리스트를 정렬 후 값들을 생략한 다음 그 수들의 평균을 구하여 출력한다..

날짜 : 2023. 06. 21 사용 언어 : python 문제 코드 import sys sys.setrecursionlimit(10**9) def mul(n1, n2): # 두 행렬을 곱함 a = n1 + n2 # print("mul", n1, n2, a) if a in hash: # 이미 해시에 있는 경우 return # 리턴 # 없는 경우 -> 행렬간 곱셈 mat1 = hash[n1] mat2 = hash[n2] temp = [[0] * N for _ in range(N)] for i in range(N): # 행 for j in range(N): # 열 for k in range(N): temp[i][j] += (mat1[i][k] * mat2[k][j]) temp[i][j] = temp[i][j..

날짜 : 2023. 06. 15 사용 언어 : python 문제 코드 import sys n = int(sys.stdin.readline()) a = list(map(int, sys.stdin.readline().split())) # 숫자 입력 for i in range(n-1, 0, -1): j = i - 1 if a[j] > a[i]: # 현재 수가 앞 수보다 작은 경우 tmp = sorted(a[i:]) # 현재 수 기준으로 오름차순 정렬하는 리스트 생성 tmp.sort(reverse=True) # 내림차순 정렬 # print(tmp) for k in range(len(tmp)): if a[j] > tmp[k]: # 기준이 되는 수보다 작은 수 중에서 가장 큰 수 추출 a[j], tmp[k] = t..

날짜 : 2023. 05. 11 사용 언어 : python 문제 코드 import sys prime = [True] * 100001 # 소수면 True, 아니면 False prime[0], prime[1] = False, False for i in range(2, int(100001**0.5)+1): if prime[i]: idx = 2 while idx * i 1: #print(n) if n % d == 0: # 나누어 떨어지면 n = int(n / d) cnt += 1 else: d += 1 if prime[cnt]: return 1 else: return 0 a..

날짜 : 2023. 05. 07 사용 언어 : python 문제 코드 import sys n = int(sys.stdin.readline()) a = list() d = dict() s = 0 for _ in range(n): t = int(sys.stdin.readline()) a.append(t) s += a[-1] a.sort() # 각 수 오름차순 정렬 for i in a: if i not in d: d[i] = 1 # 각 수의 빈도수 조사 -> 딕셔너리 else: d[i] += 1 m = max(list(d.values())) # 빈도 중에서의 max 추출 temp = list() for i in d.keys(): # value가 최대값인 key 추출 if d[i] == m: temp.appen..

날짜 : 2023. 05. 06 사용 언어 : python 문제 코드 import sys prime = [True] * 1000001 # 소수면 True, 아니면 False prime[0], prime[1] = False, False p = dict() # 소수 리스트 for i in range(2, int(1000001**0.5)+1): # 에라토스테네스의 체 if prime[i]: # 소수인 경우 p[i] = True # 소수 추가 idx = 2 while i * idx < 1000001: prime[i*idx] = False idx += 1 #print(len(prime), len(p)) t = int(sys.stdin.readline()) for _ in range(t): n = int(sys.s..