BOJ(5)
-
[BOJ] 14503 로봇 청소기 - Python
https://www.acmicpc.net/problem/14503 14503번: 로봇 청소기 로봇 청소기가 주어졌을 때, 청소하는 영역의 개수를 구하는 프로그램을 작성하시오. 로봇 청소기가 있는 장소는 N×M 크기의 직사각형으로 나타낼 수 있으며, 1×1크기의 정사각형 칸으로 나누어 www.acmicpc.net 이런 문제는 그냥 bfs로 구현하는 거보다 while문 하나로 끝내는게 더 직관적인듯. 그냥 문제에 나와있는 조건별로 구현하면 된다. dx = [-1, 0, 1, 0] dy = [0, 1, 0, -1] # 북 동 남 서 N, M = map(int, input().split()) r, c, d = map(int, input().split()) arr = [] for i in range(N): ar..
2021.09.23 -
[BOJ] 19238스타트 택시 - Python
https://www.acmicpc.net/problem/19238 19238번: 스타트 택시 첫 줄에 N, M, 그리고 초기 연료의 양이 주어진다. (2 ≤ N ≤ 20, 1 ≤ M ≤ N2, 1 ≤ 초기 연료 ≤ 500,000) 연료는 무한히 많이 담을 수 있기 때문에, 초기 연료의 양을 넘어서 충전될 수도 있다. 다 www.acmicpc.net 전형적인 삼성 코테문제 bfs 문제로 해결하면 되는데, 조건을 유의해 줘야한다. 현재 위치에서 최단거리가 가장 짧은 승객, 그런 승객이 여러 명이면 행 번호가 가장 작은 승객, 그런 승객도 여러명이면 열번호가 가장 작은 승객. 이 조건만 유의해 가면서 문제를 풀면 된다. findPeoplebfs에서 heap에다가 넣어주면서 위 조건을 모두 만족시키도록 했다...
2021.09.23 -
[BOJ] 1938 통나무 옮기기 - Python
https://www.acmicpc.net/problem/1938 1938번: 통나무 옮기기 첫째 줄에 주어진 평지의 한 변의 길이 N이 주어진다. (4
2021.08.24 -
[BOJ] 4811 알약 - Python
https://www.acmicpc.net/problem/4811 4811번: 알약 입력은 최대 1000개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄이며, 병에 들어있는 약의 개수 N ≤ 30 가 주어진다. 입력의 마지막 줄에는 0이 하나 주어진다. www.acmicpc.net DP 문제이다. 첨에는 생각이 나지않아 안풀렸지만 종이를 가져와서 적어보았다 먼저 W랑 H는 무조건 한 세트여야 하고, W가 한개가 나와야 H가 나올 수 있음을 기억하자. 2 개가 있으므로 2차원 배열을 선언했다. 세로 컬럼은 W, 가로 행은 H로 두고 각각의 숫자는 나온 개수라고 하자. 그러면 H가 1이고 W 가 0일 수는 없다. 그래서 먼저 W가 1일때를 보자 W H 0 1 2 3 0 0 1 1 x 2 3 여..
2021.08.15 -
[BOJ] 17135 캐슬 디펜스 - Python
https://www.acmicpc.net/problem/17135 17135번: 캐슬 디펜스 첫째 줄에 격자판 행의 수 N, 열의 수 M, 궁수의 공격 거리 제한 D가 주어진다. 둘째 줄부터 N개의 줄에는 격자판의 상태가 주어진다. 0은 빈 칸, 1은 적이 있는 칸이다. www.acmicpc.net BFS + 조합 + 우선순위 정렬 을 사요애야하는 조금 복잡한 문제다. 어느 적부터 쏴야 할지를 선택해야 하고.. 궁수를 배치하는 건 조합을 사용하고 적이 어딨는지 탐색하는 부분은 BFS from itertools import combinations import heapq # 위, 오른, 왼 방향 dx = [-1, 0, 0] dy = [0, 1, -1] #입력 N, M, D= map(int,input().s..
2021.08.12