Programming(106)
-
20210115 // 삼성 SW Expert 아카데미 // 1946
삼성 SW Expert 아카데미 1946번 "간단한 압축 풀기" 문제입니다. TC = int(input()) for tc in range(1, TC+1): N = int(input()) string = "" for i in range(N): a, K = input().split() K = int(K) string += a* K print("#%s"%tc) for i in range(len(string)): print(string[i], end="") if (i+1)%10 == 0: print() print() 문자열 정보를 입력받아 문자열을 10개 단위로 출력하는 문제이다. 먼저 한 문자열 변수에 입력받은 정보를 바탕으로 문자열을 완성시킨다. 그리고 하나씩 출력하는데 10개 단위로 줄넘김을 해야하기 때문..
2021.01.15 -
20210115 // 삼성 SW Expert 아카데미 // 1970
삼성 SW Expert 아카데미 1970번 "쉬운 거스름돈" 문제입니다. TC = int(input()) for tc in range(1, TC+1): N = int(input()) money = [50000, 10000, 5000, 1000,500, 100, 50, 10] coin = [] for i in range(len(money)): coin.append(N//money[i]) N %= money[i] print("#%s"%tc) for ele in coin: print(ele, end=" ") print() 유명한 거스름돈 문제이다. 돈의 액수가 주어지고 그 돈만큼 돈을 거슬러줘야 하는 문제이다. 거스름돈 액수에서 뺄 수 있는 돈의 단위가 큰 단위부터 빼준다. 예를 들어 32850원이 입력값으로..
2021.01.15 -
20210115 // 삼성 SW Expert 아카데미 // 1974
삼성 SW Expert 아카데미 1974번 "스도쿠 검증" 문제입니다. TC = int(input()) def sudoku(lst): temp = [1,2,3,4,5,6,7,8,9] k = [] for i in range(0, 9): k.extend(lst[i]) k.sort() if k != temp: return False k.clear() for i in range(0, 9): k = [lst[0][i], lst[1][i], lst[2][i], lst[3][i], lst[4][i], lst[5][i], lst[6][i], lst[7][i], lst[8][i]] k.sort() if k != temp: return False k.clear() for i in range(0, 9, 3): for j i..
2021.01.15 -
20210115 // BaekJoon Online Judge // 1065
백준 알고리즘 BaekJoon Online Judge 1065번 "한수" 문제입니다. N = input() if len(N)
2021.01.15 -
20210115 // BaekJoon Online Judge // 4673
백준 알고리즘 BaekJoon Online Judge 4673번 "셀프 넘버" 문제입니다. lst = list(range(1, 10001)) def solve(n): k = n s = str(n) for ele in s: k += int(ele) if k in lst: lst.remove(k) for i in range(1, 10001): solve(i) for ele in lst: print(ele) 이 문제에서는 셀프 넘버의 개념을 이해해야 할 필요가 있다. 셀프 넘버란 양의 정수 n에 대해서 d(n)을 n과 n의 각 자리수를 더하는 함수라고 정의할 때 n을 d(n)의 생성자라고 하며 그 때 생성자가 없는 숫자를 셀프 넘버라고 한다. 예를 들어 17의 경우는 17 = d(13) = 13 + 1 + 3..
2021.01.15 -
20210115 // 삼성 SW Expert 아카데미 // 1976
삼성 SW Expert 아카데미 1976번 "시각 덧셈" 문제입니다. TC = int(input()) for tc in range(1, TC+1): h1, m1, h2, m2 = map(int, input().split()) m = h1 * 60 + h2 * 60 + m1 + m2 h = (m//60)%12 if h == 0: h = 12 m = m%60 print("#%s"%tc, h, m) 두 시각을 더하여 나온 시각 값을 구하는 문제다. 시와 분을 입력받고 더하는 문제인데 시는 12를 넘을 수 없다. 따라서 8 + 5 = 13이 아니라 13%12 = 1이 되는 것이다. 단 0시는 없고 12시에서 바로 1시로 넘어가므로 12%12 = 0 일 때는 12로 바꿔주면 된다.
2021.01.15