목록알고리즘/SWEA (72)
여름의 서재
📕 문제 ABBA처럼 어느 방향에서 읽어도 같은 문자열을 회문이라 한다. NxN 크기의 글자판에서 길이가 M인 회문을 찾아 출력하는 프로그램을 만드시오. 회문은 1개가 존재하는데, 가로 뿐만 아니라 세로로 찾아질 수도 있다. def trans_matrix(A): # 전치행렬 구하는 함수 row = len(A) col = len(A[0]) B = [[0 for row in range(row)] for col in range(col)] for i in range(row): for j in range(col): B[j][i] = A[i][j] return B def palindrome(text): # 회문인지 판별하는 함수 start = 1 end = len(text)-2 while start
📕 문제 두 개의 문자열 str1과 str2가 주어진다. 문자열 str2 안에 str1과 일치하는 부분이 있는지 찾는 프로그램을 만드시오. 예를 들어 두 개의 문자열이 다음과 같이 주어질 때, 첫 문자열이 두번째에 존재하면 1, 존재하지 않으면 0을 출력한다. # 보이어무어 알고리즘 이용 def find(pattern, char): # 얼마나 움직일지 결정하는 함수 for i in range(len(pattern) - 2, -1, -1): # 마지막글자와 패턴중 일치하는 숫자가 있다면 그만큼 이동한다. if pattern[i] == char: return len(pattern) - i - 1 # 일치하는 글자가 없다면 패턴의 길이만큼 이동한다. return len(pattern) def boyer_moo..
T = int(input()) number = ["ZRO", "ONE", "TWO", "THR", "FOR", "FIV", "SIX", "SVN", "EGT", "NIN"] for tc in range(T): unnecessary_string = input() num_list = input().split() new_list = [] for i in number: new_list += [i] * num_list.count(i) print('#{}'.format(tc+1)) print(*new_list)
import sys sys.stdin = open('input.txt') for _ in range(10): T = int(input()) matrix = [list(map(int, input().split())) for i in range(100)] line = list(filter(lambda x: matrix[0][x] == 1, range(100))) # 세로축 찾기 target = matrix[-1].index(2) # 시작 세로축의 위치 찾기 target_index = line.index(target) i = -2 while i > -100: # 아래에서부터 올라감 if target > 1 and matrix[i][target-1] == 1: # 왼쪽으로 먼저 가지가 뻗어있으면 왼쪽 세로축으로..
# sum, max 함수 이용 # 메모리 : 57,920 kb, 실행시간 : 155ms, 코드길이: 470 T = int(input()) for tc in range(T): N, target_num = map(int, input().split()) area = [list(map(int, input().split())) for i in range(N)] result_list = [] for i in range(N - target_num + 1): for j in range(N - target_num + 1): result = 0 for k in range(target_num): result += sum(area[i + k][j:j + target_num]) result_list.append(result) ..
T = int(input()) for tc in range(T): matrix = [[0]*10 for _ in range(10)] N = int(input()) for _ in range(N): x1, y1, x2, y2, color = map(int, input().split()) if color == 1: for i in range(x1, x2+1): for j in range(y1, y2+1): matrix[i][j] += 1 else: for i in range(x1, x2+1): for j in range(y1, y2+1): matrix[i][j] += 1 cnt = 0 for i in range(10): for j in range(10): if matrix[i][j] == 2: cnt += ..
T = int(input()) A = [i+1 for i in range(12)] for tc in range(T): N, S = map(int, input().split()) cnt = 0 for i in range(1