본문 바로가기

Problem Solving/boj

(68)
[BOJ] 2468. 안전 영역(Python) / BFS www.acmicpc.net/problem/2468 2468번: 안전 영역 재난방재청에서는 많은 비가 내리는 장마철에 대비해서 다음과 같은 일을 계획하고 있다. 먼저 어떤 지역의 높이 정보를 파악한다. 그 다음에 그 지역에 많은 비가 내렸을 때 물에 잠기지 않는 www.acmicpc.net 어렵지 않은 BFS 문제였다. 실제로 난이도 실버1. 기본적인 BFS 틀에 조건만 이동할 위치를 현재 비의 양과 비교해 더 높을 때마다 BFS를 확장시켰다. 이 때, 비의 양이 달라질 때마다 경우가 달라지므로 나름의 아이디어를 내서 visited를 재활용하기 위해 새로 방문 표시를 할 때는 현재 비의 양으로 표현해 비의 양이 다른 경우와 구분했다. 비의 양을 결정한 후 결과(안전영역의 갯수, temp)가 나올 때마다 ..
[BOJ] 2456. 나는 학급회장이다(Python) www.acmicpc.net/problem/2456 2456번: 나는 학급회장이다 첫째 줄에는 반의 학생들의 수 N (3 ≤ N ≤ 1,000)이 주어진다. 다음 N개의 각 줄에는 각 학생이 제출한 회장후보 3명에 대한 선호 점수가 주어지는 데, 첫 번째 점수는 후보 1번에 대한 점수이고 두 www.acmicpc.net 브론즈 1 문제이다. 단순 하드코딩으로 이차원 배열에 3명의 후보별로 [총점, 3점, 2점] 리스트로 구성해 정렬하는 방식으로 풀다가 막혀서 구글링하다가 3점, 2점 점수 합 제곱을 해줘서(가중치 처리) 크기 비교를 하는 풀이법을 찾았다. (이런 아이디어 나도 내고 싶다..) 아이디어를 참고해 풀었다. 파이썬 코드는 다음과 같다. import sys input = sys.stdin.rea..
[BOJ] 4179. 불! (Python) / BFS www.acmicpc.net/problem/4179 4179번: 불! 입력의 첫째 줄에는 공백으로 구분된 두 정수 R과 C가 주어진다. 단, 1 ≤ R, C ≤ 1000 이다. R은 미로 행의 개수, C는 열의 개수이다. 다음 입력으로 R줄동안 각각의 미로 행이 주어진다. 각각의 문 www.acmicpc.net 전형적인 최단거리 구하기 BFS 문제이다. 처음 아이디어는 사람이 먼저 4방향으로 뛰고, 불을 퍼트리고, 사람 이동, 불 이동 이런 식으로 번갈아 해줬는데 어디서 꼬였는지 자꾸 70%대에서 계속 틀렸다. 3번 넘게 계속 틀렸습니다가 떠서 질문검색을 통해 1. 불을 먼저 완전히 퍼트리고 이 정보를 보고 2. 사람이 격자 밖으로 나갈 수 있는지 여부를 확인함을 알았다. 불이 각 위치에 도달한 정보를 ..
[BOJ] 1915. 가장 큰 정사각형(Python) / DP 1915번: 가장 큰 정사각형 첫째 줄에 n, m(1 ≤ n, m ≤ 1,000)이 주어진다. 다음 n개의 줄에는 m개의 숫자로 배열이 주어진다. www.acmicpc.net 문제 보자마자 바로 반복문으로 풀었는데, 어쩐지 쉽다 했더니 바로 시간초과; 아니나 다를까 Dynamic Programming 문제이다. 골드 5 문제이기도 하고. 요새 계속 기초 DP 문제를 풀고 있는데, 여전히 발상 자체가 어려운 것 같다. DP는 사실 코드는 짧은데, 이를 생각해내기가 참 어렵다ㅠㅠ 아직 DP초보라,, 더 노력하는 수밖에! 결국 다른 분 코드를 참고해서 풀었다. cagongman.tistory.com/18 [백준][Python] 1915 가장 큰 정사각형 - 풀이 공유 https://www.acmicpc.net..