분류 전체보기

1. 책 DB를 넣어주세요. 2. 나의 스터디 흔적을 사진으로 보여주세요. ​ 3. 이번 스터디에서 특별히 좋았던 점이나 어려웠던 점이 있었나요? 새로 알게된 부분이 있다면 알려주세요. ​ 데이터세트 : 데이터 전체 - 훈련 데이터 : 인공지능 학습 시 사용되는 데이터 - 평가 데이터 : 인공지능 학습이 잘 되었는지 점검할 때 쓰이는 데이터 ​ 과소 적합 : 인공지능 학습이 부족한 상태 과대 적합 : 지나치게 학습을 많이 한 상태 ​ 4. 열심히 실습한 코드를 저장해 첨부해 주시거나 자랑할만한 스크린샷이 있다면 올려주세요.
·Algorithm/BaekJoon
# 답 N, M = map(int, input().split()) matrix1 = [list(map(int, input().split())) for _ in range(N)] M, K = map(int, input().split()) matrix2 = [list(map(int, input().split())) for _ in range(M)] ans = [[0] * K for _ in range(N)] for n in range(N): for k in range(K): tot = 0 for m in range(M): tot += matrix1[n][m] * matrix2[m][k] ans[n][k] = tot for i in range(len(ans)): print(*ans[i]) # 행렬 곱셈 1. ..
·Algorithm/BaekJoon
# 문제상황 A, B, C = map(int, input().split()) def R(B): global A, C ans = 0 if B == 1: ans = A elif B % 2 == 1: ans = R(B // 2) ** 2 * A elif B % 2 == 0: ans = R(B // 2) ** 2 return ans % C print(R(B) % C) # 풀이과정 어떤 수 A를 20억번 곱해야한다고 가정해봅시다. 무식하게 A를 정말 20억번 다 곱하고 있으면 시간이 오래 걸립니다. 생각해봅시다. (A의 20억승)은 (A의 10억승)을 2번 곱한 것과 같습니다. 즉 A를 20억번 곱할 필요 없이, A를 10억번만 곱하고 그 결과를 제곱하면 연산횟수가 절반으로 줄어듭니다. 다른 예시를 생각해봅시다...
·Algorithm/BaekJoon
# 답 N, M = map(int, input().split()) a = list(map(int, input().split())) + [0] cnt = [0] * M for i in range(N): a[i] += a[i - 1] cnt[a[i] % M] += 1 ans = cnt[0] for v in cnt: ans += v * (v - 1) // 2 print(ans) # 풀이과정 1. 누적 합(p_sum)을 구한다.2. 누적 합을 m으로 나눈 나머지가 같은 것끼리 분류한다.3. 누적 합의 나머지가 같은 것들 중에서 2개를 조합한다. 이 때 뽑힌 누적합 인덱스를 각각 i와 j라고 하겠다.4. i + 1부터 j까지 구간의 구간합(j번째 누적합 - i번째 누적합)은 m으로 나누어 떨어진다.5. 단, 누적..
·Algorithm/BaekJoon
# 답 N = int(input()) print(N // 5 + N // 25 + N // 125) # 원리 0의 개수는 곧, 10이 몇 번 곱해져 있나를 세는 것. 10이 몇 번 곱해져 있느냐는 곧, 2와 5가 몇 번 곱해져 있냐는 것. 2와 5가 몇 번 곱해져 있느냐는 곧, 5가 몇 번 곱해져 있냐는 것. (2의 배수가 5의 배수보다 더 촘촘히 있다. 따라서 2의 배수는 5의 배수보다 언제나 많고, 결국 5의 개수가 10의 개수를 결정한다.) 결국 이 문제는 N! 안에 곱해져 있는 5의 개수를 구하면 된다. 생각해보자. 5! 안에는 5의 배수가 몇 개 들어있는가? 1개 들어있다.(5) 6! 안에는 5의 배수가 몇 개 들어있는가? 여전히 1개 들어있다. (5) 10!안에는 5의 배수가 몇 개 들어있는가..
·Algorithm/BaekJoon
# 답 import sys input = sys.stdin.readline N, M = map(int, input().split()) arr = [0] + list(map(int, input().split())) for i, v in enumerate(arr): if i != 0: arr[i] += arr[i - 1] for _ in range(M): i, j = map(int, input().split()) print(arr[j] - arr[i - 1]) # 원리 i번째부터 j번째까지의 구간 합을 빠르게 구하는 방법은 1) 주어진 배열을 처음부터 누적합 형태로 바꿔놓고, 2) arr[j] - arr[i - 1]하면 됩니다. 예를 들어, 다음과 같은 배열 arr1이 있다고 가정해봅시다. arr1 = [1..
·Algorithm/BaekJoon
# 답 import math N = int(input()) arr = [] G = 0 for i in range(N): arr.append(int(input())) if i == 1: G = abs(arr[1] - arr[0]) G = math.gcd(G, abs(arr[i] - arr[i - 1])) # G의 약수 구하기 ans = set([G]) for i in range(2, int(G ** 0.5) + 1): if G % i == 0: ans.add(i) ans.add(G // i) print(*sorted(list(ans))) # 원리 나누었을 때 나머지(R)를 모두 같게 만들어주는 숫자 M이 있다고 가정해봅시다. 그렇다면 각 숫자들(N)은 아래와 같이 표현할 수 있을 것입니다. N[0] = X..
·Algorithm/BaekJoon
# 답 math 라이브러리를 사용하지 않은 풀이 a, b = map(int, input().split()) def gcd(a, b): while b > 0: a, b = b, a % b return a def lcm(a, b): return a * b // gcd(a, b) print(gcd(a, b)) print(lcm(a, b)) math 라이브러리를 사용한 풀이 import math a, b = map(int, input().split()) print(math.gcd(a, b)) print(math.lcm(a, b)) # 유클리드 호제법 2개의 자연수 a, b에 대하여, a를 b로 나눈 나머지를 r이라 하면(단, a > b), a와 b의 최대공약수는 b와 r의 최대공약수와 같습니다. 이 성질에 따라..
·Algorithm/BaekJoon
# 답 Counter 라이브러리를 사용하지 않은 풀이 import sys input = sys.stdin.readline N = int(input()) arr = [int(input()) for _ in range(N)] arr.sort() d = dict() for item in arr: if item in d: d[item] += 1 else: d[item] = 1 m = 0 tmp = list() for k, v in list(d.items()): if v > m: tmp = [k] m = v elif v == m: tmp.append(k) tmp.sort() # 산술평균 print(round(sum(arr) / N)) # 중앙값 print(arr[N // 2]) # 최빈값 if len(tmp) =..
·Algorithm/BaekJoon
# 답 bisect_left 라이브러리 없이 풀기 import sys input = sys.stdin.readline N = int(input()) A = list(map(int, input().split())) LIS = [A[0]] def find_index(x): lo = 0 hi = len(LIS) - 1 while lo
innit
'분류 전체보기' 카테고리의 글 목록 (3 Page)