Programming/SW Expert Academy(69)
-
SW Expert Academy // 11387
SW Expert Academy 11387번 "몬스터 사냥" 문제입니다. TC = int(input()) for tc in range(1, TC+1): D, L, N = map(int, input().split()) print("#%d %d"%(tc, (N*D + D*L*N*(N-1) / 200))) 지금까지 n번의 공격을 하였을 때 다음의 공격은 D * (1 + n * L / 100) 이 된다고 하였을 때 총 공격의 누적을 구하는 문제다. 위의 식을 전개하면 D + D * n * L / 100 이므로 공격당 고정적으로 D의 공격이 들어가는데 그것이 N만큼 공격을 실행한다. 따라서 N * D가 공격 누적에 기본으로 들어가있다. 다음 뒷부분은 D * n * L / 100이다. 이는 처음부터 차례대로 써보면..
2021.02.01 -
SW Expert Academy // 3376
SW Expert Academy 3376번 "파도반 수열" 문제입니다. TC = int(input()) ans = [] for tc in range(1, TC + 1): k = "#"+str(tc) lst = [1,1,1,2,2] N = int(input()) if N < 6: k += " " + str(lst[N-1]) else: for i in range(6, N+1): lst.append(lst[i-2] + lst[i-6]) k += " " + str(lst[N-1]) ans.append(k) for e in ans: print(e) 위의 삼각형 패턴이 파도반 수열이다. 규칙만 찾을 수 있다면 코딩에는 어려움이 없는 문제다. 백준에도 똑같은 문제가 있어서 아래에 링크를 건다. www.acmicpc...
2021.01.28 -
SW Expert Academy // 3408
SW Expert Academy 3408번 "세가지 합 구하기" 문제입니다. TC = int(input()) ans = [] for tc in range(1, TC + 1): k = "#"+str(tc) N = int(input()) s1, s2, s3 = 0, 0, 0 s1 = N * (N+1) // 2 s2 = (N-1) * N + N s3 = (N-1) * N + 2 * N k += " " + str(s1) + " " + str(s2) + " " + str(s3) ans.append(k) for e in ans: print(e) N을 입력받으면 1) 1부터 N까지의 합, 2) 1부터 홀수 N개의 합, 3) 2부터 짝수 N개의 합을 차례로 구하는 문제다. 이는 수학 공식을 알고 있으면 편한 문제다. ..
2021.01.27 -
SW Expert Academy // 3431
SW Expert Academy 3431번 "준환이의 운동관리" 문제입니다. TC = int(input()) ans = [] for tc in range(1, TC + 1): k = "#"+str(tc) L, U, X = map(int, input().split()) if X < L: k += " " + str(L-X) elif L
2021.01.27 -
SW Expert Academy // 3499
SW Expert Academy 3499번 "퍼펙트 셔플" 문제입니다. TC = int(input()) ans = [] for tc in range(1, TC + 1): N = int(input()) string = list(input().split()) if N&1 == 1: alist = string[0:N//2+1] blist = string[N//2+1:N] else: alist = string[0:N//2] blist = string[N//2:N] k = "#"+str(tc) for i in range(N): if i&1 == 0: k += " " + alist[i//2] else: k += " " + blist[i//2] ans.append(k) for e in ans: print(e) 카드 ..
2021.01.26 -
SW Expert Academy // 3750
SW Expert Academy 3750번 "Digit sum" 문제입니다. TC = int(input()) ans = [] for tc in range(1, TC + 1): n = 0 N = int(input()) while True: while N > 0: n += N%10 N //= 10 if n >= 10: N = n n = 0 else: break ans.append("#"+str(tc)+" "+str(n)) for e in ans: print(e) 자릿수가 한자리가 될 때까지 더해서 한자리가 되었을 경우 그 값을 구하는 문제다. 나머지 연산자(%)로 전부 다 더한 후 나온 값이 10이상(두 자리 이상)인지 확인한다. 만약 두 자리 이상일 경우 다시 연산을 하며 한 자리일 경우 반복문을 빠져나와..
2021.01.26