분류 전체보기 720

[Codefroce][Python] div.3 #731 - C. Pair Programming

영어 독해가 매우 힘들었던 문제입니다. 이 문제는 열 추가와 열 조회로 나뉩니다. 지금 조회할 수 없는 열을 조회하면 불가능한 command로 판단하면 됩니다. 앞에서부터 0을 while로 넣어주고 그 후 0이 아닌값의 가능여부를 검사해 넣어주는 전략입니다. import sys input = sys.stdin.readline for test in range(int(input())): input() k, n, m = map(int, input().split()) a = list(map(int, input().split())) b = list(map(int, input().split())) answer = [] idx_a = 0 idx_b = 0 while idx_a < n and not a[idx_a]: ..

[Codefroce][Python] div.3 #731 - B. Alphabetical Strings

a부터 좌우로 하나씩 연속되는 알파뱃을 붙혀가는 규칙. s가 규칙으로 만들어진 문자열이면 YES를 출력. 얼마전 현대모비스 알고리즘 대회 2번?의 열화판 당시는 deque로 풀었지만 이번에는 twopointer로 양끝에서부터 한 규칙씩 거슬러 올라가 마지막에 a가 남는 것까지 확인하는 전략을 세웠습니다. 최초 시작은 start로 총 문자열 길이에서 소문자 a의 아스키코드 넘버만큼 더해주고 a를 제외하는 의미에서 1을 빼주면 마지막 문자의 아스키코드 넘버가 됩니다. 거기서부터 확인해주면 됩니다. import sys input = sys.stdin.readline for test in range(int(input())): s = input().rstrip() left = 0 right = len(s) - 1..

[Codefroce][Python] div.3 #731 - A. Shortest Path with Obstacle

점 a에서 b까지의 최소거리를 구하는 문제. 방해물 f가 한개 존재하지만 한개로는 무수히 많은 path를 방해할 수 없다. 방해 가능한 경우의 수는 a와 b와 f가 일직선상에 존재하고 f 가 두 점 사이에 있을 때. 이경우만 예외처리해서 +2 해주면 된다. import sys input = sys.stdin.readline for test in range(int(input())): input() a_x, a_y = map(int, input().split()) b_x, b_y = map(int, input().split()) if a_x < b_x: a_x, b_x = b_x, a_x if a_y < b_y: a_y, b_y = b_y, a_y f_x, f_y = map(int, input().split..

[백준][Python] 17144 미세먼지 안녕

구현중 가장 귀찮은 구현이 배열 회전인것같다.. 확산, 회전순으로 과정압축없이 진행 위는 내코드 아래는 1등코드 1등코드는 내 코드보다 10배 빠르다. 차이점은 dusts를 배열로 관리했다는 것. 불필요한 과정이었던것같다. import sys input = sys.stdin.readline from collections import deque def rotate_dust(): up_cycle = deque() down_cycle = deque() up_cycle_down, down_cycle_up = air_clear[0][0], air_clear[1][0] # 0, 공기청정기 x 작은 좌표, 좌, 우 -> rotate(-1) for i in range(C): up_cycle.append(matrix[0..

[백준][Python] 1713 후보 추천하기

사진틀을 dict로 관리 갯수 초과하면 하나 삭제 import sys input = sys.stdin.readline from collections import defaultdict N = int(input()) n = int(input()) nums = list(map(int, input().split())) count = defaultdict(int) for i in range(n): count[nums[i]] += 1 if len(count) > N: min_val = float('inf') for candidate in count: if candidate == nums[i]: continue if count[candidate] < min_val: min_val = count[candidate] t..

[백준][Python] 5766 할아버지는 유명해

1등을 찾고 삭제한 그룹에서 1등을 찾으면 2등 그룹이 나온다. import sys input = sys.stdin.readline from collections import defaultdict while 1: N, M = map(int, input().split()) if not N and not M: break rankers = defaultdict(int) answer = [] max_cnt = 0 for _ in range(N): a = list(map(int, input().split())) for num in a: rankers[num] += 1 if rankers[num] > max_cnt: max_cnt = rankers[num] answer = [num] elif rankers[num]..

[백준][Python] 19238 스타트택시

bfs로 승객을 찾고 bfs로 도착지로 이동하는 방식. 도착지 이동하면 oil 충전하고 탑승요청 삭제. 유의할 예외는 도착지점 or 시작지점이 다른 승객 위치랑 겹치는 경우도 고려해주어야한다. import sys input = sys.stdin.readline from collections import deque from heapq import heappush def go_target(start_x, start_y, start_oil): q = deque() q.append((start_x, start_y, start_oil)) visited = [[False] * N for __ in range(N)] visited[start_x][start_y] = True while q: for __ in rang..