코테문제풀이
-
문제 보기 : 1021번: 회전하는 큐 문제정답률 : 61% 작성 코드from collections import deque# 입력 받기n, m = map(int, input().split()) # 큐 크기 n, 뽑아낼 원소의 개수 mtargets = list(map(int, input().split())) # 뽑아낼 원소의 위치# 큐 초기화que = deque(range(1, n + 1)) # 1부터 n까지의 숫자 포함answer = 0 # 총 연산 횟수# 뽑아내기for target in targets: while True: if que[0] == target: que.popleft() break else: ..
S3 1021. 회전하는 큐문제 보기 : 1021번: 회전하는 큐 문제정답률 : 61% 작성 코드from collections import deque# 입력 받기n, m = map(int, input().split()) # 큐 크기 n, 뽑아낼 원소의 개수 mtargets = list(map(int, input().split())) # 뽑아낼 원소의 위치# 큐 초기화que = deque(range(1, n + 1)) # 1부터 n까지의 숫자 포함answer = 0 # 총 연산 횟수# 뽑아내기for target in targets: while True: if que[0] == target: que.popleft() break else: ..
2025.01.04 -
문제 보기 : 2583번: 영역 구하기 문제정답률 : 57%작성 코드# n: 세로 크기, m: 가로 크기, t: 직사각형 개수 입력받기n, m, t = map(int, input().split())# arr: 방문 여부를 저장하는 2차원 배열 초기화arr = [[False] * m for _ in range(n)]# t개의 직사각형 좌표를 입력받아 해당 영역을 True로 설정for _ in range(t): a1, b1, a2, b2 = map(int, input().split()) for y in range(a1, a2): # x 좌표 범위 for x in range(n - b2, n - b1): # y 좌표 범위 (상하 뒤집힘 처리) arr[x][y] ..
S1 2583. 영역 구하기문제 보기 : 2583번: 영역 구하기 문제정답률 : 57%작성 코드# n: 세로 크기, m: 가로 크기, t: 직사각형 개수 입력받기n, m, t = map(int, input().split())# arr: 방문 여부를 저장하는 2차원 배열 초기화arr = [[False] * m for _ in range(n)]# t개의 직사각형 좌표를 입력받아 해당 영역을 True로 설정for _ in range(t): a1, b1, a2, b2 = map(int, input().split()) for y in range(a1, a2): # x 좌표 범위 for x in range(n - b2, n - b1): # y 좌표 범위 (상하 뒤집힘 처리) arr[x][y] ..
2025.01.04 -
문제 보기 : 13305번: 주유소 문제정답률 : 39% 작성 코드 & 풀이nodes = int(input())#노드별 거리distance = list(map(int,input().split()))dist = sum(distance)# 1리터당 가격price = list(map(int,input().split()))l = [0]*nodesfor i in range(nodes): k = 0 ; passdist = 0 for j in range(i): passdist += distance[j] k += price[j]*distance[j] k += price[i]*(dist-passdist) l[i] = kprint(min(l))처음 작성한 코드가 틀린 이유는..
S3 13305. 주유소문제 보기 : 13305번: 주유소 문제정답률 : 39% 작성 코드 & 풀이nodes = int(input())#노드별 거리distance = list(map(int,input().split()))dist = sum(distance)# 1리터당 가격price = list(map(int,input().split()))l = [0]*nodesfor i in range(nodes): k = 0 ; passdist = 0 for j in range(i): passdist += distance[j] k += price[j]*distance[j] k += price[i]*(dist-passdist) l[i] = kprint(min(l))처음 작성한 코드가 틀린 이유는..
2025.01.03 -
문제 보기 : 9251번: LCS 문제정답률 : 41%작성 코드# 입력값str1 = input() ; len1 = len(str1)str2 = input() ; len2 = len(str2)# DP 테이블 초기화dp = [[0]*(len2+1) for _ in range(len1+1)]# DP 계산for i in range(1,len1+1): for j in range(1,len2+1): if str1[i-1]==str2[j-1]: dp[i][j] = dp[i-1][j-1] + 1 else: dp[i][j] = max(dp[i-1][j],dp[i][j-1])print(dp[len1][len2])풀이1. 두 문자열의 길이에 맞는 DP ..
G5 9251. LCS문제 보기 : 9251번: LCS 문제정답률 : 41%작성 코드# 입력값str1 = input() ; len1 = len(str1)str2 = input() ; len2 = len(str2)# DP 테이블 초기화dp = [[0]*(len2+1) for _ in range(len1+1)]# DP 계산for i in range(1,len1+1): for j in range(1,len2+1): if str1[i-1]==str2[j-1]: dp[i][j] = dp[i-1][j-1] + 1 else: dp[i][j] = max(dp[i-1][j],dp[i][j-1])print(dp[len1][len2])풀이1. 두 문자열의 길이에 맞는 DP ..
2024.12.31 -
문제 보기 : 16953번: A → B 문제정답률 : 39%작성 코드# 입력값을 받음 (시작 값 n, 목표 값 m)n, m = map(int, input().split())answer = -1 # 결과 초기화visited = set() # 방문한 노드를 기록할 집합visited.add(n) # 시작 노드를 방문 처리from collections import dequedd = deque([(n, 1)]) # BFS를 위한 큐 (현재 값, 연산 횟수)while dd: now, cal = dd.popleft() # 큐에서 현재 값과 연산 횟수를 꺼냄 if now == m: # 목표 값에 도달한 경우 answer = cal # 결과에 연산 횟수 저장 br..
S2 16953. A → B문제 보기 : 16953번: A → B 문제정답률 : 39%작성 코드# 입력값을 받음 (시작 값 n, 목표 값 m)n, m = map(int, input().split())answer = -1 # 결과 초기화visited = set() # 방문한 노드를 기록할 집합visited.add(n) # 시작 노드를 방문 처리from collections import dequedd = deque([(n, 1)]) # BFS를 위한 큐 (현재 값, 연산 횟수)while dd: now, cal = dd.popleft() # 큐에서 현재 값과 연산 횟수를 꺼냄 if now == m: # 목표 값에 도달한 경우 answer = cal # 결과에 연산 횟수 저장 br..
2024.12.31 -
문제 보기 : 6603번: 로또 문제정답률 : 55%작성 코드while True: arr = input() # 입력을 받음 if arr == "0": # 입력이 "0"이면 종료 break arr = list(map(int, arr.split())) # 입력을 공백으로 분리하여 정수 리스트로 변환 n = arr.pop(0) # 첫 번째 값을 n으로 설정하고 리스트에서 제거 # 중복 없는 조합 생성 함수 def combinations(n, new, c): answer = [] if len(new) == n: # 조합의 길이가 목표(n)에 도달하면 반환 return [new] for i in ran..
S2 6603. 로또문제 보기 : 6603번: 로또 문제정답률 : 55%작성 코드while True: arr = input() # 입력을 받음 if arr == "0": # 입력이 "0"이면 종료 break arr = list(map(int, arr.split())) # 입력을 공백으로 분리하여 정수 리스트로 변환 n = arr.pop(0) # 첫 번째 값을 n으로 설정하고 리스트에서 제거 # 중복 없는 조합 생성 함수 def combinations(n, new, c): answer = [] if len(new) == n: # 조합의 길이가 목표(n)에 도달하면 반환 return [new] for i in ran..
2024.12.31 -
문제 보기 : 15657번: N과 M (8) 문제정답률 : 81%작성 코드n,m = map(int, input().split())arr = list(map(int, input().split())) # 입력을 정수 리스트로 변환arr = sorted(set(arr)) # 중복 제거 및 정렬arr.sort()# 중복 없는 조합 생성 함수def combinations_without_replacement(n,new,c): answer = [] if len(new)==n: return [new] for i in range(c,len(arr)): answer.extend(combinations_without_replacement(n,new+[arr[i]],i)) ..
S3 15657. N과 M (8)문제 보기 : 15657번: N과 M (8) 문제정답률 : 81%작성 코드n,m = map(int, input().split())arr = list(map(int, input().split())) # 입력을 정수 리스트로 변환arr = sorted(set(arr)) # 중복 제거 및 정렬arr.sort()# 중복 없는 조합 생성 함수def combinations_without_replacement(n,new,c): answer = [] if len(new)==n: return [new] for i in range(c,len(arr)): answer.extend(combinations_without_replacement(n,new+[arr[i]],i)) ..
2024.12.30 -
문제 보기 : 1991번: 트리 순회 문제정답률 : 67%작성 코드# 전위 순회: 현재 노드 → 왼쪽 자식 → 오른쪽 자식def preorder(node): if node == '.': # 자식이 없는 경우 return '' return node + preorder(tree[node][0]) + preorder(tree[node][1])# 중위 순회: 왼쪽 자식 → 현재 노드 → 오른쪽 자식def inorder(node): if node == '.': # 자식이 없는 경우 return '' return inorder(tree[node][0]) + node + inorder(tree[node][1])# 후위 순회: 왼쪽 자식 → 오른쪽 자식 → 현재 노드..
S1 1991. 트리 순회문제 보기 : 1991번: 트리 순회 문제정답률 : 67%작성 코드# 전위 순회: 현재 노드 → 왼쪽 자식 → 오른쪽 자식def preorder(node): if node == '.': # 자식이 없는 경우 return '' return node + preorder(tree[node][0]) + preorder(tree[node][1])# 중위 순회: 왼쪽 자식 → 현재 노드 → 오른쪽 자식def inorder(node): if node == '.': # 자식이 없는 경우 return '' return inorder(tree[node][0]) + node + inorder(tree[node][1])# 후위 순회: 왼쪽 자식 → 오른쪽 자식 → 현재 노드..
2024.12.29