본문 바로가기
반응형

백준36

[알고리즘/백준] 1584번 게임 Python 파이썬 이번 문제는 이해하는데 어려웠던 문제였습니다. 세준이가 0,0 에서 500, 500 으로 이동할 때 잃는 생명의 최솟 값을 구하는 문제로 BFS를 적용해서 풀었습니다. 풀면서 고려해야하는 점은 사방면 이동, 위험과 죽음 영역이 겹쳤을 때 처리 방법, 최솟값을 구해야한다는 점입니다. BFS로 풀다가 계속 오류나서 풀이를 보고 깨달음을 얻었습니다. 먼저, 다음과 같은 코드로 통과하였습니다. import sys from collections import deque input = sys.stdin.readline map_list = [[0]*501 for _ in range(501)] dx = [1,-1,0,0] dy = [0,0,1,-1] danger = [] death = [] def update_map(x.. 2023. 3. 21.
[알고리즘/백준] 2012번 등수 매기기 Python 파이썬 이번 게임은 쉽게 풀 수 있음에도 어렵게 생각해 헤매었던 문제였습니다. 각 사람의 예상 등수가 주어지고 임의로 등수를 지정했을 때 그 차이의 합을 최소로 하는 프로그램을 작성하는 문제였습니다. 처음에 문제를 풀이할때는 일단 등수 별로 넣어주고 동점자여서 들어가지 못한 점수들을 배치해줄려고 했는데 최솟값이라고 하니 이때 어떻게 최소 차이 등수랑 매칭해줄지(양방향 검사가 필요해짐) 머리가 복잡해졌습니다. 풀다보니 뭔가 이렇게 푸는게 아닌 것 같아 결국 다른 분들의 풀이를 찾아보았고 그리디 알고리즘에 대해 알 수 있었습니다. 그리디 알고리즘이란? 미래를 생각하지 않고 각 단계에서 가장 최선의 선택을 하는 기법입니다. 사실 위의 알고리즘을 어떻게 활용하면 좋을지 백프로 이해되지는 않지만 이를 통해 생각해보면 각.. 2023. 3. 19.
[알고리즘/백준] 1430번 공격 Python 파이썬 이번 문제는 처음에는 헷갈렸지만 후반에 생각을 바꿔서 수월하게 풀렸다. 적이 총 받는 최대 에너지를 구하는 문제로 거리 계산과 경우 수를 잘 따져봐야하는 문제이다. 먼저 문제 읽고 나서 생각해보니 한 탑에 몰아서 주든 나눠서 주든 딱히 값의 차이가 없다는 것을 인지했다. 그리고 처음에는 해당 로직을 적 주변에 있는 탑을 검사해서 해당 탑으로부터 주변 탑들을 탐색해가는 DFS 를 활용한 방법으로 풀었다. 하지만, 이 경우 적 주변 탑이 여러개 인 경우 처음 탑을 기준으로 주변 탑을 먼저 찾게 되는데 이 과정에서 다른 적 주변 탑으로 직통할 수 있는 탑이 경유하게 되어 최대 에너지를 구하지 못하는 문제가 발생하였다. 이를 해결하기 위해 DFS가 BFS 를 활용해서 적을 기준으로 주변 탑을 검사해서 넣어주는 .. 2023. 3. 17.
[알고리즘/백준] 1992번 쿼드 트리 Python 파이썬 이번 문제는 여러모로 아쉬운 문제였습니다. 이미지의 압축 표현을 구하는 문제로 풀면서 여러가지 고려할 점이 있는 문제인데 저 같은 경우 처음에 사진이 안 뜨는 바람에 검색하다가 다른 분들의 코드를 봐버려서 쉽게 풀어버린 듯합니다. 실제로는 어떻게 사분할할지 표시 경우 어떻게 해줄지 생각하고 고민할 부분이 많았다고 생각합니다. 다음과 같은 코드로 통과하였습니다. import sys input = sys.stdin.readline n = int(input()) img_list = [list(map(int, input().strip())) for _ in range(n)] def check_img(x, y, n): num = img_list[x][y] for i in range(x, x+n): for j in.. 2023. 3. 17.
반응형