파이썬
[SWEA] #12712. 파리퇴치3_파이썬
풀기 전 생각해보기😮 +방향, x방향에 대해서 어떻게 탐색할 것인가 세기가 달라질 때를 고려하는 방법은? 풀이🛫 T = int(input()) for t in range(T): N, M = map(int, input().split()) arr = [list(map(int, input().split())) for i in range(N)] catch = [] answer = 0 # +형: 12, 3, 6, 9 dpcol = [-1, 0, 1, 0] dprow = [0, 1, 0, -1] # x형: 2, 4, 8, 10 dxcol = [1, -1, -1, 1] dxrow = [1, 1, -1, -1] # 세기가 M일 때 +형에서 잡을 수 있는 파리의 수 for col in range(N): for row i..
[파이썬] 시프트 연산자 이용
※ 일반적으로 시프트 연산자를 이용해 구한 값은 일반적인 수식을 이용해 계산한 값보다 빠르게 처리된다 (기계어) 홀수 / 짝수 판별 if 10 & 1: # 홀수 pass else: # 짝수 pass 10은 이진법에서 1010, 1은 이진법에서 000 & 연산으로 묶여있기 때문에 위 코드는 False가 도출된다 True일 경우 홀수, False일 경우 짝수이므로 결과값은 짝수이다 → 10에 다른 값을 넣어주어서 홀수/짝수 판별에 이용할 수 있다 정수형의 2의 제곱, 2의 제곱근 # 2의 n제곱 print(10n) 10 * 2^n과 같은 연산이 수행된다. 만약 10
[SWEA] 1959. 두 개의 숫자열
풀기 전 생각해보기😮 다중 for 구문의 구현 풀이🛫 # 1959. 두 개의 숫자열 T = int(input()) for t in range(T): N, M = map(int, input().split()) A = list(map(int, input().split())) B = list(map(int, input().split())) li = [] if N M: for j in range(N-M+1): total = 0 for i in range(M): total += A[i+j]*B[i] li.append(total) ..
[SWEA] #4831. 전기버스_파이썬
풀기 전 생각해보기😮 정답을 도출하는데 필요한 조건만 구현하기 인덱스 주의 풀이🛫 T = int(input()) for t in range(T): K, N, M = map(int, input().split()) station = [0] + list(map(int, input().split())) + [10] curIdx = 0# 현재의 위치 charCnt = 0 # 충전 횟수 for i in range(1, M+2): # 목적지에 도달할 수 없는 경우 if station[i] - station[i-1] > K: answer = 0 break if curIdx + K < station[i]: curIdx = station[i] charCnt += 1 print(f"#{t+1}", charCnt) 핵심 정리..
[SWEA] #1211. Ladder2_파이썬
풀기 전 생각해보기😮 2022.08.11 - [SSAFY/SWEA] - [SWEA] #1210. Ladder1_파이썬과 유사한 문제 이동 가능한 범위에 대해 조건 주의해서 설정하기 좌, 우 방향으로만 이동하는 양을 비교해도? 풀이🛫 T = 10 for t in range(T): testcase = int(input()) arr = [list(map(int, input().split())) for i in range(100)] # 출발 가능한 인덱스를 구함 startList = [] for i in range(100): if arr[0][i] == 1: startList.append(i) def cntRoute(startRow): col, row = 0, startRow cntSide = 0 while c..
[SWEA] #1210. Ladder1_파이썬
풀기 전 생각해보기😮 시작점에서 출발하는게 편할까? 도착점에서 출발하는게 편할까? 특정 조건을 만족할 때까지 전진시키는 방법 풀이🛫 T = 10 for t in range(T): case = int(input()) arr = [list(map(int, input().split())) for i in range(100)] # 도착지점의 인덱스 찾기 col, row = 0, 0 for end in range(100): if arr[99][end] == 2: col = 99 row = end break # 출발점에 도착할 때까지 진행 while col != 0: # col == 0: 시작점 # 왼쪽에 길이 있을 때 if row-1 >= 0 and arr[col][row-1] == 1: while row-1 >..
[Algorithm Study] 파이썬 부분집합 구하기 예시
반복문을 이용해 부분집합 구하기 arr = list(map(int, input().split())) subsets = [[]] for i in arr: L = len(subsets) for l in range(L): subsets.append(subsets[l] + [i]) print(subsets) 비트연산자를 이용해서 부분집합 구하기 arr = list(map(int, input().split())) n = len(arr) for i in range(1
[SWEA] 1954. 달팽이 숫자_파이썬
풀기 전 생각해보기😮 이차원 배열 상에서 인덱스 조건 주의하기 방향을 어떻게 설정해 줄 것인지 풀이🛫 T = int(input()) for t in range(T): N = int(input()) arr = [[0] * N for i in range(N)] col, row = 0, 0 v = 0 arr[col][row] = 1 dcol = [-1, 0, 1, 0] drow = [0, 1, 0, -1] for i in range(1, N**2+1): arr[col][row] = i col = col+dcol[v] row = row+drow[v] if col < 0 or row < 0 or N
[SWEA] #11014. 농작물 수확_파이썬
문제 💎 11014. 03_배열2_농작물 수확 * 문항 설명에 오류가 있다. 비용에 관해서 생각하지 말고, 밭을 나눠가졌을 때 가장 공평하게 가질 수 있는 값에 대해서만 생각하도록 한다. 입력으로 N X N 크기의 농장에 대한 정보가 2차 배열 형태의 값들이 주어진다. 주어진 값들은 각 셀에서 얻을 수 있는 농작물의 양이다. 수민, 기라, 현석 3형제는 농장을 3분할 해서 농작물을 나눠 가질 계획이다. 욕심많은 수민이 때문에 형제간 불화가 생기지 않도록 최대한 공평하게 나누어야 한다. 농장을 3분할 하는 방법은 가로선과 세로선을 그어서, 다음 그림과 같이 3개의 영역으로 나누는 것이다. 사각영역의 가로와 세로의 크기는 최소 1이상이어야 한다. 3 분할 했을 때 세 영역에서 얻을 수 있는 농작물 총합의 최..
[SWEA] #11010 대각 최대 합_파이썬
풀기 전 생각해보기😮 대각선에 위치한 값을 탐색하는 방법 주어진 이차원 배열 내에서 탐색 풀이🛫 T = int(input()) for t in range(T): N = int(input()) arr = [list(map(int, input().split())) for i in range(N)] # 탐색 방향 설정 : 2시, 4시, 8시, 10시 방향 순 cv = [-1, 1, 1, -1] rv = [1, 1, -1, -1] # 한 인덱스를 기점으로 대각선 값의 합을 담을 리스트 정의 li = [] for col in range(N): for row in range(N): # 해당 인덱스의 값 저장 idx_sum = arr[col][row] # 대각선에 위치한 값의 합 계산 for i in range(4)..