Simple_PS

  • Lv2 프로그래머스(Programmers)[Python][파이썬] 파일명 정렬
    """ 출처:프로그래머스, https://school.programmers.co.kr/learn/courses/30/lessons/17686 """ # 풀이 과정 def solution(files): f = files from collections import deque check = [] for i in f: all_new = [] # head, middle, tail 전부 들어감 # 세 부분 나누기 head = [] middle = [] tail = [] i = deque(list(i)) part = "head" while i: k = i.popleft() if k.isdigit() == False and part == "head": head.append(k) elif k.isdigit() == True and part == "head": all_new.append(list(head)) middle = [] middle.append(k) part = "middle" elif k.isdigit() == True and part == "middle": middle.append(k) elif k.isdigit() == False and part == "middle": tail.append(k) tail += list(i) all_new.append(list(middle)) all_new.append(list(tail)) break if len(tail) == 0: all_new.append(list(middle)) all_new.append([]) check.append(all_new) check.sort(key=lambda x: (("".join(x[0]).upper()), int("".join(x[1])))) final = [] for a, b, c in check: A = "".join(a) B = "".join(list(map(str, b))) C = "".join(list(map(str, c))) final.append(A + B + C) return final
  • Lv1 프로그래머스(Programmers)[Mysql] 최댓값 구하기
    """ 출처:프로그래머스, https://school.programmers.co.kr/learn/courses/30/lessons/59415 """ """ 풀이 과정 SELECT DATETIME "시간" from ANIMAL_INS order by DATETIME desc limit 1 """
  • Lv1 프로그래머스(Programmers)[Mysql] 강원도에 위치한 생산공장 목록 출력하기
    """ 출처:프로그래머스, 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 """
  • Lv1 프로그래머스(Programmers)[Mysql] 경기도에 위치한 식품창고 목록 출력하기
    """ 출처:프로그래머스, 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 """
  • Lv3 프로그래머스(Programmers)[Python][파이썬] 주사위 고르기
    # 풀이 과정 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
  • Lv2 프로그래머스(Programmers)[Python][파이썬] 튜플
    """ 출처:프로그래머스, 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
  • Lv3 프로그래머스(Programmers)[Python][파이썬] 정수 삼각형
    """ 출처:프로그래머스 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])
  • Lv2 프로그래머스(Programmers)[Python][파이썬] 테이블 해시 함수
    """ 출처:프로그래머스, 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
  • Lv1 프로그래머스(Programmers)[Mysql] 나이 정보가 없는 회원 수 구하기
    """ 출처:프로그래머스, 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 """
  • Lv3 프로그래머스(Programmers)[Python][파이썬] 자물쇠와 열쇠
    """ 출처:프로그래머스 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
  • << 1 2 3 4 5 6 7 8 9 10 11 >>