Programming(106)
-
BaekJoon Online Judge // 1011
BaekJoon Online Judge 1011번 "Fly me to the Alpha Centauri" 문제입니다. TC = int(input()) for i in range(0, TC): x, y = map(int, input().split()) k = y - x n = 1 l = 0 t = 1 while (1): if k l + n: t += 1 break l += 2*n n += 1 t += 2 print(t)
2021.03.17 -
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 -
백준 BaekJoon Online Judge // 2750
백준 알고리즘 BaekJoon Online Judge 2750번 "수 정렬하기" 문제입니다. N = int(input()) lst = [] for i in range(N): lst.append(int(input())) for i in range(N-1): for j in range(N-1-i): if lst[j] > lst[j+1]: lst[j], lst[j+1] = lst[j+1], lst[j] for ele in lst: print(ele) 정렬 문제다. 시간 제한이 널널한 정렬이기 때문에 버블 정렬을 사용하였다. 버블 정렬은 아래의 링크를 참조하자. ko.wikipedia.org/wiki/%EA%B1%B0%ED%92%88_%EC%A0%95%EB%A0%AC 거품 정렬 - 위키백과, 우리 모두의 백과사..
2021.01.28 -
백준 BaekJoon Online Judge // 1436
백준 알고리즘 BaekJoon Online Judge 1436번 "영화감독 숌" 문제입니다. N = int(input()) i = 666 lst = [] while len(lst) < N: if "666" in str(i): lst.append(i) i += 1 print(lst[len(lst)-1]) "666"이 들어간 수들 중에서 N번째로 큰 수를 구하는 문제다. 브루트 포스 알고리즘 문제 중의 하나인 만큼 시간은 크게 상관없이 단순무식하게 풀면된다. 시간을 조금이라도 줄이고자 하면 666부터 시작해서 1씩 증가시킨 후 문자열로 변환시켜서 "666"이 포함되어 있는지 in 으로 확인하면 된다. 리스트에 저장하면서 리스트의 길이가 N이 될 때까지 저장 후 저장된 리스트의 가장 마지막 인덱스의 값을 불러..
2021.01.27 -
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