본문 바로가기

Algorithm475

[파이썬] 프로그래머스 : 프렌즈 4블록 (레벨2) [파이썬] 프로그래머스 : 프렌즈 4블록 (레벨2)프로그래머스 : 프렌즈 4블록 (레벨2)풀이방향성 생각아래로 떨어지는거 구현하기 불편해서 transpose + 각 row에서 reversed 시켜서 풀이 pythondef solution(m, n, board): # 2x2 박스 체크 def check(x,y): temp = set(arr[yy][xx] for xx,yy in [(x,y),(x+1,y),(x,y+1),(x+1,y+1)]) return len(temp) == 1 and '#' not in temp # 2x2 박스 제거 def remove(x,y): for xx,yy in [(x,y),(x+1,y),(x,y+1),(x+1,y+1)]: .. 2025. 3. 22.
[파이썬] 백준 2146 : 다리 만들기 (골드3) [파이썬] 백준 2146 : 다리 만들기 (골드3)https://www.acmicpc.net/problem/2146풀이방향성 생각유니온파인드 / BFS백조의 호수랑 비슷한 흐름인듯?관건은 x - - x로 연결되는거랑 x - x로 연결되는걸 처리했다.각 날짜마다 테두리를 채우는데 위 두 가지 케이스를 구분했다 전체코드from collections import deque, defaultdict as ddimport sysinput = lambda : sys.stdin.readline().strip()inside = lambda x,y : 0 첫 방문이면 V에 군집 번호 boundary[(nx,ny)] += 1 V[ny][nx] = cnt .. 2025. 3. 22.
[파이썬] 백준 17822 : 원판 돌리기 (골드2) [파이썬] 백준 17822 : 원판 돌리기 (골드2)https://www.acmicpc.net/problem/17822풀이방향성 생각원판을 2차원 격자로 나타내고 회전 구현을 위해서 큐로 구현하기.큐로 구현 안할거면, 리스트 하나 만들고 몇 번 회전했는지 관리하는 리스트도 같이 만들어서 관리하기기연결된 숫자는 BFS로 구현하기 전체코드from collections import dequeimport sysinput = lambda : sys.stdin.readline().strip()inside = lambda x,y : 0 1: remove_lists.extend(remove_list) # 제거할 숫자 있으면 제거하기 if remove_lists: .. 2025. 3. 21.
[파이썬] 프로그래머스 : 두 큐 합 같게 만들기 (레벨2) [파이썬] 프로그래머스 : 두 큐 합 같게 만들기 (레벨2)https://school.programmers.co.kr/learn/courses/30/lessons/118667 풀이방향성 생각입력이 커서 $O(N)$이나 $O(NlogN)$으로 풀이.가장 빠르게 떠오른 풀이는 누적합 + 투포인터인데, 두 큐를 합쳐서 투포인터 돌리면 TLE 확률이 커져서 누적합 + 이분탐색으로 풀이. 전체코드def solution(Q1,Q2): leng = len(Q1) def solve(q1,q2): # 누적합 배열 만들기 cumsum = [0] for val in q1 + q2: cumsum.append(cumsum[-1] + val) # 불.. 2025. 3. 20.