취뽀 기록

#열심히 살자 #취업 #공부

Python/[코드트리] 128

[코드트리] 새로운 2차원 배열의 선언 > 두 배열의 곱

3행 3열의 배열 두 개가 주어지면 두 배열의 같은 위치에 있는 숫자의 곱을 출력하는 프로그램을 작성해보세요. # 첫 번째 2차원 배열을 구현해 정수를 입력받습니다. arr_1 = [ list(map(int, input().split())) for _ in range(3) ] input() # 두 번째 2차원 배열을 구현해 정수를 입력받습니다. arr_2 = [ list(map(int, input().split())) for _ in range(3) ] # 2차원 배열을 구현합니다. arr_3 = [ [0 for _ in range(3)] for _ in range(3) ] # 두 배열의 곱을 새로운 배열에 담습니다. for i in range(3): for j in range(3): arr_3[i][j..

[코드트리] 새로운 2차원 배열의 선언 > 숫자 직사각형

정수 n과 m의 값을 입력받아 숫자로 이루어진 직사각형을 출력하는 프로그램을 아래 예를 참고하여 작성해보세요. 단, 2차원 배열을 꼭 사용하여 해결해보세요. 예) n에 3을 m에 5를 입력받는 경우 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 # 풀이 1 n, m = list(map(int, input().split())) # 행의 개수 n, 열의 개수 m 입력 받기 # n, m = tuple(map(int, input().split())) 이렇게 해도 됨 # 2차원 배열 구현 arr_2d = [ [0 for _ in range(m)] for _ in range(n) ] # n * m 크기의 배열에 숫자를 채워 넣기 num = 1 for i in range(n): # n행 for j ..

[코드트리] 2차원 배열 입력 > 플로이드-워셜 알고리즘(Warshall algorithm)

플로이드-워셜 알고리즘 한 정점으로부터 다른 모든 정점까지의 최단거리를 모든 정점에 대해 구하는 알고리즘 dist[A][B] = min(dist[A][B], dist[A][C] + dist[C][B]) - 왼쪽과 같은 그래프가 존재할 때, 오른쪽 표는 i -> j로 가는 최단거리 - 자기 자신은 0으로, 도달할 수 없는 노드(선으로 연결되어 있지 않은 노드)는 무한대로 초기화 플로이드 와샬 알고리즘은 노드 선택 순서가 중요! 제일 먼저 거칠 노드 C를 정한 후, 시작 노드 A와 도착 노드 B를 정해야 함 => 그래야 시작 노드에서 도착 노드의 최솟값 갱신이 순서에 상관없이 가능 ex) 2번 노드를 거쳐 가는 경우 이 그래프에서 2번 노드를 거쳐가면서 경로가 짧아지는 경우는 3번 노드 -> 4번 노드로 가..

[코드트리] 2차원 배열 입력 > 배열의 평균(★)

숫자로 이루어진 2행 4열의 배열이 주어지면 가로 평균, 세로 평균, 전체 평균을 소수 첫째 자리까지만 출력하는 프로그램을 작성해보세요. # 2차원 배열을 구현해 각 줄마다 정수를 입력받습니다. arr_2d = [ list(map(int, input().split())) for _ in range(2) ] # 가로 평균을 출력합니다. for i in range(2): sum_val = 0 for j in range(4): sum_val += arr_2d[i][j] print(f"{sum_val / 4:.1f}", end=" ") print() # 세로 평균을 출력합니다. for i in range(4): sum_val = 0 for j in range(2): sum_val += arr_2d[j][i] p..

[코드트리] 2차원 배열 입력 > 대문자로 바꾸기

소문자 알파벳으로 이루어진 5행 3열의 배열이 주어지면 대문자로 바꾸어서 출력하는 프로그램을 작성해보세요. # 2차원 배열을 구현해 각 줄마다 알파벳 소문자를 입력받습니다. arr_2d = [ list(input().split()) for _ in range(5) ] # 알파벳 소문자를 대문자로 바꾸어 출력합니다. for i in range(5): for j in range(3): arr_2d[i][j] = chr(ord(arr_2d[i][j]) + ord('A') - ord('a')) print(arr_2d[i][j], end=" ") print() # 나의 풀이 --------------------------------------- for _ in range(5): arr = list(map(str,..

[코드트리] 문자열을 정수로 변환하기 > 알파벳 지우기

알파벳과 숫자로 이루어진 문자열이 두 개 주어지면, 각 문자열에서 알파벳을 제외하고 남은 숫자부분을 차례대로 이어붙여 만든 수를 구하고, 두 문자열에서 구한 두 수의 합을 구하는 프로그램을 작성해보세요. # 문자열을 구현하여 입력받습니다. a = input() b = input() idx1 = 0 idx2 = 0 str1 = "" str2 = "" # a의 정수로 변환 가능한 부분을 다른 문자열로 옮깁니다. for elem in a: if ord(elem) = ord('0'): str1 += elem # b의 정수로 변환 가능한 부분을 다른 문자열로 옮깁니다. for elem in b: if ord(elem) = ord('0'): str2 += elem # 합쳐진 문자열을 숫자로 바꿉니다. str1 = ..

[코드트리] 문자열을 정수로 변환하기 > 정수만 추출하기

공백을 포함하지 않는 두 개의 문자열이 주어지면 앞에서부터 정수 이외의 문자가 나오기 전까지의 부분에서 정수로 변환 가능한 부분을 변환한 후 두 수의 합을 출력하는 프로그램을 작성해보세요. # 문자열을 구현하여 입력받습니다. a, b = input().split() idx1 = 0 idx2 = 0 # a의 정수로 변환 가능한 최대 인덱스를 찾습니다. for elem in a: if elem = '0': idx1 += 1 else: break # b의 정수로 변환 가능한 최대 인덱스를 찾습니다. for elem in b: if elem = '0': idx2 += 1 else: break str1 = a[:idx1] str2 = b[:idx2] # 합쳐진 문자열을 숫자로 바꿉니다. str1 = int(str..

[코드트리] 문자열 밀기 > 문자열 한 칸씩 밀어내며 뒤집기

문자열 한 개 입력으로 주어지고 q개의 요청이 주어지면, 각 요청을 수행한 결과를 모두 출력하는 코드를 작성해보세요. 요청의 종류에는 아래의 세 가지가 있습니다. 가장 앞에 있는 문자를 제외한 나머지 문자를 한 칸씩 앞으로 당기고 가장 앞에 있던 문자를 가장 뒤로 옮깁니다. 가장 뒤에 있는 문자를 제외한 나머지 문자를 한 칸씩 뒤로 밀고 가장 뒤에 있던 문자를 가장 앞으로 옮깁니다. 문자열을 좌우로 뒤집습니다 # 문자열과 q를 입력받습니다. string, q_num = input().split() # 문자열 내 값을 직접 변경하기 위해서는 리스트로 변환하여 해결합니다. list_str = list(string) q_num = int(q_num) # 문자열의 길이를 구합니다. str_size = len(l..