본문 바로가기

Algorithm/Simulation41

[파이썬] SWEA 5648 : 원자 소멸 시뮬레이션 (TEST) [파이썬] SWEA 5648 : 원자 소멸 시뮬레이션 (TEST)SWEA 5648 : 원자 소멸 시뮬레이션풀이방향성 생각각 공이 충돌할 좌표를 계산하는 방식으로 효율적으로 풀 수 있다.시뮬레이션으로 풀이.각 공의 좌표를 *2를 해준다.(0,0)에서 오는 공이랑 (1,0)에서 오는 공이 서로 충돌한다 했을 떄, 충돌 지점은 0.5인데 이런 부분을 int로 관리해주기(0,0)과 (2,0)에서 오는 공이 (1,0)에서 충돌각 시점에서 공의 좌표 -> 공의 정보를 리스트에 모두 저장하고, 리스트의 길이가 몇인지 관리해준다.각 공을 이동시킨 후, 특정 좌표에 2개 이상의 공이 있으면 그 공의 에너지를 전부 더해주고 정보를 제거한다.info가 없어질 때 까지 반복하기좌표를 벗어나면 각 공들은 다른 공과 충돌하지 않.. 2025. 4. 12.
[파이썬] SWEA 4013 : 특이한 자석 (test) [파이썬] SWEA 4013 : 특이한 자석 (test)SWEA 4013 : 특이한 자석 풀이방향성 생각리스트 내부에 큐 넣어서 구현하기.인접 톱니끼리는 반대의 회전방향을 가진다.현재 톱니를 돌리고 옆 톱니를 돌리는 과정에서, 이전에 돌렸던 톱니를 다시 돌리지 않기 위해 방문처리한다.BFS로 이웃 톱니를 회전시키기 (톱니의 극성이 일치하면 반대방향으로 회전시켜주기)회전량은 V에 부호로 방향을, 값으로 회전수를 저장한다 전체코드from collections import dequeinside = lambda x : 0코멘트회전량이 많은 경우에는 모듈러 연산을 통해서 줄일 수 있다.자바에서는 음수 모듈러가 안돼서 후보정을 해줘야한다. 2025. 4. 10.
[파이썬] 프로그래머스 : 프렌즈 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.
[파이썬] 백준 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.