본문 바로가기

백준 & 프로그래머스52

프로그래머스.호텔 대실.python def solution(book_time): timeTable = [0 for _ in range(1440)] timeMax = 0 # 청소시간까지 고려해서 분으로 바꾸고 해당 분에 +1 # 1번 예시의 경우 16:40분 부터 17:00분 까지는 3개의 예약이 있음으로 # timeTable의 1000분(16:40분) 부터 1029분(17:09분) 까지는 3이 될 것 for openTime, endTime in book_time: hOpen,mOpen = map(int, openTime.split(':')) hEnd,mEnd = map(int, endTime.split(':')) for m in range(hOpen*60+mOpen,hEnd*60+mEnd+10 if hEnd*60+mEnd+10 < 1440.. 2023. 12. 17.
프로그래머스.리코쳇 로봇.python from collections import deque def solution(board): answer = 0 yLength, xLength, start, end = len(board), len(board[0]), (0,0), (0,0) movable = [(1,0), (-1,0), (0,1), (0,-1)] visitWayCnt = dict() for i in range(yLength): for j in range(xLength): if board[i][j] == 'R': start = (i,j) if board[i][j] == 'G': end = (i,j) visitWayCnt[(i,j)] = 0 #print(start) visitQ = deque([start]) visited = set([start.. 2023. 12. 17.
프로그래머스. 광물 캐기. python def solution(picks, minerals): answer, mining = 0, {"diamond":[1,5,25], "iron":[1,1,5], "stone":[1,1,1]} mineral_group_fatigue, minerals_len, extra_fatigue = [], len(minerals), [] minable = sum(picks) * 5 #print(minable) minable_cnt = 0 # n번 group을 dia, iron, stone곡괭이로 채굴했을 때의 fatigue(피로도) 저장 fatigue = [0,0,0] for i,mineral in enumerate(minerals, start = 1): minable_cnt += 1 if minable_cnt > min.. 2023. 12. 17.
[PCCP 기출문제] 3번 / 아날로그 시계 def solution(h1, m1, s1, h2, m2, s2): answer = 0 # 1초에 시침이 움직이는 각도 = 0.008333..도 를 1 (myDgree)라 하자 [최소단위 각도를 구하기 위함] # 43200 myDgree = 360도 # 시침보다 초침은 720배, 분침은 12배 빠르게 움직인다. # 초침이 1(myDgree) 움직이는데 걸리는 시간 = 1/720 = 0.0013888.. 초 # 따라서 0.0013888...초를 1 (myMs)라 하자 [최소단위 시간을 구하기 위함] # 1 myMs => 초침 1myDgree, 60 myMs => 분침 1myDgree, 720 myMs => 시침 1myDgree 움직임 # 시간을 myMs로 환산 d1 = (h1 * 3600 + m1 * 60.. 2023. 12. 14.
프로그래머스.[PCCP 기출문제] 2번 / 석유 시추.python from collections import deque def solution(land): # 덩이리별 x와 덩어리 크기 반환 def dfs(start, land_map, total_dung): move = [(1,0),(-1,0),(0,-1),(0,1)] vist_que = deque([start]) visted_x_set = set() cnt = 0 while len(vist_que) != 0: y,x = vist_que.popleft() visted_x_set.add(x) cnt += 1 for m in move: dy, dx = y, x dy -= m[0] dx -= m[1] if 0 2023. 12. 11.
[PCCP 모의고사 #2] 3번 - 카페 확장.python def solution(menu, order, k): answer, time_table, t_tm, wait_p = 0, [], 0, 0 # time_table 작성 [(0, 1), (10, 1), (12, -1)] (시간, 인원 변화) for i in range(len(order)): time_table.append((k*i, 1)) # i번째 손님 주문 시간 if t_tm > k*i: # 주문 시간보다 대기 시간이 더 크면 t_tm += menu[order[i]] # 대기 시간에 추가 else: t_tm = k*i + menu[order[i]] # 주문 시간에 추가 time_table.append((t_tm, -1)) time_table.sort() for tm in time_table: wait_p.. 2023. 12. 4.