코딩테스트 7

[백준] 1937번 욕심쟁이판다 - 파이썬

https://www.acmicpc.net/problem/1937 1937번: 욕심쟁이 판다 n × n의 크기의 대나무 숲이 있다. 욕심쟁이 판다는 어떤 지역에서 대나무를 먹기 시작한다. 그리고 그 곳의 대나무를 다 먹어 치우면 상, 하, 좌, 우 중 한 곳으로 이동을 한다. 그리고 또 그곳에 www.acmicpc.net 💡문제이해 : 욕심쟁이 판다는 상,하,좌,우로 이동할 수 있는데 단 머물러 있던 자리보다 대나무가 많아야 한다. 즉, 더 큰 수로만 이동할 수 있다. 최대한 많은 칸을 이동할 때 칸의 수를 구해라. 🤔 만일 2에서 이동한다고 하면 2→ 5 →11 →15 , 2→ 15, 2→ 13, 2→ 16으로 이동 가능 1. 대나무 숲 정보 입력받아오기 n = int(input()) arr = [li..

[백준] 10815번 숫자카드 - 파이썬

https://www.acmicpc.net/problem/10815 10815번: 숫자 카드 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10, www.acmicpc.net 💡문제이해 : 주어진 수에 대해서 상근이 가지고 있는 카드 중 해당되는 숫자가 있으면 1, 없으면 0 출력 🤔 풀이 : 완전탐색도 가능하겠지만 이분탐색을 이용하여 해결 1. 주어진 수와 상근이 가지고 있는 카드 받아오기 n = int(input()) arr1 = list(map(int,input().split())) m = int(input()) arr2 = list..

[백준] 2805번 나무자르기 - 파이썬

https://www.acmicpc.net/problem/2805 2805번: 나무 자르기 첫째 줄에 나무의 수 N과 상근이가 집으로 가져가려고 하는 나무의 길이 M이 주어진다. (1 ≤ N ≤ 1,000,000, 1 ≤ M ≤ 2,000,000,000) 둘째 줄에는 나무의 높이가 주어진다. 나무의 높이의 합은 항상 M보 www.acmicpc.net sol) 사용한 알고리즘 : 이분탐색 💡문제이해 나무의 높이 : 20 15 10 17 , 최소 집으로 가져가려고 하는 나무의 길이 : 7 20-15 + 17-15 = 7 ⇒ 설정할 수 있는 최대 높이 : 15 🤔 이분탐색을 이용해 설정할 수 있는 최대 높이 찾기 1. 나무의 수 (n) , 집으로 가져오려고 하는 최소 나무의 길이 (m) 와 나무들의 길이(fo..

[백준] 2606번 바이러스 - 파이썬

💡그래프 탐색에는 BFS가 더 좋다 DFS : 경우의 수를 탐색하는 방법 BFS : 노드와 노드의 관계를 탐색하는 방법 https://www.acmicpc.net/problem/2606 2606번: 바이러스 첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하인 양의 정수이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍 www.acmicpc.net sol) 1번 컴퓨터와 네트워크 상 연결되어있는 컴퓨터의 수 출력 DFS 풀이 1. 각 노드에서 연결된 컴퓨터 리스트 만들기 #노드 수 n = int(input()) #네트원크 상에서 직접 연결되어 있는 컴퓨터의 쌍의 수 m = int(input()) graph = [[] for _ ..

[백준] 2961번 도영이가 만든 맛있는 음식 - 파이썬

https://www.acmicpc.net/problem/2961 2961번: 도영이가 만든 맛있는 음식 첫째 줄에 재료의 개수 N(1 ≤ N ≤ 10)이 주어진다. 다음 N개 줄에는 그 재료의 신맛과 쓴맛이 공백으로 구분되어 주어진다. 모든 재료를 사용해서 요리를 만들었을 때, 그 요리의 신맛과 쓴맛은 www.acmicpc.net solution) 모든 경우의 수를 따져서 계산하는 방법 사용 1. 입력 받아오기 n = int(input()) flavor = [list(map(int,input().split())) for _ in range(n)] 2. 재귀함수를 사용해 모든 경우의 수 따지기 - answer을 크게 설정해 신맛과 쓴맛의 차이가 가장 작은 요리 출력 def recur(idx, sour ,..

[백준] 2503번 숫자야구 - 파이썬

#2503번 https://www.acmicpc.net/problem/2503 2503번: 숫자 야구 첫째 줄에는 민혁이가 영수에게 몇 번이나 질문을 했는지를 나타내는 1 이상 100 이하의 자연수 N이 주어진다. 이어지는 N개의 줄에는 각 줄마다 민혁이가 질문한 세 자리 수와 영수가 답한 스트 www.acmicpc.net 1. 3자리로 구성된 숫자 (100~999) 2. 3자리로 구성된 숫자와 제시된 숫자를 비교해 스트라이크 개수, 볼의 개수가 같으면 답 +1 첫번째 방법 ⇒ 완전탐색 n = int(input()) numbers = [list(map(int,input().split())) for _ in range(n)] answer = 0 for a in range(1,10): # 100의 자리수 f..

코딩테스트 공부 day3 [DFS/BFS]

본 자료는 '동빈나' 유튜브를 참고했습니다. https://www.youtube.com/watch?v=7C9RgOcvkvo 1.스택 자료구조 - 먼저 들어 온 데이터가 나중에 나가는 형식 (선입후출)의 자료 구조 - 입구와 출구가 동일한 형태 stack = [] # 삽입(5) - 삽입(2) - 삽입(3) - 삽입(7) - 삭제() - 삽입(1) - 삽입(4) - 삭제() stack.append(5) stack.append(2) stack.append(3) stack.append(7) stack.pop() stack.append(1) stack.append(4) stack.pop() print(stack[::-1]) #최상단 원소부터 출력 print(stack) #최하단 원소부터 출력 실행결과 [1,3,2..