본문 바로가기
320x100

PS84

[CLASS 3]백준 16236번 - 아기 상어 16236번 : 아기 상어 엄마 상어에게 도움을 요청하면 뭔가 다른 일이 일어나는게 아니라 다행이다. 이 문제만 푸는데 2시간이 넘게 걸렸다. 그래도 푸는 과정이 꽤 재미있었고 맞은 뒤에는 성취감도 느껴졌다. 일단 바로 BFS를 사용할 생각은 했다. 그리고 꽤 쉽게 처음 코드를 구현했다. 그러나 이는 어리석은 코드였다. 같은 최단거리에 있는 먹이들 중 우선순위는 위에 있는 물고기, 높이도 같다면 왼쪽에 있는 물고기를 섭취해야 하는데 단순히 BFS만 사용하면 4번 테스트 케이스에서 오류가 난다. 만약 우선순위를 제대로 고려하지 않고 그냥 BFS를 사용했다면 이 테스트 케이스에서 56이 나올 것이다. 이유는 (0,2)에서 길이 3짜리 물고기를 먹은 뒤 (0,4) 혹은 (1,1) 둘 모두 최단거리 2 에 있는.. 2021. 2. 21.
[CLASS 3]백준 15686번 - 치킨 배달 15686번 : 치킨 배달 치킨집을 어떻게 닫아야 최대 수익을 유지할 수 있을지에 관한 문제이다. 내가 처음에 고안한 방법은, 치킨집마다 다른 모든 가정집까지의 누적합을 구해서 누적합이 큰 치킨집부터 닫는다는 방법이었다. 그러나 이는 틀린 방법이다. 내 코드(오답): from sys import stdin input = stdin.readline from collections import deque n, m = map(int,input().split()) city = [input().split() for _ in range(n)] houses = [] chickens = [] # 가정집과 치킨집이 어딘지 저장 for r in range(n): for c in range(n): if city[r][c] =.. 2021. 2. 20.
[CLASS 3]백준 14500번 - 테트로미노 14500번 : 테트로미노 일단 문제를 처음 봤을때 부터 브루트포스로 풀어야 한다고 생각했다. 왜냐하면 종이 위에 적혀 있는 숫자에 어떤 규칙성이 없기 때문에 무조건 종이 위 모든 숫자를 돌아다니면서 확인해야 한다고 생각했기 때문이다. 그래서 처음엔 이런 코드를 작성했다. 내 코드: # dawitblog.tistory.com from sys import stdin input = stdin.readline dr = [0,0,1,-1,1,1] dc = [1,-1,0,0,1,-1] move = ['005','205','214','034','021','000','222','220','221','002','300','330','331','003','200','202','212','020','030'] def fi.. 2021. 2. 19.
[CLASS 3]백준 10026번 - 적록색약 10026번 : 적록색약 일단 딱 보면 BFS 혹은 DFS라는 것을 알 수 있다. 그리고 이 문제는 나치고는 드물게 아주 쉽게 풀었다.. 시간 제한은 1초인데(파이썬은 5초) 입력의 조건(1 2021. 2. 18.