Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"name":"Local: ATM","url":"d:\\AlgoLeadME-15\\AlgoLeadMe-15\\Seol-Munhyeok\\ATM.py","tests":[{"id":1756627725177,"input":"5\n3 1 4 3 2","output":"32"}],"interactive":false,"memoryLimit":1024,"timeLimit":3000,"srcPath":"d:\\AlgoLeadME-15\\AlgoLeadMe-15\\Seol-Munhyeok\\ATM.py","group":"local","local":true}
Original file line number Diff line number Diff line change
@@ -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}
7 changes: 7 additions & 0 deletions Seol-Munhyeok/30번
Original file line number Diff line number Diff line change
@@ -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)
10 changes: 10 additions & 0 deletions Seol-Munhyeok/ATM.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
n = int(input())
lst = list(map(int, input().split()))

lst.sort()
p_sum = [0] * (n + 1)

for i in range(n):
p_sum[i + 1] = p_sum[i] + lst[i]

print(sum(p_sum))
4 changes: 3 additions & 1 deletion Seol-Munhyeok/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,4 +15,6 @@
| 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 |
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 |
| 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 |
| 23차시 | 2025.09.03 | 수학, 구현 | [책 페이지](https://www.acmicpc.net/problem/1019) | https://github.com/AlgoLeadMe/AlgoLeadMe-15/pull/84 |
5 changes: 1 addition & 4 deletions Seol-Munhyeok/tempCodeRunnerFile.py
Original file line number Diff line number Diff line change
@@ -1,4 +1 @@
# 7 6 2 3 15 6 9 8
# 3 1 1 8 14 7 10 1
# 6 1 13 6 4 3 11 4
# 16 1 8 7 5 2 12 2
down
10 changes: 10 additions & 0 deletions Seol-Munhyeok/개똥벌레.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
# 입력 처리
n, h = map(int, input().split())
down, up = [], []
for i in range(n):
num = int(input())
if i % 2 == 0:
down.append(num)
else:
up.append(num)

26 changes: 26 additions & 0 deletions Seol-Munhyeok/두큐합같게만들기1.py
Original file line number Diff line number Diff line change
@@ -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

30 changes: 30 additions & 0 deletions Seol-Munhyeok/두큐합같게만들기2.py
Original file line number Diff line number Diff line change
@@ -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
12 changes: 12 additions & 0 deletions Seol-Munhyeok/매우어려운문제.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
n, m = map(int, input().split())

def solution(n, m):
if n > m:
return 0
tmp = 1
for i in range(2, n+1):
tmp = (tmp * i) % m
return tmp

print(solution(n, m))

33 changes: 33 additions & 0 deletions Seol-Munhyeok/제곱수찾기.py
Original file line number Diff line number Diff line change
@@ -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())
48 changes: 48 additions & 0 deletions Seol-Munhyeok/책 페이지.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
answer = [0] * 10 # 0~9 각 숫자의 총 등장 횟수를 담을 배열

start = 1 # 왼쪽 포인터: 아직 세지 않은 최소 숫자
end = int(input()) # 오른쪽 포인터: 아직 세지 않은 최대 숫자(입력 N)
ten = 1 # 현재 바라보는 자릿값(일=1, 십=10, 백=100, ...)

# 숫자 n이 지금 바라보는 자릿값(ten=1,10,100,...)에서
# '접두사'로서 기여하는 고정 등장 횟수를 answer에 더한다.
# 예를들어 calc(12345, 1)은 answer[5], answer[4], ... answer[1]에 +1
# +ten을 하는 이유는 현재 자리 아래쪽에는 항상 ten가지(0..ten-1)의 조합이 깔리므로,
# 그 자리의 같은 숫자 d가 블록 안에서 정확히 ten번 등장하기 때문.
def calc(n, ten):
while n > 0:
answer[n % 10] += ten
n //= 10

# 바깥 while 한 바퀴 = 자릿값 'ten' 하나를 완전히 처리
while start <= end:
# [1] 왼쪽 모서리 정리: start를 '...0'으로 맞출 때까지 개별 처리
while start % 10 != 0 and start <= end:
calc(start, ten)
start += 1
if start > end: break # 다 끝나면 종료

# [2] 오른쪽 모서리 정리: end를 '...9'로 맞출 때까지 개별 처리
while end % 10 != 9 and start <= end:
calc(end, ten)
end -= 1

# 여기까지 오면 [start, end]는 현재 자리에서
# 정확히 '...0 ~ ...9'가 반복되는 '완전 주기 구간'이 됨.

# [3] 가운데 완전 주기 한 번에 더하기
# cnt = 현재 자리에서 서로 다른 '접두사' 개수
# (접두사 하나마다 0~9 각 숫자가 하위 ten가지와 결합하므로
# 각 숫자가 정확히 'ten'번씩 등장)
cnt = (end // 10) - (start) // 10 + 1
for d in range(0, 10):
answer[d] += cnt * ten

# [4] 한 자리 올림: 현재 자리 처리를 끝냈으니 윗자리로 이동
start //= 10
end //= 10
ten *= 10

# 결과 출력
for d in range(0, 10):
print(answer[d], end=' ')
37 changes: 37 additions & 0 deletions Seol-Munhyeok/토마토.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
from collections import deque
import sys

m, n = map(int, input().split())
arr = []
dy, dx = [-1, 0, 1, 0], [0, 1, 0, -1]
queue = deque()

# 입력 처리, 1인 좌표 저장
for i in range(n):
row = []
for j, val in enumerate(map(int, input().split())):
row.append(val)
if val == 1:
queue.append((i, j))
arr.append(row)

# BFS
while queue:
y, x = queue.popleft()
for i in range(4):
ny, nx = y + dy[i], x + dx[i]
if 0 <= ny < n and 0 <= nx < m and arr[ny][nx] == 0:
arr[ny][nx] = arr[y][x] + 1
queue.append((ny, nx))

# 정답 찾기
answer = -1e9
for i in range(n):
for j in range(m):
if arr[i][j] == 0:
print(-1)
sys.exit()
if arr[i][j] > answer:
answer = arr[i][j]

print(answer - 1)