[백준][Python] 1976번 여행 가자
·
백준/분리 집합
코드def solution(): n = int(input()) m = int(input()) global parent parent = [i for i in range(n)] for i in range(n): row = list(map(int, input().split())) for j in range(n): if row[j] == 1: union(i, j) plan = list(map(int, input().split())) root = find_parent(plan[0] - 1) for i in range(m): if find_parent(plan[i] - 1) != root: print("NO") return print..
[백준][Python] 1027번 고층 건물
·
백준/구현
코드import sysdef can_see(x1, y1, x2, y2, x3, y3): giulgi = (y2 - y1) / (x2 - x1) return giulgi * (x3 - x1) + y1 > y3 def solution(): n = int(input()) count = [0 for _ in range(n)] li = list(map(int, input().split())) # n은 50보다 같거나 작은 자연수 n^2 가능할듯 for i in range(n - 1): for j in range(i + 1, n): flag = True ## 사이에 접하거나 막히는 건물이 있는지 확인 for s in range(i + 1, j): if..
[백준][Python] 202920번 영단어 암기는 어려워
·
백준/구현
코드import sysfrom collections import defaultdictinput = sys.stdin.readlinedef solution(): ## 1. 자주 나오는 언어일수록 앞에 배치 ## 2. 해당 언어의 길이가 길수록 앞에 배치 ## 3. 알파벳 사전순 answer = [] appear = defaultdict(int) n, m = map(int, input().split()) for _ in range(n): word = input().strip() if len(word) >= m: appear[word] += 1 sorted_li = sorted(appear.items(), key=lambda x: (-x[1], -len(x[0]), x[0..
[백준][Python] 23971번 ZOAC 4
·
백준/구현
코드def solution(): h, w, n, m = map(int, input().split()) row = w // (m + 1) if w % (m + 1) > 0: row += 1 col = h // (n + 1) if h % (n + 1) > 0: col += 1 print(row * col)solution() 풀이사람이 앉아야하는 좌석과 유지되어야하는 간격을 합쳐서 일렬로 최대로 나열할 수 있는 만큼 계산한다.한 행에 나열될 수 있는 사람 수를 계산한다.row = w // (m + 1)행의 마지막 사람은 오른쪽에 주어진 간격을 지킬 필요가 없으니 한 자리라도 남았다면 사람을 배치할 수 있다.if w % (m + 1) > 0: row += 1열도 이와 마찬가지로 계산..
[백준][Python] 20125번 쿠키의 신체 측정
·
백준/구현
코드# 시작 시간 12시 49분## 첫 제출 1시 22분def solution(): n = int(input()) grid = [list(input()) for _ in range(n)] # 두 번째 줄에는 각각 왼쪽 팔, 오른쪽 팔, 허리, 왼쪽 다리, 오른쪽 다리의 길이를 공백으로 구분해서 출력하여라. answer = [] center_x, center_y = 0, 0 for i in range(n - 1): for j in range(n - 1): if grid[i][j] == '*': if grid[i][j + 1] == '*' and grid[i][j - 1] == '*' and grid[i - 1][j] == '*' and grid[i + 1][j] == ..
[백준][Python] 1850번 LCM
·
백준/구현
https://www.acmicpc.net/problem/5347 코드def gcd(n, m): while m > 0: n, m = m, n % m return nt = int(input())for _ in range(t): n, m = map(int, input().split()) print(n * m // gcd(n, m)) 풀이유클리드 호제법을 다시 복습하였는데 오랜만에 하느라 익숙하지가않았다. 그동안 너무 개발만해서 그런가 싶기도하고 반복문으로 구현된 유클리드 호제법 def gcd(n, m): while m > 0: n, m = m, n % m return n 재귀문으로 구현된 유클리드 호제법 def gcd(n, m): if m == 0: return n ..
[백준][Python] 1972번 놀라운 문자열 - 실버 3
·
백준/구현
https://www.acmicpc.net/problem/1972 문제 풀이주어진 문자열의 간격을 이중 for문 혹은 while과 for문으로 구성해서 풀 수 있습니다.그리고 만들어진 쌍은 집합에 저장하여 효율적인 공간을 구성해주었습니다. 코드# 1972번 놀라운 문자열ALERTS = ['is surprising.', 'is NOT surprising.']while 1: word = input() if word == "*": break ALERTS_idx = 0 # 문자열 확인 코드 작성. # 이중 for문을 활용하여서 for j in range(i, num) # 그러고 나서 set에 저장. 그러나 이미 존재한다면 break D = 1 while D..
[백준][Python] 1135번 뉴스 전하기 - 골드 2
·
백준/다이내믹 프로그래밍
https://www.acmicpc.net/problem/1135  문제 풀이깊이 우선 탐색과 DP를 활용하여 문제를  풀어주었습니다.DFS방식을 사용하여 리프 노드에 도달한 뒤, 리프 노드에서부터 오름차순으로 걸리는 시간을 계산해줍니다. 코드# 1135번 뉴스 전하기num = int(input())order = list(map(int, input().split()))tree = [[] for _ in range(num)]for idx, manager in enumerate(order): if idx != 0: tree[manager].append(idx)dp = [0 for _ in range(num)]def dfs(node): node_to_sub = [] for sub ..
개발자 성현
'백준' 카테고리의 글 목록