본문 바로가기

분류 전체보기

(120)
[Python, 파이썬] SWEA 1860. 진기의 최고급 붕어빵 M초의 시간을 들이면 K개의 붕어빵을 만들수 있다.손님들이 도착하는 시간이 주어질 때,모든 손님들에게 기다리는 시간없이 붕어빵을 제공할 수 있는지 판별하는 문제.  T = int(input()) # 테스트 케이스 개수 Tfor test_case in range(1, T+1): N, M, K = map(int, input().split()) # 손님 수 N, 시간 M, 붕어빵 개수 K time = list(map(int, input().split())) # 손님이 도착하는 시간 use = 1 # 필요한 붕어빵 개수 check = 'Possible' time.sort() # 도착하는 시간 정렬 for t in time: if((t//M)*K    [..
[Python, 파이썬] SWEA 1289. 원재의 메모리 복구하기 메모리를 한 번 변경할 때 해당 비트부터 끝까지 덮어 씌워질때, 메모리의 초기화 상태(모든 비트가 0)에서 원래 상태로 복원하기 위해 최소한 몇 번의 비트 수정이 필요한지를 계산하는 문제. T = int(input()) # 테스트케이스의 개수 Tfor test_case in range(1, T+1): original = input().strip() # 원본 메모리 reset = '0'*len(original) # 수정중인 초기화된 비트 diff = 0 # 변경 횟수 for i in range(len(original)): if(reset[i] != original[i]): # 같지 않으면 reset = reset[:i] # 이전 문자 ..
[Python, 파이썬] SWEA 2805. 농작물 수확하기 1. N X N크기의 농장이 있다.(N은 모두 홀수)2. 이 농장은 오직 마름모 영역의 농작물만 수확할 수 있다. N이 주어졌을 때, 수확할 수 있는 농작물의 합계를 구하는 문제다.  T = int(input()) # 테스트 케이스의 개수for test_case in range(1, T+1): N = int(input()) # 농장의 크기 N farm = [] # 농작물 for _ in range(N): farm.append([int(i) for i in input().strip()]) # 숫자로 바꿔서 배열에 저장 half = N//2 # 마름모 중간 money = 0 # 농작물 합 for i in range(N): diff = half - i ..
[Python, 파이썬] SWEA 2806. N-Queen 퀸은 같은 행, 열, 대각선에 있는 애를 공격한다.NxN 체스보드에 N개의 퀸을 서로 공격하지 못하게 놓는 문제.  def BFS(now, num): # 현재 행, 남은 퀸의 개수 global ok # n-queen 경우의 수 global memo # 퀸 저장 위치 if(num    [문제풀이]BFS+백트래킹을 사용해서 N-Queens 문제를 풀었다.각 퀸은 같은 행, 같은 열, 그리고 대각선에 위치한 다른 퀸을 공격할 수 있다.즉, 한개의 행과 한 개의 열에는 딱 1개의 퀸만 놓을 수 있단 뜻이다. memo = [-1]*(N) # 퀸 위치 저장 그래서 일차원 배열에 놓은 퀸의 위치를 저장해서, (j not in memo)로 현재 위치가 이미 저장된 건지 확인했다.이때 대각선은..
[Python, 파이썬] SWEA 1240. [S/W 문제해결 응용] 1일차 - 단순 2진 암호코드 암호코드 정보가 포함된 2차원 배열을 입력으로 받아 암호코드를 뽑아내, 올바른 암호코드인지 판별하는 문제.   T = int(input()) # 테스트 케이스의 개수 Tfor n in range(1, T+1): N, M = map(int, input().split()) # 배열의 세로 크기 N, 가로 크기 M scanner = [] # 암호코드 저장하는 배열 dic = {'0001101':0, '0011001':1, '0010011':2, '0111101':3, '0100011':4, '0110001':5, '0101111':6, '0111011':7, '0110111':8, '0001011':9} max_num = 0 #..
[Python, 파이썬] SWEA 2001. 파리 퇴치 N x N 크기의 파리의 수가 저장된 배열이 있다 하자.M x M 크기의 파리채를 한 번 내리쳐 최대한 많은 파리를 죽이고자 한다. 배열의 크기 N, 파리채의 크기 M을 입력받았을 때,파리채로 죽일 수 있는 파리의 수의 최댓값을 구하는 문제다.  T = int(input()) # 테스트 케이스의 개수 Tfor n in range(1, T+1): N, M = map(int, input().split()) # 배열의 크기 N, 파리채의 크기 M matrix = [] # 빈 배열 max_num = 0 # 배열에 값 저장 for i in range(N): matrix.append(list(map(int, input().split()))) # 파리채 크기 구하기 ..
[Python, 파이썬] SWEA 1209. [S/W 문제해결 기본] 2일차 - Sum 100X100의 2차원 배열이 주어질 때, 각 행의 합, 각 열의 합, 각 대각선의 합 중 최댓값을 구하는 문제.   T = 10 # 테스트 케이스의 개수 Tfor n in range(1, T+1): n = int(input()) # 현 테스트케이스의 번호 matrix = [] # 빈 배열 max_num = 0 x = transformX = 0 # 대각선 구하기 for i in range(100): matrix.append(list(map(int, input().split()))) # 배열에 값 저장 transform_matrix = list(zip(*matrix)) # 전치 행렬 for i in range(100): max_num =..
[Python, 파이썬] SWEA 1926. 간단한 369게임 [간단한 3, 6, 9 게임의 규칙] 숫자 1부터 순서대로 차례대로 말하되, 3, 6, 9 가 들어가 있는 수는 말하지 않는다.3, 6, 9가 들어가 있는 수를 말하지 않는대신, 박수를 친다. 이 때, 박수는 해당 숫자가 들어간 개수만큼 쳐야 한다. 예를 들어 숫자 35의 경우 박수 한 번, 숫자 36의 경우 박수를 두번 쳐야 한다.  N이 입력됬을 때, 1~N 까지의 숫자를 게임 규칙에 맞게 출력하는 문제. N = int(input()) # 숫자 Nfor n in range(1, N+1): clapp = 0 for i in str(n): if(int(i)%3==0 and int(i) > 0): # 3, 6, 9 숫자가 들어가 있으면 clapp += 1 # 박..