diff --git a/janghw0126/README.md b/janghw0126/README.md index fe3d2ba6..9447f03e 100644 --- a/janghw0126/README.md +++ b/janghw0126/README.md @@ -2,24 +2,26 @@ | 차시 | 날짜 | 문제유형 | 링크 | 풀이 | |:----:|:---------:|:----:|:-----:|:----:| -| 1차시 | 2024.1.1 | Hash | 완주하지 못한 선수 |[#4](https://github.com/AlgoLeadMe/AlgoLeadMe-4/pull/4) | -| 2차시 | 2024.1.4 | Implementation | 단어의 개수 |[#9](https://github.com/AlgoLeadMe/AlgoLeadMe-4/pull/9) | -| 3차시 | 2024.1.7 | Implementation | 단어 공부 |[#13](https://github.com/AlgoLeadMe/AlgoLeadMe-4/pull/13) | -| 4차시 | 2024.1.10 | Implementation | 달팽이는 올라가고 싶다 |[#20](https://github.com/AlgoLeadMe/AlgoLeadMe-4/pull/20) | -| 5차시 | 2024.1.13 | Mathematics | 소수 |[#24](https://github.com/AlgoLeadMe/AlgoLeadMe-4/pull/24) | -| 6차시 | 2024.1.16 | Stack | 스택 2 |[#26](https://github.com/AlgoLeadMe/AlgoLeadMe-4/pull/26) | -| 7차시 | 2024.1.19 | Stack | 괄호 |[#30](https://github.com/AlgoLeadMe/AlgoLeadMe-4/pull/30) | -| 8차시 | 2024.1.23 | Stack | 스택 수열 |[#36](https://github.com/AlgoLeadMe/AlgoLeadMe-4/pull/36) | -| 9차시 | 2024.1.25 | Stack | 균형잡힌 세상 |[#40](https://github.com/AlgoLeadMe/AlgoLeadMe-4/pull/40) | -| 10차시 | 2024.1.28 | Queue | |[#42](https://github.com/AlgoLeadMe/AlgoLeadMe-4/pull/42) | -| 11차시 | 2024.2.1 | Queue | 프린터 큐 |[#48](https://github.com/AlgoLeadMe/AlgoLeadMe-4/pull/48) | +| 1차시 | 2024.1.1 | 해시 | 완주하지 못한 선수 |[#4](https://github.com/AlgoLeadMe/AlgoLeadMe-4/pull/4) | +| 2차시 | 2024.1.4 | 구현 | 단어의 개수 |[#9](https://github.com/AlgoLeadMe/AlgoLeadMe-4/pull/9) | +| 3차시 | 2024.1.7 | 구현 | 단어 공부 |[#13](https://github.com/AlgoLeadMe/AlgoLeadMe-4/pull/13) | +| 4차시 | 2024.1.10 | 구현 | 달팽이는 올라가고 싶다 |[#20](https://github.com/AlgoLeadMe/AlgoLeadMe-4/pull/20) | +| 5차시 | 2024.1.13 | 수학 | 소수 |[#24](https://github.com/AlgoLeadMe/AlgoLeadMe-4/pull/24) | +| 6차시 | 2024.1.16 | 스택 | 스택 2 |[#26](https://github.com/AlgoLeadMe/AlgoLeadMe-4/pull/26) | +| 7차시 | 2024.1.19 | 스택 | 괄호 |[#30](https://github.com/AlgoLeadMe/AlgoLeadMe-4/pull/30) | +| 8차시 | 2024.1.23 | 스택 | 스택 수열 |[#36](https://github.com/AlgoLeadMe/AlgoLeadMe-4/pull/36) | +| 9차시 | 2024.1.25 | 스택 | 균형잡힌 세상 |[#40](https://github.com/AlgoLeadMe/AlgoLeadMe-4/pull/40) | +| 10차시 | 2024.1.28 | 큐 | |[#42](https://github.com/AlgoLeadMe/AlgoLeadMe-4/pull/42) | +| 11차시 | 2024.2.1 | 큐 | 프린터 큐 |[#48](https://github.com/AlgoLeadMe/AlgoLeadMe-4/pull/48) | | 12차시 | 2024.2.4 | DFS | 빵집 |[#53](https://github.com/AlgoLeadMe/AlgoLeadMe-4/pull/53) | | 13차시 | 2024.2.7 | DFS | 바이러스 |[#57](https://github.com/AlgoLeadMe/AlgoLeadMe-4/pull/57) | -| 14차시 | 2024.2.12 | Backtracking | N과 M (1) |[#61](https://github.com/AlgoLeadMe/AlgoLeadMe-4/pull/61) | -| 15차시 | 2024.2.15 | Backtracking | N과 M (2) |[#65](https://github.com/AlgoLeadMe/AlgoLeadMe-4/pull/65) | -| 16차시 | 2024.2.18 | Backtracking | N과 M (5) |[#66](https://github.com/AlgoLeadMe/AlgoLeadMe-4/pull/66) | -| 17차시 | 2024.2.21 | Backtracking | N과 M (3) |[#72](https://github.com/AlgoLeadMe/AlgoLeadMe-4/pull/72) | -| 18차시 | 2024.2.24 | Greedy | 잃어버린 괄호 |[#77](https://github.com/AlgoLeadMe/AlgoLeadMe-4/pull/77) | -| 19차시 | 2024.2.27 | Binary Search | 선분 위의 점 |[#79](https://github.com/AlgoLeadMe/AlgoLeadMe-4/pull/79) | -| 20차시 | 2024.3.2 | Binary Search | 수 찾기 |[#85](https://github.com/AlgoLeadMe/AlgoLeadMe-4/pull/85) | +| 14차시 | 2024.2.12 | 백트래킹 | N과 M (1) |[#61](https://github.com/AlgoLeadMe/AlgoLeadMe-4/pull/61) | +| 15차시 | 2024.2.15 | 백트래킹 | N과 M (2) |[#65](https://github.com/AlgoLeadMe/AlgoLeadMe-4/pull/65) | +| 16차시 | 2024.2.18 | 백트래킹 | N과 M (5) |[#66](https://github.com/AlgoLeadMe/AlgoLeadMe-4/pull/66) | +| 17차시 | 2024.2.21 | 백트래킹 | N과 M (3) |[#72](https://github.com/AlgoLeadMe/AlgoLeadMe-4/pull/72) | +| 18차시 | 2024.2.24 | 그리디 | 잃어버린 괄호 |[#77](https://github.com/AlgoLeadMe/AlgoLeadMe-4/pull/77) | +| 19차시 | 2024.2.27 | 이진 탐색 | 선분 위의 점 |[#79](https://github.com/AlgoLeadMe/AlgoLeadMe-4/pull/79) | +| 20차시 | 2024.3.2 | 이진 탐색 | 수 찾기 |[#85](https://github.com/AlgoLeadMe/AlgoLeadMe-4/pull/85) | +| 21차시 | 2024.3.5 | 정수론 | 약수의 합 |[#89](https://github.com/AlgoLeadMe/AlgoLeadMe-4/pull/89) | +| 22차시 | 2024.3.8 | 분할 정복 | 종이의 개수 |[#91](https://github.com/AlgoLeadMe/AlgoLeadMe-4/pull/91) | --- diff --git "a/janghw0126/\353\266\204\355\225\240 \354\240\225\353\263\265/Divide and Conquer_1.py" "b/janghw0126/\353\266\204\355\225\240 \354\240\225\353\263\265/Divide and Conquer_1.py" new file mode 100644 index 00000000..7bfe1530 --- /dev/null +++ "b/janghw0126/\353\266\204\355\225\240 \354\240\225\353\263\265/Divide and Conquer_1.py" @@ -0,0 +1,40 @@ +import sys +input= sys.stdin.readline +# 재귀를 사용하기 위해 최대 깊이를 설정해준다. +sys.setrecursionlimit(1000) + +# N을 입력받는다. +n=int(input()) + +# N개의 정수들을 행렬로 입력받는다. +matrix=[list(map(int,input().split())) for _ in range(n)] + +# 종이의 갯수를 저장하는 리스트를 초기화한다. +cnt=[] + +# 분할 정복을 시작한다. +def divide(x,y,n): + # 현재 구간의 색깔을 저장한다. + color=matrix[x][y] + # 현재 구간 내의 모든 정수들을 반복하면서 색깔이 같은지 확인한다. + for i in range(x,x+n): + for j in range(y,y+n): + # 색깔이 다른 경우 구간을 9개로 나누어 재귀적으로 divide 함수를 호출한다. + if color != matrix[i][j]: + # 9구간으로 나누기 위해 a와 b를 0부터 2까지 반복한다. + for a in range(3): + for b in range(3): + # 현재 구간을 9개의 작은 구간으로 분할하기 위해 divide 함수를 재귀 호출한다. + divide(x+(n//3)*a,y+(n//3)*b,n//3) + return + # 색깔에 따라서 갯수를 추가해준다. + if color==1: + cnt.append(1) + elif color==-1: + cnt.append(-1) + else: + cnt.append(0) + +divide(0,0,n) +# 종이의 갯수를 출력한다. +print(cnt.count(-1),cnt.count(0),cnt.count(1),sep="\n") \ No newline at end of file diff --git "a/janghw0126/\354\240\225\354\210\230\353\241\240/number theory_1.py" "b/janghw0126/\354\240\225\354\210\230\353\241\240/number theory_1.py" new file mode 100644 index 00000000..0c9215b7 --- /dev/null +++ "b/janghw0126/\354\240\225\354\210\230\353\241\240/number theory_1.py" @@ -0,0 +1,25 @@ +MAX = 1000000 +# 각 숫자의 약수의 합을 저장하는 리스트를 선언한다. +dp = [1] * (MAX + 1) +# dp 리스트의 누적 합을 저장하는 리스트를 선언한다. +s = [0] * (MAX + 1) +# 2부터 MAX까지의 수에 대해 반복문을 실행한다. +for i in range(2, MAX + 1): + j = 1 + # 각 숫자 i에 대해 i의 배수들을 찾아가며 dp 리스트의 값을 업데이트한다. + while i * j <= MAX: + # 예를 들어 i가 2일 경우 dp[2], dp[4], dp[6], ... 등을 i만큼 증가시긴다. + dp[i * j] += i + j+=1 +# 1부터 MAX까지의 숫자에 대해 s 리스트를 누적합으로 계산한다. +for i in range(1, MAX + 1): + s[i] = s[i-1] + dp[i] +iter = int(input()) +ans = [] +for k in range(iter): + # 입력으로 들어오는 iter 횟수만큼 반복문을 실행하면서 n 값을 입력받는다. + n = int(input()) + # s[n] 값을 ans 리스트에 추가한다. + ans.append(s[n]) +# ans 리스트의 값을 줄바꿈으로 구분하여 출력한다. +print('\n'.join(map(str,ans)) + '\n') \ No newline at end of file