백준알고리즘(5)
-
[Python] 🥈 백준 2583 영역구하기 / DFS & BFS 그림 풀이
2583번: 영역 구하기 첫째 줄에 M과 N, 그리고 K가 빈칸을 사이에 두고 차례로 주어진다. M, N, K는 모두 100 이하의 자연수이다. 둘째 줄부터 K개의 줄에는 한 줄에 하나씩 직사각형의 왼쪽 아래 꼭짓점의 x, y좌표값과 오 www.acmicpc.net 문제 풀기 전 생각하기 문제 풀기 전 어려웠던 점이 보통 [0,0] 은 왼쪽 위에부터 시작해서 아래로 내려가는 형식인데 아래에서부터 위로 숫자가 커지는 형식이라 그래프를 어떻게 생각해야될지 헷갈렸다.... 그래서 그냥 표를 돌려서 생각했다 그림을 오른쪽으로 돌리면 우리가 평소에 많이 봤던 좌표가 보인다! 그렇다면 다음 문제는 꼭짓점으로만 주어지는 영역을 어떻게 채우냐인데..... 그림을 그려서 꼭짓점과 실제 표의 좌표를 비교해보니 왼쪽 위 꼭..
2024.02.12 -
[Python] 🥇 백준 7576- 토마토 / BFS 알고리즘 이용하기
예제 입력 1 6 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 예제 출력 1 8 예제 입력 2 6 4 0 -1 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 예제 출력 2 -1 아이디어 생각하기 이 문제는 익은 토마토들의 주위를 확인하며 나아가야하므로 bfs 알고리즘을 사용해야한다 또한 미로 문제와 다르게 시작점이 여러개이므로, 1인 토마토의 위치값을 모두 큐에 넣어준다 로직 순서 (1) 토마토 박스에 토마토 넣어주기 (2) 익은 토마토들의 위치를 q에 넣어주기 🌟🌟🌟출발점이 여러개인 경우 출발점을 모~두 Queue에 미리 넣어야 한다.🌟🌟🌟 (3) bfs 함수 실행 -1 큐에서 익은 토마토들의 위치를 popleft -2 fo..
2023.02.21 -
[Python] 백준 11652번 풀이 / 카드 / sorted()에서의 key lambda 사용하기
문제 준규는 숫자 카드 N장을 가지고 있다. 숫자 카드에는 정수가 하나 적혀있는데, 적혀있는 수는 -262보다 크거나 같고, 262보다 작거나 같다. 준규가 가지고 있는 카드가 주어졌을 때, 가장 많이 가지고 있는 정수를 구하는 프로그램을 작성하시오. 만약, 가장 많이 가지고 있는 정수가 여러 가지라면, 작은 것을 출력한다. 입력 첫째 줄에 준규가 가지고 있는 숫자 카드의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 출력 첫째 줄에 준규가 가장 많이 가지고 있는 정수를 출력한다. 예제 입력 1 5 1 2 1 2 1 예제 출력 1 1 틀렸던 코드 import sys input = sys.stdin.readline n = int(inp..
2023.01.30 -
[Python] DFS/BFS 알고리즘 / 백준 1260 그림 풀이 /
개요 그래프에서 노드(정점)와 간선으로 표현된다. 그래프 탐색이란 하나의 노드를 시작으로 다수의 노드를 방문하는 것을 말한다. 두 노드가 간선으로 연결되어 있다면 인접하다. 라고 표현한다. DFS (깊이 우선 탐색) 그래프에서 깊은 부분을 우선적으로 탐색한다. BFS 알고리즘 (너비우선탐색) 노드에서 갈 수 있는 모든 노드를 다 방문한다. 말 그대로 너비에서 연결된 모든 곳을 일단 큐에 담는다 (1) 시작 노드를 큐에 append한 후 방문처리 (2) 큐에서 노드를 POP, 인접 노드 중 방문하지 않은 노드를 모두 큐에 append (3) 2번 과정을 q가 빌 때까지 반복한다. 주의사항 from collections import deque q= deque([v]) q.popleft() q.pop대신 im..
2023.01.29 -
[Python] 백준 알고리즘 1924번 2007년 쉬운 풀이
문제 오늘은 2007년 1월 1일 월요일이다. 그렇다면 2007년 x월 y일은 무슨 요일일까? 이를 알아내는 프로그램을 작성하시오. 입력 첫째 줄에 빈 칸을 사이에 두고 x(1 ≤ x ≤ 12)와 y(1 ≤ y ≤ 31)이 주어진다. 참고로 2007년에는 1, 3, 5, 7, 8, 10, 12월은 31일까지, 4, 6, 9, 11월은 30일까지, 2월은 28일까지 있다. 출력 첫째 줄에 x월 y일이 무슨 요일인지에 따라 SUN, MON, TUE, WED, THU, FRI, SAT중 하나를 출력한다. 예제 입력 1 1 1 예제 출력 1 MON 예제 입력 2 3 14 예제 출력 2 WED 아이디어 생각하기 ["SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT"]에서 1월 1일..
2023.01.18