Programmers(61)
-
1039.교환
테스트 코드는 모두 통과했으나 , 반례를 못찾아서 풀지 못한 문제다..# 무조건 k번 수행해야 함# input : n, k / output : k번 바꾸어 나올 수 있는 최댓값n, k = input().split()number = list(n)k = int(k)# 자릿수가 1자리이거나, 뒷자리에 0만 포함되어 있을 시if len(number) == 1 or set(number) == {number[0], '0'}: result = -1 print(result)else: idx = 0 # 1~i 내림차순 진행 # i~k 내림차순으로 정렬되어 있을 경우, 남은 횟수(k-i)만큼 가장 작은 두 수끼리 교환 while (idx 0): max_idx = idx ..
2024.05.19 -
14503. 로봇 청소기
https://www.acmicpc.net/problem/14503 # output: 청소하는 영역의 개수 # N * M # 동서남북 # 반시계 방향으로 90도 회전 # dfs def dfs(x, y, d): global count # 방향 : 북 / 동 / 남 / 서 # direction = [0, 1, 2, 3] dx = [-1, 0, 1, 0] dy = [0, 1, 0, -1] if not visited[x][y]: visited[x][y] = 1 # 아직 청소되지 않은 경우, 현재 칸을 청소한다. if graph[x][y] == 0: graph[x][y] = 1 count += 1 aldy_cln = 0 for i in range(4): nx, ny = x + dx[i], y + dy[i] if ..
2024.04.21 -
9205.맥주 마시면서 걸어가기
https://www.acmicpc.net/problem/9205 from collections import deque t = int(input()) # 테스트 개수 def bfs(x, y, graph): # 한 박스당 1000m 이동 가능(50*20) # 1000M 내로 편의점 / 목적지 도달 실패 ==> sad while graph: a, b = graph.popleft() if abs(x-a) + abs(y-b) >= 1000: print("sad") return False else: x, y = a, b print("happy") return True # main for _ in range(t): n = int(input()) # 맥주를 파는 편의점의 개수 graph = deque() start_..
2024.04.20 -
2468. 안전영역
그저 최소(최대)만 보면 BFS로 눈돌아가는 나..(언제 정신차릴래)ㅜ from collections import deque n = int(input()) graph = [list(map(int, input().split())) for _ in range(n)] # max 값 찾기(O(n)) max_value = 0 for i in range(len(graph)): a = max(graph[i]) if a > max_value: max_value = a q = deque([(0,0)]) i = 0 count = 1 # 1씩 줄여나가면서 안전 영역 개수 찾기 by BFS while q: x, y = q.popleft() value = max_value - i dx = [0, 0, 1, -1] dy = [1..
2024.04.18 -
[2644]촌수 계산
https://www.acmicpc.net/problem/2644 2644번: 촌수계산 사람들은 1, 2, 3, …, n (1 ≤ n ≤ 100)의 연속된 번호로 각각 표시된다. 입력 파일의 첫째 줄에는 전체 사람의 수 n이 주어지고, 둘째 줄에는 촌수를 계산해야 하는 서로 다른 두 사람의 번호가 주어 www.acmicpc.net 처음엔 DFS로 접근을 하려고 했으나..문제가 있었다. n = int(input()) a, b = map(int, input().split()) m = int(input()) graph = [[] for _ in range(n+1)] for _ in range(m): x, y = map(int, input().split()) graph[x].append(y) graph[y]...
2024.04.10 -
[SQL] 노선별 평균 역 사이 거리 조회하기
총 누계거리는 테이블 내 존재하는 역들의 역 사이 거리의 총 합을 뜻합니다. 총 누계 거리와 평균 역 사이 거리의 컬럼명은 각각 TOTAL_DISTANCE, AVERAGE_DISTANCE로 해주시고, 총 누계거리는 소수 둘째자리에서, 평균 역 사이 거리는 소수 셋째 자리에서 반올림 한 뒤 단위(km)를 함께 출력해주세요. 결과는 총 누계 거리를 기준으로 내림차순 정렬해주세요. SELECT A.ROUTE , CONCAT(ROUND(SUM(A.D_BETWEEN_DIST), 2), 'km')AS TOTAL_DISTANCE , CONCAT(ROUND(AVG(A.D_BETWEEN_DIST), 3), 'km') AS AVERAGE_DISTANCE FROM SUBWAY_DISTANCE A GROUP BY ROUTE ..
2024.03.10