study 39

유기농 배추 (백준 1012)

문제 차세대 영농인 한나는 강원도 고랭지에서 유기농 배추를 재배하기로 하였다. 농약을 쓰지 않고 배추를 재배하려면 배추를 해충으로부터 보호하는 것이 중요하기 때문에, 한나는 해충 방지에 효과적인 배추흰지렁이를 구입하기로 결심한다. 이 지렁이는 배추근처에 서식하며 해충을 잡아 먹음으로써 배추를 보호한다. 특히, 어떤 배추에 배추흰지렁이가 한 마리라도 살고 있으면 이 지렁이는 인접한 다른 배추로 이동할 수 있어, 그 배추들 역시 해충으로부터 보호받을 수 있다. 한 배추의 상하좌우 네 방향에 다른 배추가 위치한 경우에 서로 인접해있는 것이다. 한나가 배추를 재배하는 땅은 고르지 못해서 배추를 군데군데 심어 놓았다. 배추들이 모여있는 곳에는 배추흰지렁이가 한 마리만 있으면 되므로 서로 인접해있는 배추들이 몇 군..

BFS와 DFS (백준 1260)

1. 그래프 언어 정리 2. BFS와 DFS BFS와 DFS는 그래프 순회(traversal) 알고리즘 중 가장 기본적인 두 가지 방법입니다. BFS(Breadth-First Search) 너비 우선 탐색 시작 노드로부터 시작하여 깊이(depth)가 낮은 노드부터 탐색을 진행하며, 같은 깊이의 노드들은 순서에 상관 없이 방문합니다. BFS는 큐(Queue) 자료구조를 이용하여 구현할 수 있습니다. BFS는 최단 경로를 찾을 때 사용하면 유용합니다. DFS(Depth-First Search) 깊이 우선 탐색 시작 노드로부터 한 방향으로 탐색을 진행하다가 더 이상 탐색할 수 없는 경우, 다시 가장 가까운 갈림길로 돌아와서 다른 방향으로 탐색을 진행합니다. DFS는 스택(Stack) 자료구조 또는 재귀함수를 ..

[JAVA] 27918 탁구 경기

https://www.acmicpc.net/problem/27918 27918번: 탁구 경기 달구와 포닉스는 탁구 치는 것을 좋아한다. 윤이는 오늘도 탁구를 치는 달구와 포닉스를 보고, 누가 경기에서 승리할지 예측해 보기로 했다. 달구와 포닉스가 탁구 경기를 진행하는 규칙은 다음 www.acmicpc.net import java.util.Scanner; import java.util.ArrayList; import java.lang.Math; class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int numOfGame = sc.nextInt(); ArrayList winnerList = new ..

[python] 2293 동전1

https://www.acmicpc.net/problem/2293 2293번: 동전 1 첫째 줄에 n, k가 주어진다. (1 ≤ n ≤ 100, 1 ≤ k ≤ 10,000) 다음 n개의 줄에는 각각의 동전의 가치가 주어진다. 동전의 가치는 100,000보다 작거나 같은 자연수이다. www.acmicpc.net 부분문제 1, 2, 5로 10을 만드는 경우의 수 예를 들어 10에서 5를 포함하여 10을 만들 수 있는 경우의 수는 10-5=5이기 때문에 1,2,5로 5를 만들 수 있는 경우의 수와 같다는 것! 1,2,5로 5를 만들 수 있는 경우 -> 5를 포함하여 10을 만들 수 있는 경우 [1,1,1,1,1], [1,1,1,2], [1,2,2], [5] -> [1,1,1,1,1,5], [1,1,1,2, 5..

[python] 1026 보물

https://www.acmicpc.net/problem/1026 1026번: 보물 첫째 줄에 N이 주어진다. 둘째 줄에는 A에 있는 N개의 수가 순서대로 주어지고, 셋째 줄에는 B에 있는 수가 순서대로 주어진다. N은 50보다 작거나 같은 자연수이고, A와 B의 각 원소는 100보다 작거 www.acmicpc.net 합이 가장 작으려면 배열 a의 가장 작은 수와 배열 b의 가장 큰 수를 곱해주어야함! blist는 정렬이 불가능 하기 때문에 sort()를 사용하지 않고 max, min함수를 이용!! n = int(input()) a=list(map(int,input().split())) b=list(map(int,input().split())) sum=0 for i in range(n): sum += m..

[python] 1002 터렛

https://www.acmicpc.net/problem/1002 1002번: 터렛 각 테스트 케이스마다 류재명이 있을 수 있는 위치의 수를 출력한다. 만약 류재명이 있을 수 있는 위치의 개수가 무한대일 경우에는 -1을 출력한다. www.acmicpc.net 처음 푼 것 T = int(input()) for i in range(T) : x1, y1, r1, x2, y2, r2 = map(int, input().split()) if x1 == x2 and y1 == y2: #두 점이 같을 때 if r1 == r2: #거리 같을 때 print(-1) else:#거리 다를 때 print(0) elif (r1+r2)**2 == (x1-x2)**2+(y1-y2)**2 or (r1-r2)**2 == (x1-x2)*..

[python] 1085 직사각형에서 탈출

https://www.acmicpc.net/problem/1085 1085번: 직사각형에서 탈출 한수는 지금 (x, y)에 있다. 직사각형은 각 변이 좌표축에 평행하고, 왼쪽 아래 꼭짓점은 (0, 0), 오른쪽 위 꼭짓점은 (w, h)에 있다. 직사각형의 경계선까지 가는 거리의 최솟값을 구하는 프로그램 www.acmicpc.net 배열에 넣어서 sort while 1: alist = list(map(int,input().split())) flag =True; for i in alist: if type(i) is not int: flag = False break; if(flag == False): continue if (1

[python]1059 좋은구간 - 틀림!!

https://www.acmicpc.net/problem/1059 1059번: 좋은 구간 [9, 10], [9, 11], [9, 12], [10, 11], [10, 12] www.acmicpc.net 아래 걸로 풀었는데 틀렸다고 나옴 이유아시는 분 알려주세요ㅠㅠ 집합S에 n을 넣고 n의 index 앞뒤값을 최소, 최대값으로 설정 L = int(input())#집합S 크기 S = list(map(int,input().split()))#집합 S에 들어갈 정수 #if len(S) != L : print("잘못된 입력입니다.") n = int(input())#좋은구간에 포함될 n #if max(S) < n : print("잘못된 입력입니다.") if n in S : print(0) else: S.append(n..

[python] 1072 게임

https://www.acmicpc.net/problem/1072 1072번: 게임 김형택은 지금 몰래 Spider Solitaire(스파이더 카드놀이)를 하고 있다. 형택이는 이 게임을 이길 때도 있었지만, 질 때도 있었다. 누군가의 시선이 느껴진 형택이는 게임을 중단하고 코딩을 하기 시 www.acmicpc.net 게임 횟수 : X 이긴 게임 : Y (Z%) Z는 형택이의 승률이고, 소수점은 버린다. X와 Y가 주어졌을 때, 형택이가 게임을 최소 몇 번 더 해야 Z가 변하는지출력, Z가 절대 변하지 않는다면 -1을 출력 조건 중 Z가 절대 변하지 않을 경우는 X, Y가 같을 때, 즉 Z가 100일때와 승률의 소수점은 버리기 때문에 Z가 99인 경우이다. + 파이썬에서 int(y / x) * 100 은..