-
""" 출처:프로그래머스, https://school.programmers.co.kr/learn/courses/30/lessons/131112 """ """ SELECT FACTORY_ID,FACTORY_NAME,ADDRESS from FOOD_FACTORY where ADDRESS like "강원도%" order by FACTORY_ID asc """
-
""" 출처:프로그래머스, https://school.programmers.co.kr/learn/courses/30/lessons/131114 """ """ SELECT WAREHOUSE_ID,WAREHOUSE_NAME,ADDRESS, CASE when FREEZER_YN is not null then FREEZER_YN else "N" END "FREEZER_YN" from FOOD_WAREHOUSE where WAREHOUSE_NAME like "창고_경기%" order by WAREHOUSE_ID asc """
-
# 풀이 과정 from itertools import combinations, product from collections import deque, Counter # 각각의 주사위의 모든 경우의 수를 구한 후 승패 비교후 A가 이긴 걸 고르기! def num(A, B): A_num = [] B_num = [] for i in range(len(A)): c = len(A_num) for j in range(len(A[i])): if i == 0: A_num.append(A[i][j]) B_num.append(B[i][j]) else: for d in range(c): v = A_num[d] w = B_num[d] new_v = v + A[i][j] new_w = w + B[i][j] A_num.append(new_v) B_num.append(new_w) A_num = deque(A_num) B_num = deque(B_num) for e in range(c): A_num.popleft() B_num.popleft() return Counter(A_num), Counter(B_num) def solution(dice): d = [i for i in range(len(dice))] # 주사위 번호 # d_num=[j for j in range(len(dice[0]))]#주사위 면 번호 k = deque(list(combinations(dice, len(dice) // 2))) # A의 주사위 # dice_num=list(product(d_num,repeat=len(dice)//2)) # 뽑는 주사위 면 순서 check = [] # 이긴 주사위 모음 result = [] # 이긴 주사위 번호 check_num = [] rate = 0 while k: A = list(k.popleft()) B = [] A_num = [] # a주사위에서 나오는 모든 수 B_num = [] # b주사위에서 나오는 모든 수 # b 주사위 구하기 for b in dice: if not b in A: B.append(b) # a,b의 숫자 모음 A_num, B_num = num(A, B) win = 0 for a in A_num: for b in B_num: if a > b: win += (A_num[a] * B_num[b]) if win > rate: rate = win check = A for r in check: t = dice.index(r) result.append(t + 1) return result
-
""" 출처:프로그래머스, https://school.programmers.co.kr/learn/courses/30/lessons/64065 """ # 풀이 과정 def solution(s): from collections import deque s = s[1:len(s) - 1] k = deque(list(s)) before = [] while k: a = k.popleft() if a == "{": check = [] num = "" while k: b = k.popleft() if b == ",": check.append(num) num = "" elif b == "}": check.append(num) before.append(check) break else: num += b before.sort(key=len) result = [] for t in before: for v in t: if not int(v) in result: result.append(int(v)) return result
-
""" 출처:프로그래머스 https://school.programmers.co.kr/learn/courses/30/lessons/43105 """ # 풀이 과정 import copy def solution(triangle): t = copy.deepcopy(triangle) for i in range(1, len(triangle)): triangle[i][0] += triangle[i - 1][0] triangle[i][len(triangle[i]) - 1] += triangle[i - 1][len(triangle[i - 1]) - 1] for j in range(1, len(triangle[i]) - 1): triangle[i][j] = max((triangle[i - 1][j - 1] + triangle[i][j]), (triangle[i - 1][j] + triangle[i][j])) return max(triangle[len(triangle) - 1])
-
""" 출처:프로그래머스, https://school.programmers.co.kr/learn/courses/30/lessons/147354 """ # 풀이 과정 def solution(data, col, row_begin, row_end): data.sort(key=lambda x: (x[col - 1], -x[0])) check = [] for k in range(row_begin - 1, row_end): count = 0 for t in range(len(data[k])): count += data[k][t] % (k + 1) check.append(count) for x in range(len(check)): if x == 0: result = check[x] else: result = result ^ check[x] return result
-
""" 출처:프로그래머스, https://school.programmers.co.kr/learn/courses/30/lessons/131528 """ """ SELECT count(USER_ID) "USERS" from USER_INFO # wher AGE = NULL or AGE ="NULL"로 출력 안나오는 이유 확인해보기 where AGE is NULL """
-
""" 출처:프로그래머스 https://school.programmers.co.kr/learn/courses/30/lessons/60059 """ # 포인트 사고: 자물쇠의 위치를 바꿈과 동시에 열쇠를 이동시키는 아이디어! # 풀이 과정 board = [] import copy def open_(key, distance, lock): check = [[0] * distance for _ in range(distance)] for x in range(1, distance - len(key)): for y in range(1, distance - len(key)): for i in range(len(key)): for j in range(len(key)): check[i + x][j + y] = key[i][j] for i in range(len(key), len(key) + len(lock)): for j in range(len(key), len(key) + len(lock)): if check[i][j] + board[i][j] != 1: break else: continue break else: return True check = [[0] * distance for _ in range(distance)] return False def rotation(key, r): count = 0 change = [[0] * len(key) for _ in range(len(key))] for i in range(len(key)): for j in range(len(key)): change[j][len(key) - i - 1] = key[i][j] return change def solution(key, lock): global board distance = len(key) * 2 + len(lock) board = [[0] * (len(key) * 2 + len(lock)) for _ in range(len(key) * 2 + len(lock))] lock_count = 0 for i in range(len(lock)): for j in range(len(lock)): board[len(key) + i][len(key) + j] = lock[i][j] if lock[i][j] == 0: lock_count += 1 key_count = 0 for i in range(len(key)): for j in range(len(key)): if key[i][j] == 1: key_count += 1 # for i in range(4): # key = rotation(key, i + 1) # print(key) if lock_count > key_count: return False open_door = open_(key, distance, lock) if open_door == True: return True # 90,180,270 for i in range(4): key = rotation(key, i + 1) open_door = open_(key, distance, lock) if open_door == True: return True return False
-
""" 출처:프로그래머스, https://school.programmers.co.kr/learn/courses/30/lessons/150369 """ # 풀이 과정 def solution(cap, n, deliveries, pickups): # 택배 배달 후 빈 택배 상자 수거 # cap:담을 수 있는 최대 상자 개수 # 목표:배달+수거 최소 거리 구하기 dis = 0 # 이동거리 """ 아이디어 변화 과정 #최대 개수를 가져가야한다 #최대 개수를 가져가고 최대 개수를 가져오고(갈 떄 다 비워야 많은 걸 수거 가능) # 멀리있는걸 먼저 최대한 없애야한다 그래야 더 멀리 갈 필요가 없다 # 수거와 배달을 같이 생각! 돌아가면서 가져가니까 따로 생각? #배달만 수거만 생각 후 모두 최대로 생각 """ check_1 = [] check_2 = [] k = cap while deliveries: print(deliveries, "del") if deliveries and deliveries[-1] == 0: deliveries.pop() continue if deliveries[-1] <= cap: dis = len(deliveries) check_1.append(dis) a = deliveries.pop() k = k - a while deliveries: if deliveries[-1] >= k: deliveries[-1] = deliveries[-1] - k break else: b = deliveries.pop() k = k - b else: deliveries[-1] = deliveries[-1] - k dis += len(deliveries) check_1.append(dis) if sum(deliveries) == 0 or len(deliveries) == 0: break k = cap dis = 0 while pickups: print(pickups, "pick") if pickups and pickups[-1] == 0: pickups.pop() continue if pickups[-1] <= cap: dis = len(pickups) check_2.append(dis) a = pickups.pop() k = k - a while pickups: if pickups[-1] >= k and k != 0: pickups[-1] = pickups[-1] - k break elif pickups[-1] < k and k != 0: b = pickups.pop() k = k - b else: pickups[-1] = pickups[-1] - k dis = len(pickups) check_2.append(dis) if sum(pickups) == 0 or len(pickups) == 0: break k = cap print(check_1) print(check_2) return 0
-
""" 출처:프로그래머스, https://school.programmers.co.kr/learn/courses/30/lessons/131535 """ """ SELECT Count(USER_ID) "USERS" from USER_INFO where AGE>=20 and AGE<=29 and JOINED like "2021%" """