Programming(106)
-
20200807 // 삼성 SW Expert 아카데미 문제 // 1486
삼성 SW Expert 아카데미 1486번 "장훈이의 높은 선반" 문제입니다. from itertools import chain, combinations TC = int(input()) def powerset(iterable): s = list(iterable) return chain.from_iterable(combinations(s, r) for r in range(len(s) + 1)) ans = [] for tc in range(1, TC + 1): k = "#"+str(tc) + " " N, B = map(int, input().split()) lst = list(map(int, input().split())) lst1 = list(set(powerset(lst))) lst2 = [] for e..
2020.08.07 -
20200806 // 삼성 SW Expert 아카데미 문제 // 5213
삼성 SW Expert 아카데미 5213번 "진수의 홀수 약수" 문제입니다. lst = [0] * 1000002 for i in range(1, 1000001, 2): for j in range(i, 1000001, i): lst[j] += i for i in range(1, 1000001): lst[i+1] += lst[i] TC = int(input()) ans = [] for tc in range(1, TC + 1): k = "#"+str(tc) L, R = map(int, input().split()) k += " " + str(lst[R] - lst[L-1]) ans.append(k) for e in ans: print(e) 이 문제는 못 푼 문제다. 5시간 고민하고 답을 봤는데 어이가 없어서 ..
2020.08.06 -
20200804 // 삼성 SW Expert 아카데미 문제 // 3282
삼성 SW Expert 아카데미 3282번 "0/1 Knapsack" 문제입니다. TC = int(input()) def knapsack(W, wt, val, n): # W: 배낭의 무게한도, wt: 각 보석의 무게, val: 각 보석의 가격, n: 보석의 수 K = [[0 for x in range(W+1)] for x in range(n+1)] # DP를 위한 2차원 리스트 초기화 for i in range(n+1): for w in range(W+1): # 각 칸을 돌면서 if i==0 or w==0: # 0번째 행/열은 0으로 세팅 K[i][w] = 0 elif wt[i-1]
2020.08.04 -
20200729 // 삼성 SW Expert 아카데미 문제 // 5549
삼성 SW Expert 아카데미 5549번 "홀수일까 짝수일까" 문제입니다. TC = int(input()) for tc in range(1, TC+1): N = input() if N[len(N)-1] in ['1','3','5','7','9']: print("#%s"%tc, "Odd") else: print("#%s"%tc, "Even") 이 문제에서 주의할 점은 100자리 정수이다. 일반적으로 정수형 변수에는 100자리를 담을 수 없다. 그래서 문제를 풀 때 정수형 변수로 다루지 말고 문자형 변수로 다뤄야 한다.
2020.07.29 -
20200728 // 삼성 SW Expert 아카데미 문제 // 5688
삼성 SW Expert 아카데미 5688번 "세제곱근을 찾아라" 문제입니다. TC = int(input()) dic = {} for i in range(0, pow(10,6)+1): dic[pow(i, 3)] = i keys = dic.keys() for tc in range(1, TC+1): N = int(input()) if N in keys: print("#%s"%tc, dic[N]) else: print("#%s"%tc, -1) 세제곱근을 직접 구해서 딕셔너리에 저장해서 찾는 방법으로 풀었다. 코드블럭 기능을 오늘 처음 알았다. 유용하니까 자주 사용해야겠다.
2020.07.28 -
20200724 // 삼성 SW Expert 아카데미 문제 // 1954
삼성 SW Expert 아카데미 1954번 "달팽이 숫자" 문제입니다. TC = int(input()) for tc in range(1, TC+1): N = int(input()) lst = [] direc= [0, 1, 2, 3] for i in range(N): lst.append([0]*N) posX, posY = 0, 0 idx = 0 print("#%s"%tc) for i in range(1, N*N+1): lst[posX][posY] = i if direc[idx] == 0: # 오른쪽 방향 if posY == N-1: idx += 1 posX += 1 elif lst[posX][posY+1] != 0: idx += 1 posX += 1 else: posY += 1 elif direc[idx]..
2020.07.24