이번 포스팅은 내 근황 + 코테 준비에 관한 이야기이다!
평일 하루에 8시간은 에이블스쿨에 전념하고있다. 힘이 쭉 빠지지만 쉴 틈을 주지 않는 ..ㅎ 바로 한 달동안 코딩마스터스라는 이름으로 100문제를 푸는 대회가 열렸다. 나는 10등안에 드는 것을 목표로 정말 열심히 풀었지만 100문제 중 74문제를 풀어서 27등으로 마무리했다🫠. 70문제 풀면 마스터라고 칭해준다..ㅎ 살짝 유치하지만 기분은 좋다! 후회없이 열심히 했고, 많은 알고리즘에 대한 이해를 할 수 있었기에 미련은 없다. 하지만 외부로 유출을 할 수 없으니 내가 푼 문제들을 기록할 수 없다는 점이 조금 슬프다. 74문제를 풀며 자기객관화가 확실히 됐다. 난 아직 많이 부족하고 매일 한 문제씩이라도 풀어야 감을 잃지않는다. 오늘부터 백준 문제들로 다시 GO.
- 봄버맨
https://www.acmicpc.net/problem/16918
이 문제는 구현문제로 매 초마다 달라지는 격자판에 대해 출력을 해야한다. 홀수, 짝수 초마다 다르고 격자판이 계속 바뀌기에 트래킹을 하며 업데이트를 해야한다. 함수로 각 기능을 나누어서 가독성이 좋도록 했다!
r, c, n = map(int, input().split()) # 입력
arr = [list(input()) for _ in range(r)] # 격자판 초기상태 입력
d = [(-1, 0), (1, 0), (0, -1), (0, 1)] # 폭탄 인접 칸 지정
bombs = [] # 폭탄 위치
find_bomb = lambda li: [(i, j) for j in range(c) for i in range(r) if li[i][j] == 'O'] # 현재 폭탄 위치 좌표로 기억
def pung(): # 폭탄 펑!
global arr, bombs
for bx, by in bombs:
arr[bx][by] = '.' # 폭탄 위치 폭파
for i in range(4):
nx, ny = bx + d[i][0], by + d[i][1]
if nx in range(r) and ny in range(c):
arr[nx][ny] = '.' # 폭탄 인접 위치 폭파
def fill_bombs(): # 폭탄으로 채우기. 모두 0으로
global arr
arr = [['O'] * c for _ in range(r)]
def print_answer(li): # 결과 출력
for line in li:
print(''.join(line))
for second in range(1, n): # 홀수: 폭탄 위치 기억, 모두 폭탄으로 채우기 / 짝수: 폭탄 펑!
if second % 2 == 1:
bombs = find_bomb(arr) # 폭탄 위치 찾고
fill_bombs() # 폭탄 채우기
else:
pung() # 폭탄 펑!
print_answer(arr)