diff --git "a/Seol-Munhyeok/.cph/.\354\240\234\352\263\261\354\210\230\354\260\276\352\270\260.py_ea7559ebea594486c87e81b9ee32f04b.prob" "b/Seol-Munhyeok/.cph/.\354\240\234\352\263\261\354\210\230\354\260\276\352\270\260.py_ea7559ebea594486c87e81b9ee32f04b.prob" new file mode 100644 index 0000000..48038c1 --- /dev/null +++ "b/Seol-Munhyeok/.cph/.\354\240\234\352\263\261\354\210\230\354\260\276\352\270\260.py_ea7559ebea594486c87e81b9ee32f04b.prob" @@ -0,0 +1 @@ +{"name":"Local: 제곱수찾기","url":"d:\\AlgoLeadME-15\\AlgoLeadMe-15\\Seol-Munhyeok\\제곱수찾기.py","tests":[{"id":1755608679338,"input":"2 3\n123\n456","output":"64"},{"id":1755610569758,"input":"9 9\n257240281\n197510846\n014345401\n035562575\n974935632\n865865933\n684684987\n768934659\n287493867","output":"95481"},{"id":1755613365657,"input":"1 1\n1","output":""},{"id":1755613442978,"input":"1 2\n12","output":""}],"interactive":false,"memoryLimit":1024,"timeLimit":3000,"srcPath":"d:\\AlgoLeadME-15\\AlgoLeadMe-15\\Seol-Munhyeok\\제곱수찾기.py","group":"local","local":true} \ No newline at end of file diff --git "a/Seol-Munhyeok/30\353\262\210" "b/Seol-Munhyeok/30\353\262\210" new file mode 100644 index 0000000..4fb7649 --- /dev/null +++ "b/Seol-Munhyeok/30\353\262\210" @@ -0,0 +1,7 @@ +t = int(input()) +for _ in range(t): + a, b = map(int, input().split()) + while a != b: + if a > b: a //= 2 + else: b //= 2 + print(10 * a) \ No newline at end of file diff --git a/Seol-Munhyeok/README.md b/Seol-Munhyeok/README.md index 5f4f0a5..b85607b 100644 --- a/Seol-Munhyeok/README.md +++ b/Seol-Munhyeok/README.md @@ -13,4 +13,7 @@ | 17차시 | 2025.08.01 | 구현, 시뮬레이션, 백트래킹 | [청소년 상어](https://www.acmicpc.net/problem/19236) | https://github.com/AlgoLeadMe/AlgoLeadMe-15/pull/61 | | 18차시 | 2025.08.05 | 브루트포스, 애드 혹, 홀짝성 | [램프](https://www.acmicpc.net/problem/1034) | https://github.com/AlgoLeadMe/AlgoLeadMe-15/pull/62 | | 19차시 | 2025.08.10 | 구현, BFS | [거리두기 확인하기](https://school.programmers.co.kr/learn/courses/30/lessons/81302) | https://github.com/AlgoLeadMe/AlgoLeadMe-15/pull/67 | -| 20차시 | 2025.08.14 | DP | [코딩 테스트 공부](https://school.programmers.co.kr/learn/courses/30/lessons/118668) | https://github.com/AlgoLeadMe/AlgoLeadMe-15/pull/73 | \ No newline at end of file +| 20차시 | 2025.08.14 | DP | [코딩 테스트 공부](https://school.programmers.co.kr/learn/courses/30/lessons/118668) | https://github.com/AlgoLeadMe/AlgoLeadMe-15/pull/73 | +AlgoLeadMe/AlgoLeadMe-15/pull/67 | +| 21차시 | 2025.08.18 | 시뮬레이션, 그리디 | [양궁 대회](https://school.programmers.co.kr/learn/courses/30/lessons/92342) | https://github.com/AlgoLeadMe/AlgoLeadMe-15/pull/75 | +| 22차시 | 2025.08.23 | 그리디, 투 포인터 | [두 큐 합 같게 만들기](https://school.programmers.co.kr/learn/courses/30/lessons/118667) | https://github.com/AlgoLeadMe/AlgoLeadMe-15/pull/79 | \ No newline at end of file diff --git "a/Seol-Munhyeok/\353\221\220\355\201\220\355\225\251\352\260\231\352\262\214\353\247\214\353\223\244\352\270\2601.py" "b/Seol-Munhyeok/\353\221\220\355\201\220\355\225\251\352\260\231\352\262\214\353\247\214\353\223\244\352\270\2601.py" new file mode 100644 index 0000000..160d420 --- /dev/null +++ "b/Seol-Munhyeok/\353\221\220\355\201\220\355\225\251\352\260\231\352\262\214\353\247\214\353\223\244\352\270\2601.py" @@ -0,0 +1,26 @@ +from collections import deque + +def solution(queue1, queue2): + q1, q2 = deque(queue1), deque(queue2) + sum1, sum2 = sum(q1), sum(q2) + + if (sum1 + sum2) % 2 == 1: + return -1 + + n = len(q1) + for i in range(4*n+1): + if sum1 > sum2: + value = q1.popleft() + q2.append(value) + sum1 -= value + sum2 += value + elif sum1 < sum2: + value = q2.popleft() + q1.append(value) + sum2 -= value + sum1 += value + else: + return i + + return -1 + \ No newline at end of file diff --git "a/Seol-Munhyeok/\353\221\220\355\201\220\355\225\251\352\260\231\352\262\214\353\247\214\353\223\244\352\270\2602.py" "b/Seol-Munhyeok/\353\221\220\355\201\220\355\225\251\352\260\231\352\262\214\353\247\214\353\223\244\352\270\2602.py" new file mode 100644 index 0000000..07c1ffa --- /dev/null +++ "b/Seol-Munhyeok/\353\221\220\355\201\220\355\225\251\352\260\231\352\262\214\353\247\214\353\223\244\352\270\2602.py" @@ -0,0 +1,30 @@ +# 투 포인터 풀이 +# https://blog.encrypted.gg/1076 를 참고함 + +def solution(queue1, queue2): + n = len(queue1) + a = queue1 + queue2 + target = sum(a) + if target % 2 != 0: + return -1 + target //= 2 # 합이 target이 되는 구간을 찾아야 함 + + ans = int(1e9) # 일단 매우 큰 값을 넣어놓고 시작 + en = 0 + tot = a[0] # 현재 보는 구간의 합 = a[st]+...+a[en], 범위가 양 끝을 포함(inclusive)한다는 점과 en < st일 땐 a[st]+...+a[2*n-1]+a[0]+...+a[en]을 나타냄에 주의 + for st in range(2*n): + while tot < target: + en = (en + 1) % (2*n) + tot += a[en] + + # while문을 탈출하면 a[st]+...+a[en] 구간의 합이 target 이상임을 의미 + if tot == target: # 구간의 합이 정확히 target과 일치할 경우 + moves = 0 # 작업 횟수 + if en < n-1: moves = 3*n + 1 + st + en # 3n+1번의 연산을 통해 큐1에 첫 번째 원소만 남길 수 있고, 이후 st+en 번의 추가적인 연산을 거쳐 a[st] .. a[en]을 큐1에 둘 수 있음 + else: moves = st + (en - n + 1) + ans = min(ans, moves) + + tot -= a[st] + + if ans == int(1e9): ans = -1 + return ans \ No newline at end of file diff --git "a/Seol-Munhyeok/\354\226\221\352\266\201\353\214\200\355\232\214.py" "b/Seol-Munhyeok/\354\226\221\352\266\201\353\214\200\355\232\214.py" new file mode 100644 index 0000000..47504be --- /dev/null +++ "b/Seol-Munhyeok/\354\226\221\352\266\201\353\214\200\355\232\214.py" @@ -0,0 +1,38 @@ +def get_points(a, r): + a_point, r_point = 0, 0 + for i in range(11): + if a[i] == r[i] == 0: continue + if a[i] >= r[i]: + a_point += (10 - i) + else: + r_point += (10 - i) + return (a_point, r_point) + +def get_combinations(n, r, cur): + # 마지막일 때는 n을 추가 + if r == 1: + return [cur + [n]] + + results = [] + for i in range(n + 1): + results += get_combinations(n - i, r - 1, cur + [i]) + + return results + + +def solution(n, info): + answer = [] + max_point = 0 + cands = get_combinations(n, 11, []) + sorted_cands = sorted(cands, key=lambda x: tuple(x[::-1]), reverse=True) + + for cand in sorted_cands: + a_point, r_point = get_points(info, cand) + if a_point >= r_point: continue + + diff = r_point - a_point + if diff > max_point: + max_point = diff + answer = cand + + return answer if answer else [-1] \ No newline at end of file diff --git "a/Seol-Munhyeok/\354\240\234\352\263\261\354\210\230\354\260\276\352\270\260.py" "b/Seol-Munhyeok/\354\240\234\352\263\261\354\210\230\354\260\276\352\270\260.py" new file mode 100644 index 0000000..fefb98c --- /dev/null +++ "b/Seol-Munhyeok/\354\240\234\352\263\261\354\210\230\354\260\276\352\270\260.py" @@ -0,0 +1,33 @@ +import math + +answer = -1 + +def is_square(n): + return math.isqrt(n) ** 2 == n + +def brute(): + global answer + if n == 1 and m == 1: + return A[0][0] if is_square(int(A[0][0])) else -1 + + for r0 in range(n): + for c0 in range(m): + for dr in range(-(n-1), n): + for dc in range(-(m-1), m): + if dr == 0 and dc == 0: + continue + r, c = r0, c0 + num = "" + while 0 <= r < n and 0 <= c < m: + num += A[r][c] + val = int(num) + if is_square(val): + answer = max(answer, val) + r += dr + c += dc + return answer + +n, m = map(int, input().split()) +A = [list(input()) for _ in range(n)] + +print(brute()) \ No newline at end of file