목록분류 전체보기 (86)
Hikenny25
def is_palindrome(s): return s == s[::-1] for t in range(10): n = int(input()) matrix = [list(input().rstrip()) for _ in range(8)] cnt = 0 for _ in range(2): for i in range(8): for j in range(8-n+1): if is_palindrome(matrix[i][j:j+n]): cnt += 1 matrix = list(zip(*matrix)) print(f"#{t+1} {cnt}") 저번에 파이썬 SW문제해결 기본 - String 에 들어있던 문제와 거의 동일하다.. 이번 코드에서 다른 점은 is_palindrome() 함수인데, 슬라이싱을 이용해서 짧게 써주었다~
for t in range(10): _ = input() str1 = input() # object str2 = input() # sentence cnt = 0 len1 = len(str1) len2 = len(str2) for i in range(len2 - len1 + 1): if str1 == str2[i:i+len1]: cnt += 1 print(f"#{t+1} {cnt}") 제한시간보니 그냥 Brute Force로 풀어줘도 TLE 안날 것 같아서 굳이 kmp나 보이어-무어 안썼다! 간단한 문자열 구현 문제
from collections import deque class Graph: def __init__(self, size): self.size = size self.matrix = [[0] * size for _ in range(size)] self.visited = [0] * size self.predecessor = [0] * size def addEdge(self, v1, v2): self.matrix[v1][v2] = self.matrix[v2][v1] = 1 def BFS(self, start, goal): q = deque([start]) self.visited[start] = 1 while q: k = q.pop() for i in range(self.size): if self.matrix[i..

들어가기 전에 queue 이용해서 어떻게 구현하나를 미리 생각해놓아서 쉽게 풀 수 있었다.. 무난무난한 큐 문제라고 생각 from collections import deque for t in range(int(input())): n, pizza_number = map(int, input().split()) cheeze = list(map(int, input().split())) q = deque([i for i in range(n)]) out_list = list() count = pizza_number - n while q: k = q.popleft() cheeze[k] //= 2 if cheeze[k] == 0: out_list.append(k) count += 1 new_pizza = 2*n + c..
https://www.acmicpc.net/problem/14940 14940번: 쉬운 최단거리 지도의 크기 n과 m이 주어진다. n은 세로의 크기, m은 가로의 크기다.(2 ≤ n ≤ 1000, 2 ≤ m ≤ 1000) 다음 n개의 줄에 m개의 숫자가 주어진다. 0은 갈 수 없는 땅이고 1은 갈 수 있는 땅, 2는 목표지점이 www.acmicpc.net from sys import stdin from collections import deque input = stdin.readline delta = [[0,1], [0,-1], [1,0], [-1,0]] n, m = map(int, input().split()) maze = [list(map(int, input().split())) for _ in ra..
from collections import deque delta = [[0,1], [0,-1], [1,0], [-1,0]] for t in range(int(input())): n = int(input()) maze = [list(map(int, input().rstrip())) for _ in range(n)] dept_point = tuple() objt_point = tuple() for i in range(n): for j in range(n): if maze[i][j] == 2: dept_point = (i, j) elif maze[i][j] == 3: objt_point = (i, j) q = deque([dept_point]) predecessor = [[0] * n for _ in rang..
from collections import deque for t in range(int(input())): n, m = map(int, input().split()) deq = deque(list(map(int, input().split()))) for i in range(m): tmp = deq.popleft() deq.append(tmp) print(f"#{t+1} {deq[0]}") 쉬운 큐 구현 문제.. 파이썬은 deque 제공 하므로 이용해서 쉽게 풀어주엇다
풀이 1 - 모든 순열 구해서 값 구하기 (거의 브루트 포스) def perm(cnt): if cnt == n: vperm.append(sel.copy()) else: for i in range(n): if check[i] == 0: sel[cnt] = varr[i] check[i] = 1 perm(cnt + 1) check[i] = 0 for c in range(int(input())): n = int(input()) number = [list(map(int, input().split())) for _ in range(n)] varr = [i for i in range(n)] vperm = list() sel = [0 for _ in range(n)] check = [0 for _ in range(n)..
https://www.acmicpc.net/problem/24460 24460번: 특별상이라도 받고 싶어 첫 번째 줄에는 정수 $N$이 주어진다. (단, $N = 2^m$, $0 \le m \le 10$, $m$은 정수) 두 번째 줄부터 $N$개 줄의 $i$번째 줄에는 $i$번째 줄에 있는 의자에 적힌 추첨번호가 주어진다. 각 줄에는 $N$개의 추첨 www.acmicpc.net - 분할정복법 def flatten(arr): return arr[0][:] + arr[1][:] def get_second_min(arr): arr = sorted(arr) return arr[1] def divide(arr): if len(arr) == 2: return [get_second_min(flatten(arr))] ..