Algorithm/SW Expert Academy 78

[Python] 1210. ladder1

# 벡터설정 (좌우상) # 좌우는 상관없지만, 위로 가는 것이 마지막이어야 한다. # 사다리에서는 좌우 탐색이 우선이기 때문 dx = [-1, 1, 0] dy = [0, 0, -1] for idx in range(1, 11): n = int(input()) # 사다리 받아오기 ladder = [list(map(int, input().split())) for _ in range(100)] # 목표지점부터 시작하면 한번만 탐색하면 된다. x = ladder[99].index(2) # 목표지점(2)의 인덱스 찾기 y = 99 # 맨 밑에서부터 시작하는 y좌표 k = 0 # 방향 설정을 담당하는 K # y가 0인덱스까지 도달할때까지 반복한다. while y > 0: nx = x + dx[k] # 이동하고자 하는..

[Python] 1954. 달팽이 숫자

# tc의 수 tc = int(input()) # tc 수만큼 반복 for idx in range(1, tc+1): # 달팽이의 크기만큼 2차원 배열 만들어주기 snail = [[0] * idx for _ in range(idx)] # 델타 (우하좌상) dx = [0, 1, 0, -1] dy = [1, 0, -1, 0] cnt = 1 # 달팽이 배열에 넣는 수 초기화 x, y = 0, -1 # 달팽이 인덱스 초기화 k = 0 # 방향 설정 # cnt가 달팽이 크기(idx*idx)보다 작거나 같을 동안만 반복. while cnt

[Python] 1209. sum

처음 코드 # 10개의 테스트 케이스 for idx in range(1, 11): n = int(input()) # 정사각형 안의 요소들 받아오기 board = [list(map(int, input().split())) for _ in range(100)] diagonal_t = 0 # 대각선 합 r_diagonal_t = 0 # 반대편 대각선 합 total = [] # 합들을 담을 리스트 for i in range(100): column_t = 0 for j in range(100): column_t += board[j][i] if i==j: diagonal_t += board[i][j] r_diagonal_t += board[i][99-j] total.extend([column_t, sum(board..

[Python] 1208. Flatten

import sys sys.stdin = open('input.txt') # min max index 함수 쓴 버전 # 10개의 테스트 케이스 for idx in range(1, 11): # 덤프 횟수 n = int(input()) # 각 상자의 높이 값 boxes_height = list(map(int, input().split())) # 평탄화 작업 for i in range(n): # 가장 높은 상자, 가장 낮은 상자 찾기 h_idx = boxes_height.index(max(boxes_height)) l_idx = boxes_height.index(min(boxes_height)) # 박스 옮기기 boxes_height[h_idx] -= 1 boxes_height[l_idx] += 1 # fin..

[Python] 4831. 전기버스

충전기가 있는 곳에서 다음 충전기까지의 거리와 연료랑을 검토하는 코드 # 노선 T t = int(input()) # 노선 t만큼 반복 for idx in range(1, t+1): # 정류장 수 k, 종점 n, 충전기 설치된 곳의 수 m k, n, m = map(int, input().split()) # 충전기가 설치된 곳 charger = list(map(int, input().split())) now = 0 # 현재 위치 battery = k # 배터리 상태 next_c = 1 # 다음 충전기 설치 된 곳의 idx answer = 0 # 최소 충전 횟수 # 목표지점 전까지 반복 # 목표지점에서는 배터리 0이어도 상관 X이므로 while now < n-1: now += 1 # 위치 이동 battery ..

[Python] 4835. 구간합

import sys sys.stdin = open('input.txt') # tc 수 tc = int(input()) # tc 수만큼 반복 for idx in range(1, tc+1): # 정수의 개수 n, 구간의 개수 M: n, m = map(int, input().split()) # n개의 정수 ai numbers = list(map(int, input().split())) # 최소 구간, 최대 구간 초기화 min_ai = 10000000000000000000000000 max_ai = 0 # 구간을 구할 것이므로 구간의 개수만큼 뺀 n-m+1 만큼 반복. for i in range(n-m+1): # section = sum(numbers[i:i + m]) section = 0 for j in ra..

[Python] 4834. 숫자 카드

# tc 수 tc = int(input()) # tc 수만큼 반복 for i in range(1, tc+1): # 카드 장수 n n = int(input()) # n개의 숫자 cards (0은 제거한다) cards = input() # 카드 개수가 들어갈 리스트 cards_count = [0 for i in range(10)] # 카드가 담긴 cards를 돌며 카드 개수 세기 for card in cards: # 장수가 같은 경우에는 큰 숫자를 출력해야하니 # 큰 카드를 앞쪽부터 저장한다. cards_count[9-int(card)] += 1 # 가장 많은 카드 개수 max_card = max(cards_count) # index 함수를 활용하여 가장 많은 카드 개수를 가진 인덱스를 출력한다. print..

[Python] 4828. min max

내장함수(min, max 함수) 쓰지않고 풀어보기 # TC 수 tc = int(input()) # tc 수만큼 반복 for idx in range(1, tc+1): # 양수의 개수 N n = int(input()) # N개의 양수 numbers numbers = list(map(int, input().split())) min_num = max_num = numbers[0] for i in range(n): # min 구하기 if min_num > numbers[i]: min_num = numbers[i] # max 구하기 if max_num < numbers[i]: max_num = numbers[i] print('#{} {}'.format(idx, max_num-min_num))