[Python] 4865. 글자수 tc = int(input()) # 딕셔너리 for idx in range(1, tc+1): str1 = input() str_cnt = {s:0 for s in str1} str2 = input() for s in str2: if s in str_cnt: str_cnt[s] += 1 print('#{} {}'.format(idx, max(str_cnt.values()))) print(str_cnt) Algorithm/SW Expert Academy 2021.09.07
[Python] 4864. 문자열비교 in 을 이용한 간단한 풀이 코드 tc = int(input()) for idx in range(1, tc+1): str1 = input() str2 = input() str1_l = len(str1) answer = 0 if str1 in str2: answer = 1 print('#{} {}'.format(idx, answer)) 보이어무어 알고리즘을 이용하여 푼 코드 tc = int(input()) for idx in range(1, tc+1): str1 = input() str2 = input() str1_l = len(str1) answer = 0 # 건너뛸 리스트 만들기 str_skip = {str1[i]:str1_l - i -1 for i in range(str1_l)} print(str_s.. Algorithm/SW Expert Academy 2021.09.07
[Python] 1216. 회문2 def is_palindrome(i, j, k, board): len_board_h = len(board)//2 if len(board) % 2: start = board[:len_board_h] # 구간의 처음 ~ 중간까지의 범위 end = board[:len_board_h:-1] # 중간 ~ 구간의 끝 까지의 범위 (비교할 수 있도록 반대로 슬라이싱하였다.) # [구간의 끝 : 중간 : -1] # 회문의 길이가 홀수일 떄 else: start = board[:len_board_h] # 구간의 처음 ~ 중간 글자 이전 end = board[:len_board_h-1:-1] # 중간글자 다음부터 ~ 구간의 끝 # 비교한 두 범위가 같다면 정답을 반환한다. if start == end: return boa.. Algorithm/SW Expert Academy 2021.09.07
[Python] 4861. 회문 처음 풀이 (search 함수 인덱싱이 조금 복잡해 보인다.) # 문자열 같은지 같지 않은지 비교 def search(i, j, board): # 회문의 길이가 홀수일 때랑 짝수일 때 슬라이싱의 범위가 다르므로 조건문 설정 # 회문의 길이가 짝수일 때 if m % 2: start = board[i][j:m_half + j] # 구간의 처음 ~ 중간까지의 범위 end = board[i][m + j:m_half + j:-1] # 중간 ~ 구간의 끝 까지의 범위 (비교할 수 있도록 반대로 슬라이싱하였다.) # [구간의 끝 : 중간 : -1] # 회문의 길이가 홀수일 떄 else: start = board[i][j:m_half + j] # 구간의 처음 ~ 중간 글자 이전 end = board[i][m + j:m.. Algorithm/SW Expert Academy 2021.09.07
[Python] 1221. GNS tc = int(input()) for idx in range(1, tc+1): tc_num, n = input().split() num_list = list(input().split()) # 각 단어가 몇 번 나올지 count 해주는 딕셔너리 num_dict = {"ZRO": 0, "ONE": 0, "TWO": 0, "THR": 0, "FOR": 0, "FIV": 0, "SIX": 0, "SVN": 0, "EGT": 0, "NIN": 0} # num_list의 단어들 +1 for num in num_list: num_dict[num] += 1 # 정답 받을 리스트 sorted_num_list = [] # 단어와 개수 받아와서 리스트에 개수만큼 넣은 뒤, sorted_num_list에 추가. for nu.. Algorithm/SW Expert Academy 2021.09.07
[Python] 1213. string for idx in range(1, 11): n = int(input()) # 케이스 번호 받을 n target = input() # 찾을 문자열 string = input() # 문장 count = 0 # 문자열이 문장 안에 몇 번 등장했는가 # Brute Force target_i = 0 # 찾을 문자열의 인덱스 string_i = 0 # 문장의 인덱스 # 찾을 문자열의 인덱스와, 문장의 인덱스가 각 길이를 넘지 않는 동안 반복 while target_i < len(target) and string_i < len(string): # 찾는 문자열의 원소와 문장의 원소가 다르다면 if target[target_i] != string[string_i]: string_i -= target_i # 시작했던 문.. Algorithm/SW Expert Academy 2021.09.07
[Python] 4843. 특별한 탐색 내장함수 sorted 사용하여 푼 코드 tc = int(input()) for idx in range(1, tc+1): n = int(input()) numbers = sorted(list(map(int, input().split()))) answer = [] for i in range(5): answer.extend([numbers.pop(), numbers.pop(0)]) print('#{}'.format(idx), end=' ') print(*answer) 내장함수 사용하지 않은 코드 ######### 함수 사용 안한 버전 ########### # 선택정렬 이용해서 numbers 정렬 def selectionSort(n, numbers): # 처음 인덱스부터 마지막 -1까지 반복 # (i보다 오른쪽.. Algorithm/SW Expert Academy 2021.09.06
[Python] 4839. 이진탐색 # 페이지 몇 번만에 찾았는지 반환하는 함수 def pageSearch(total_p, goal_p): start = 1 # 시작페이지 end = total_p # 마지막 페이지 count = 0 # 몇트만에 찾았는지 # 시작 쪽수가 마지막 쪽수보다 크지 않는 동안 반복 while start Algorithm/SW Expert Academy 2021.09.06
[Python] 4837. 부분집합의 합 # 1 ~ 12까지의 숫자를 원소로 가진 집합 a a = list(range(1, 13)) tc = int(input()) for idx in range(1, tc+1): # 만족해야하는 부분집합 원소의 수 n, 부분 집합의 합 k n, k = map(int, input().split()) # 조건을 만족하는 부분집합의 개수 count = 0 # 모든 부분집합 검사 for i in range(1 Algorithm/SW Expert Academy 2021.09.06
[Python] 4836. 색칠하기 # 색칠하기 함수 def painting(purple): # 색칠할 박스 받아오기 [행 시작, 열 시작, 행 끝, 열 끝, 색깔] box = list(map(int, input().split())) # 색 (1: 빨강, 2: 파랑) color = box[4] # 왼쪽 위 모서리 에서 오른쪽 아래 모서리까지 색칠 for x in range(box[0], box[2] + 1): for y in range(box[1], box[3] + 1): # 같은 색은 겹치지 않는다는 조건. board[x][y] += color if board[x][y] == 3: purple += 1 return purple tc = int(input()) for idx in range(1, tc+1): n = int(input()) .. Algorithm/SW Expert Academy 2021.09.06