본문 바로가기

Algorithm(CodeTree, Python)127

[코드트리 구간 단위로 완전탐색] 특정 구간의 원소 평균값 python # n 입력 n = int(input()) # num_list 입력 num_list = list(map(int, input().split())) # 함수들 # is_ok(a, b) def is_ok(a, b): # curr_sum curr_sum = sum(num_list[a:b]) # curr_avg curr_avg = curr_sum / (b-a) # 현재 범위 내에서 for i in range(a, b): # 평균값이 존재하면, if num_list[i] == curr_avg: # 성공 return True # 다 돌았는데 없으면 실패 return False # 설계 # ans ans = 0 # 완전 탐색 시작 -> 시작점과 끝점을 선택 for i in range(n): for j in range(.. 2022. 12. 7.
[코드트리 구간 단위로 완전탐색] G or H 3 python # n, k 입력 n, k = map(int, input().split()) # linear linear = [ 0 for _ in range(10001) ] # pos, point 입력 for _ in range(n): pos, point = input().split() # linear에 정보추가 linear[int(pos)] = point # 함수들 # calc(j) def calc(j): # curr_sum curr_sum = 0 # 해당 구간의 합 구하기 for i in range(j, j + k + 1): # G이면, if linear[i] == 'G': # 1점 추가 curr_sum += 1 # H이면, elif linear[i] == 'H': # 2점 추가 curr_sum += 2 # 반환 .. 2022. 12. 7.
[코드트리 구간 단위로 완전탐색] 아름다운 수열 2 python # n, m 입력 n, m = map(int, input().split()) # a 입력 a = list(map(int, input().split())) # b 입력 b = list(map(int, input().split())) # 함수들 # is_beautiful(k) def is_beautiful(k): # temp temp = [] # k번째부터 m개를 for i in range(k, k + m): # temp에 저장 temp.append(a[i]) # temp 정렬 temp.sort() # return return temp == b # 설계 # ans ans = 0 # b 정렬 b.sort() # 완전 탐색 시작 for i in range(n - m + 1): # 아름다운 수열이면 if is_b.. 2022. 12. 6.
[코드트리 구간 단위로 완전탐색] 구간 중 최대 합 python # n, k 입력 n, k = map(int, input().split()) # num_list 입력 num_list = list(map(int, input().split())) # 함수들 # calc(j) def calc(j): # curr_sum curr_sum = 0 for i in range(j, j+k): curr_sum += num_list[i] # 반환 return curr_sum # 설계 # max_sum max_sum = 0 # 완전탐색 for i in range(n - k + 1): # max_sum 업데이트 max_sum = max(max_sum, calc(i)) # 출력 print(max_sum) 2022. 12. 5.
[코드트리 자리 수 단위로 완전탐색] 특정 수와 근접한 합 python # n, s 입력 n, s = map(int, input().split()) # num_list 입력 num_list = list(map(int, input().split())) # 함수들 # calc(a, b) def calc(a, b): # curr_sum curr_sum = 0 # num_list의 숫자 중 for i in range(n): # a, b번째 인덱스에 있는 숫자면 if i == a or i == b: # 더하지 않고 통과 continue # 나머지는 curr_sum에 추가 curr_sum += num_list[i] # curr_sum과 s의 차이를 반환 return abs(curr_sum - s) # 설계 # min_diff 설정 import sys min_diff = sys.maxs.. 2022. 12. 4.
[코드트리 자리 수 단위로 완전탐색] 숨은 단어 찾기 2 python # n, m 입력 n, m = map(int, input().split()) # grid 입력 grid = [ input() for _ in range(n) ] # 함수들 # l_to_r(x, y) def l_to_r(x, y): # 범위 내에 있고, 오른쪽 두 개가 'E'면 성공 return y = 2 and grid[x][y-1] == 'E' and grid[x][y-2] == 'E' # u_to_d(x, y) def u_to_d(x, y): # 범위 내에 있고, 아래 두 개가 'E'면 성공 return x = 2 and grid[x-1][y] == 'E' and grid[x-2][y] == 'E' # ru_to_ld(x, y) def ru_to_ld(x, y): # 범위 내에 있고, 왼쪽 대각선 아.. 2022. 12. 3.
[코드트리 자리 수 단위로 완전탐색] Carry 피하기 2 python # n 입력 n = int(input()) # num_list num_list = [] # num_list 입력 for _ in range(n): num_list.append(int(input())) # 함수들 # is_carry(a, b, c) def is_carry(a, b, c): # str_a, b, c str_a = str(num_list[a]) str_b = str(num_list[b]) str_c = str(num_list[c]) # max_len 구하기 max_len = max(len(str_a), len(str_b), len(str_c)) # max_len에 맞춰 형식 변환 ex. "6" -> "0006" len_diff_a = max_len - len(str_a) str_a = '0' .. 2022. 12. 2.
[코드트리 자리 수 단위로 완전탐색] 오목 python # table 입력 table = [ list(map(int, input().split())) for _ in range(19) ] # 함수들 # row_five(x, y) def row_five(x, y): # 범위 내에 없으면 탈락 if y >= 15: return False # flag flag = table[x][y] # 연속 다섯개중 for i in range(1, 5): # 다른 게 있으면, if table[x][y+i] != flag: # 실패 return False # 다 통과하면 성공 return True # col_five(x, y) def col_five(x, y): # 범위 내에 없으면 탈락 if x >= 15: return False # flag flag = table[x][y] .. 2022. 12. 1.
[코드트리 자리 수 단위로 완전탐색] 원 모양으로 되어있는 방 python # n 입력 n = int(input()) # ppl_list ppl_list = [] # ppl_list 입력 for _ in range(n): ppl_list.append(int(input())) # 함수들 # calc(k) def calc(k): # curr_dist curr_dist = 0 # 완전 탐색 시작 for i in range(n): # curr_dist 업데이트 curr_dist += ((i - k + n) % n) * ppl_list[i] # return return curr_dist # 설계 # 최소 거리 import sys min_dist = sys.maxsize # 완전 탐색 시작 for i in range(n): # min_dist 업데이트 min_dist = min(min_d.. 2022. 11. 30.
[코드트리 자리 수 단위로 완전탐색] 체크판위에서 2 python # r, c 입력 r, c = map(int, input().split()) # grid 입력 grid = [ list(input().split()) for _ in range(r) ] # 설계 # cnt cnt = 0 # 완전 탐색 시작 for i in range(1, r): for j in range(1, c): for k in range(i+1, r-1): for l in range(j+1, c-1): # 색깔이 전부 달라지는 경우 cnt에 추가 if grid[0][0] != grid[i][j] and grid[i][j] != grid[k][l] and grid[k][l] != grid[-1][-1]: cnt += 1 # 출력 print(cnt) 2022. 11. 29.
[코드트리 자리 수 단위로 완전탐색] 최고의 13위치 2 python 와 이문제 생각보다 빡셌다 # n 입력 n = int(input()) # grid 입력 grid = [ list(map(int, input().split())) for _ in range(n) ] # 함수들 # is_duplicated(x, y) def is_duplicated(x, y): # first_x, first_y ~ first_x, first_y + 2 까지 겹치면 True return x == first_x and (y == first_y or y == first_y - 1 or y == first_y - 2) # 설계 # 첫 번째 최대 코인 first_max = 0 # 첫 번째 최대 코인의 좌표 first_x, first_y = 0, 0 # 첫 번째 완전 탐색 for i in range(n.. 2022. 11. 28.
[코드트리 자리 수 단위로 완전탐색] 씨 오 더블유 2 python # n 입력 n = int(input()) # cow 입력 cow = input() # 설계 # cnt cnt = 0 # 마지막에서 3번째전까지 for i in range(n-2): # C를 찾으면 if cow[i] == 'C': # 그 다음부터 2번째 전까지 for j in range(i+1, n-1): # O를 찾으면 if cow[j] == 'O': # 그 다음부터 마지막까지 for k in range(j+1, n): # W를 찾으면 if cow[k] == 'W': # cnt에 추가 cnt += 1 # 출력 print(cnt) 2022. 11. 17.
[코드트리 자리 수 단위로 완전탐색] 최고의 13위치 python # n 입력 n = int(input()) # grid 입력 grid = [ list(map(int, input().split())) for _ in range(n) ] # 함수들 # calc(x, y) def calc(x, y): # curr_coin curr_coin = grid[x][y] + grid[x][y+1] + grid[x][y+2] # return return curr_coin # 설계 # 최대 동전의 수 설정 max_coin = 0 # grid 돌기 for i in range(n): # 열 for j in range(n-2): # 행 # max_coin update max_coin = max(max_coin, calc(i, j)) # 출력 print(max_coin) 2022. 11. 15.
[코드트리 자리 수 단위로 완전탐색] 마라톤 중간에 택시타기 2 python # n 입력 n = int(input()) # check_points check_points = [] # check_point 입력 for _ in range(n): x, y = map(int, input().split()) check_points.append([x, y]) # 함수들 # simulate(k) def simulate(k): # curr_dist curr_dist = 0 # temp_check_points temp_check_points = [] # check_points를 돌면서 for i in range(n): # k번째를 제외한 check_point를 넣어줌 if i == k: continue else: temp_check_points.append(check_points[i]) # t.. 2022. 11. 14.
[코드트리 자리 수 단위로 완전탐색] 일렬로 서있는 소 2 python n^3의 시간복잡도로 해결하였다. 재귀로 해결해도 될 것 같긴 한데,, # n 입력 n = int(input()) # 키 입력 cow_height = list(map(int, input().split())) # 설계 # 정답 ans = 0 # 완전 탐색 시작 for i in range(n-2): # 현재 기준 다음부터 for j in range(i+1, n-1): # 다음이 더 크다면 if cow_height[i] 2022. 11. 10.
[코드트리 자리 수 단위로 완전탐색] 괄호 쌍 만들어주기 3 python # 입력 a = input() # 설계 # 정답 ans = 0 # 탐색 시작 for i in range(len(a)): # (를 찾으면 if a[i] == '(': # 그 이후부터 다시 탐색 for j in range(i+1, len(a)): # )를 찾으면 if a[j] == ')': # 정답에 추가 ans += 1 # 출력 print(ans) 2022. 11. 8.
[코드트리 자리 수 단위로 완전탐색] 이상한 진수 2 python # 입력 a = input() # 함수들 # calc(num_list) def calc(num_list): # curr_sum curr_sum = 0 # num_list의 길이(제곱 시작의 길이 구하기) start_num = len(num_list) - 1 # 계산 for num in num_list: # 1이라면 if num == 1: # 제곱하여 추가 curr_sum += 2 ** start_num # start_num 내려주기 start_num -= 1 # 0이라면 else: # start_num 내려주기 start_num -= 1 # 반환 return curr_sum # 설계 # 리스트로 관리 a_list = [] for i in a: a_list.append(int(i)) # max_num ma.. 2022. 11. 7.
[코드트리 자리 수 단위로 완전탐색] 괄호 쌍 만들어주기 2 python # 입력 s = input() # 설계 # 정답 설정 ans = 0 for i in range(len(s) - 1): # '(('를 찾으면 if s[i] == '(' and s[i+1] == '(': # 이후에 '))'가 있는지 확인 for j in range(i+2, len(s) - 1): # 있으면 if s[j] == ')' and s [j+1] == ')': # ans 추가 ans += 1 # 출력 print(ans) 2022. 11. 3.