[코테 준비 : day20]

Choi·2023년 10월 11일
0

코딩테스트 준비

목록 보기
20/22
post-thumbnail

기록은 없지만 열심히 했습니다..

이번 포스팅은 내 근황 + 코테 준비에 관한 이야기이다!
평일 하루에 8시간은 에이블스쿨에 전념하고있다. 힘이 쭉 빠지지만 쉴 틈을 주지 않는 ..ㅎ 바로 한 달동안 코딩마스터스라는 이름으로 100문제를 푸는 대회가 열렸다. 나는 10등안에 드는 것을 목표로 정말 열심히 풀었지만 100문제 중 74문제를 풀어서 27등으로 마무리했다🫠. 70문제 풀면 마스터라고 칭해준다..ㅎ 살짝 유치하지만 기분은 좋다! 후회없이 열심히 했고, 많은 알고리즘에 대한 이해를 할 수 있었기에 미련은 없다. 하지만 외부로 유출을 할 수 없으니 내가 푼 문제들을 기록할 수 없다는 점이 조금 슬프다. 74문제를 풀며 자기객관화가 확실히 됐다. 난 아직 많이 부족하고 매일 한 문제씩이라도 풀어야 감을 잃지않는다. 오늘부터 백준 문제들로 다시 GO.

  1. 봄버맨
    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)
profile
느려도 내 것으로 만드는게 좋잖아?

0개의 댓글