본문 바로가기

백준107

[Python3] 1189번 컴백홈 사용 언어 - Python3 문제 - 컴백홈 1189번: 컴백홈 첫 줄에 정수 R(1 ≤ R ≤ 5), C(1 ≤ C ≤ 5), K(1 ≤ K ≤ R×C)가 공백으로 구분되어 주어진다. 두 번째부터 R+1번째 줄까지는 R×C 맵의 정보를 나타내는 '.'과 'T'로 구성된 길이가 C인 문자열이 주어진다 www.acmicpc.net 정답 nx,ny 이동하는 BFS 만들기 (정답 맞춘 여부 X) dx = [-1,0,1,0] dy = [0,-1,0,1] from collections import deque def DFS(x,y,count): global answer visited[x][y] = 1 if [x,y] == [0,c-1]: #오른쪽 맨 윗(집)도착시 if count == k: #거리가 k라면 조건만족.. 2023. 4. 9.
[Python3] 백준 1012번 유기농 배추 사용 언어 - Python3 문제 - 유기농 배추 1012번: 유기농 배추 차세대 영농인 한나는 강원도 고랭지에서 유기농 배추를 재배하기로 하였다. 농약을 쓰지 않고 배추를 재배하려면 배추를 해충으로부터 보호하는 것이 중요하기 때문에, 한나는 해충 방지에 www.acmicpc.net 정답 nx,ny 이동하는 BFS 만들기 (정답 맞춘 여부 X) 0. 입력 배추밭 graph(m행*n열)에 graph[x][y] = 1로 배추표시 1. queue를 사용한 BFS(x,y) visit 리스트를 만들지 않아도, grpah의 0과 1로 방문표시가 가능하다. graph[x][y] = 0 방문처리 graph[x][y] = 1 방문하지 않은, 배추가 있는 곳 x,y를 상하좌우로 이동시켜 nx,ny의 새로운 위치에서 gra.. 2023. 4. 9.
[Python3] 백준 1260번 DFS와 BFS 사용 언어 - Python3 문제 - DFS와 BFS 1260번: DFS와 BFS 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사 www.acmicpc.net 정답 BFS, DFS 만들기 (정답 맞춘 여부 X) 0. input, 변수 선언 graph = 정점의 개수+1 만큼의 (n+1,n+1) 0벡터 배열을 만들어준다. visit했는지 여부를 (n+1) 크기의 0벡터로 만든다. BFS, DFS 두개의 리스트로 만든다. graph[a][b] = graph[b][a] = 1 입력되는 간선은 양방향이기 때문에 반대방향도 똑같이 1이다.. 2023. 4. 9.
[Python3] 백준 1347번 미로 만들기 사용 언어 - Python3 문제 - 미로 만들기 1347번: 미로 만들기 홍준이는 미로 안의 한 칸에 남쪽을 보며 서있다. 미로는 직사각형 격자모양이고, 각 칸은 이동할 수 있거나, 벽을 포함하고 있다. 모든 행과 열에는 적어도 하나의 이동할 수 있는 칸이 있다. 홍 www.acmicpc.net 정답 최대 x,y 값 구하고, 2차원 배열 만들기 (정답 맞춘 여부 X) 1. loc_list (0,0)에서 시작해서 이동한 값 x,y에 저장하기 R 명령어) 방향을 오른쪽으로 전환 -> status+1 한 후 4로 나누어 몇번째 원소인지 찾기 (status+1)%4 L 명령어) 방향을 왼쪽으로 전환 -> status가 0이 아니라면, status-1, 아니면 3 x는 loc_list의 가장 최근 x좌표에서 R.. 2023. 4. 9.
[Python3] 백준 1002번 터렛 사용 언어 - Python3 문제 - 터렛 1002번: 터렛 각 테스트 케이스마다 류재명이 있을 수 있는 위치의 수를 출력한다. 만약 류재명이 있을 수 있는 위치의 개수가 무한대일 경우에는 -1을 출력한다. www.acmicpc.net 정답 if문 경우의 수 생각하기 (정답 맞춘 여부 X) 1. 두 원이 같고, 반지름이 같은 경우 => 무한한 경우 print(-1) 2. 두 원이 접해있는 경우 (내접 or 외접) => 무조건 점은 한개 print(1) 3. 두 원이 서로 다른 점 안에서 만날 때 => 점은 둘 중 하나 가능 print(2) 4. 나머지 경우 print(0) import math t = int(input()) for _ in range(t): x1, y1, r1, x2, y2, r2 = m.. 2023. 4. 7.
[Python3] 백준 1904번 01타일 사용 언어 - Python3 문제 - 01타일 1904번: 01타일 지원이에게 2진 수열을 가르쳐 주기 위해, 지원이 아버지는 그에게 타일들을 선물해주셨다. 그리고 이 각각의 타일들은 0 또는 1이 쓰여 있는 낱장의 타일들이다. 어느 날 짓궂은 동주가 지원이 www.acmicpc.net 정답 DP 기초 문제 (정답 맞춘 여부 X) 1. dp = [0]*(1000001), n+1 만큼 0으로 이루어진 리스트 dp 생성 2. 예외처리 n이 1,2이면, 답이 정해져있다. 가독성을 위해 인덱싱은 1부터 한다. dp[1] = 1 dp[2] = 2 3. n이 3이상인 경우 dp[i] = i까지의 최대값 dp[i]=(dp[i-2]+d[i-1])%15746 dp[n] = 모든 2진 수열의 개수를 15746으로 나눈 나머지 2023. 4. 6.
[Python3] 백준 2579번 계단오르기 사용 언어 - Python3 문제 - 계단 오르기 2579번: 계단 오르기 계단 오르기 게임은 계단 아래 시작점부터 계단 꼭대기에 위치한 도착점까지 가는 게임이다. 과 같이 각각의 계단에는 일정한 점수가 쓰여 있는데 계단을 밟으면 그 계단에 쓰여 있는 점 www.acmicpc.net 정답 DP 기초 문제 (정답 맞춘 여부 X) 1. dp = [0]*(n), 0으로 이루어진 리스트 dp 생성 2. 예외처리 계단이 애초에 두개 이하이면, 첫번째 계단+두번째 계단밖에 정답이 없으므로 sum(s) 3. 계단이 3개이상인 경우부터 dp에 값 입력 dp[i] = i까지의 계단 최대값 dp[0] = s[0] dp[1] = s[0]+s[1] dp[2]부터는 경우의 수가 늘어난다. dp[i]=max(dp[i-3]+s[i.. 2023. 4. 5.
[Python3] 백준 1449번 수리공 항승 사용 언어 - Python3 문제 - 수리공 항승 1449번: 수리공 항승 첫째 줄에 물이 새는 곳의 개수 N과 테이프의 길이 L이 주어진다. 둘째 줄에는 물이 새는 곳의 위치가 주어진다. N과 L은 1,000보다 작거나 같은 자연수이고, 물이 새는 곳의 위치는 1,000보다 작거나 www.acmicpc.net 정답 조건문 (정답 맞춘 여부 X) 테이프를 처음 붙이는 start 지점에서 테이프길이 L 사이에 또 다른 물이 새는 위치가 있다면 continue 아니라면, start 지점 이동 + 테이프 한개를 더 사용해야하므로 cnt += 1 import sys input = sys.stdin.readline N,L = map(int,input().split()) #N물이 새는 곳의 개수 / L테이프의 길이.. 2023. 4. 5.
[Python3] 백준 1270번 전쟁 - 땅따먹기 사용 언어 - Python3 문제 - 전쟁 - 땅따먹기 1270번: 전쟁 - 땅따먹기 첫째 줄에는 땅의 개수 n(n 2023. 4. 5.
[Python3] 백준 1166번 선물 사용 언어 - Python3 문제 - 선물 1166번: 선물 민식이는 아이들에게 선물할 같은 크기의 작은 박스를 N개 가지고 있다. 모든 작은 박스는 정육면체이고, 크기는 A × A × A 이다. 민식이는 이 작은 박스를 크기가 L × W × H 인 직육면체 박스에 www.acmicpc.net 정답 이분 탐색 문제 (정답 맞춘 여부 X) 1. L, W, H를 구하려는 값 A로 나누었을 때 N보다 작거나 같아야하므로 A를 구하기 위한 이분탐색을 사용한다. A는 최소 0개 부터 쵀대 max(L,W,H)개 까지 있을 수 있으므로, left = 0, right = max(L,W,H), mid = (left+right)//2 이다. 만약 N개의 상자를 모두 넣을 수 있다면(= N보다 작거나 같으면), left =.. 2023. 4. 4.