문제 https://school.programmers.co.kr/learn/courses/30/lessons/150366 소스코드 def solution(commands): answer = [] val_table = [["EMPTY" for _ in range(51)] for _ in range(51)] addr_table = [[(r,c) for c in range(51)] for r in range(51)] def update_val(v1, v2): for i in range(51): for j in range(51): if val_table[i][j] == v1: val_table[i][j] = v2 def update_addr(ix, iy, v): x, y = int(ix), int(iy) r, ..
문제 https://www.acmicpc.net/problem/15683 소스코드 import sys import itertools if __name__ == "__main__": n, m = map(int, input().split()) arr = [list(map(int, input().split())) for _ in range(n)] cctv_cnt = 0 cctv = [] wall = 0 for i in range(n): for j in range(m): if arr[i][j] > 0 and arr[i][j] < 6: cctv_cnt += 1 cctv.append([i, j]) if arr[i][j] == 6: wall += 1 cctv_list = list(itertools.product([i..
문제 https://school.programmers.co.kr/learn/courses/30/lessons/181188 소스코드 def solution(targets): answer = 0 targets.sort(key = lambda x: (x[1],x[0])) E = 0 for s,e in targets: if s >= E : E = e answer +=1 return answer 설명 e를 기준으로 오름차순 정렬한다. e를 기준으로 새로운 s를 보았을 때 e와 같거나 작으면 겹치는 부위이므로 새로운 요격이 필요하다 (answer + 1)
문제 https://www.acmicpc.net/problem/16434 소스코드 import sys import math if __name__ == "__main__": n,atk = map(int,input().split()) room = [list(map(int,sys.stdin.readline().split())) for _ in range(n)] max_hp = 0 l,r = 1, sys.maxsize while l
문제 https://school.programmers.co.kr/learn/courses/30/lessons/150365 소스코드 from collections import deque def solution(n, m, x, y, r, c, k): answer = 'impossible' q = deque() q.append([x,y,0,'']) dx = [1,0,0,-1] dy = [0,-1,1,0] dic = {0:'d',1:'l',2:'r',3:'u'} while q: xx,yy,cnt,arr = q.popleft() if cnt > k: continue if cnt == k: if (xx == r and yy == c): answer = arr break for s in range(4): sx = x..
문제 https://www.acmicpc.net/problem/21608 소스코드 import sys if __name__ == "__main__": n = int(input()) arr = [[0] * n for _ in range(n)] students = [list(map(int,input().split())) for _ in range(n*n)] dx = [1,-1,0,0] dy = [0,0,1,-1] for s in range(n*n): student = students[s] tmp = [] for i in range(n): for j in range(n): if arr[i][j] == 0: friend = 0 empty = 0 for k in range(4): x = i + dx[k] y = ..
문제 https://www.acmicpc.net/problem/2559 소스코드1 if __name__ == "__main__": n, k = map(int,input().split()) arr = list(map(int,input().split())) sum_val = sum(arr[0:k]) res = sum_val rm = 0 include = k while include < n : tmp_val = sum_val - arr[rm] + arr[include] res = max(res,tmp_val) sum_val = tmp_val rm += 1 include +=1 print(res) 소스코드2 if __name__ == "__main__": n, k = map(int,input().split())..
문제 https://www.acmicpc.net/problem/20055 소스코드 import sys if __name__ == "__main__": n,k = map(int,input().split()) convey = list(map(int,input().split())) robot = [0] * n res = 1 while 1: #1 컨테이너 벨트 회전 last = convey.pop() convey.insert(0,last) #1 로봇 회전 robot.pop() robot.insert(0, 0) # 1-1 로봇이 내리는 위치에 도달하면 그 즉시 내린다 if robot[n-1]: robot[n-1] = 0 #2 로봇 회전 for i in range(n-1,0,-1): if convey[i] > 0 ..
문제 https://www.acmicpc.net/problem/9935 소스코드 import sys input = sys.stdin.readline if __name__ == "__main__": a,b = [input().rstrip() for _ in range(2)] stack = [] for i in a: stack.append(i) if len(stack) >= len(b): tmp = ''.join(stack[-len(b):]) if tmp == b: for _ in range(len(b)): stack.pop() print('FRULA' if len(stack) == 0 else ''.join(stack)) 설명 이 문제는 직접 문자열을 하나씩 제거하는 문제가 아니다. 하나씩 문자열을 제거하..