Programming/BOJ(37)
-
백준 BaekJoon Online Judge // 10250
백준 알고리즘 BaekJoon Online Judge 10250번 "ACM 호텔" 문제입니다. TC = int(input()) for i in range(TC): H, W, N = map(int, input().split()) if N%H != 0: print(N%H * 100 + N//H + 1) else: print(H * 100 + N//H) 문제가 장황하게 설명되어 있지만 간단하게 설명하면 102호 보단 301호 즉 호가 더 중요하다. 호가 같다면 층수가 작은 쪽을 준다는 말이다. 즉 이 문제에서는 W는 아무런 쓸모가 없다. N과 H만을 가지고 놀면 된다. N을 H로 나누었을 때 나머지가 층 수기 때문에 *100을 해주고 몫은 호 수인데 호는 1부터 시작하므로 N//H에다가 1을 더해주어야 한다...
2021.01.20 -
백준 BaekJoon Online Judge // 2869
백준 알고리즘 BaekJoon Online Judge 2869번 "달팽이는 올라가고 싶다" 문제입니다. A, B, V = map(int, input().split()) if (V-A)%(A-B) == 0: print((V-A)//(A-B) + 1) else: print((V-A)//(A-B) + 2) 낮에는 A미터씩 올라가고 밤에는 B미터씩 떨어지는 달팽이가 총 길이가 V미터인 나무 막대를 올라간다고 하였을 때 며칠이 결리는지 구하는 문제다. 낮에는 A미터씩 올라가고 밤에는 B미터씩 떨어지므로 하루동안 가는 거리는 A-B미터다. 하지만 낮에 올라갔을 때 원하는 높이에 도달한다면 밤에 내려가는 것을 따지지 않으므로 전체 높이 V에서 A를 뺀 V-A의 값을 A-B (하루동안 가는 길이)로 나눈다. 나누었을 ..
2021.01.20 -
백준 BaekJoon Online Judge // 2839
백준 알고리즘 BaekJoon Online Judge 2839번 "설탕 배달" 문제입니다. N = int(input()) lst = [] for i in range(0, N//5+1): if (N - 5*i)%3 == 0: lst.append(i + (N - 5*i)//3) if len(lst) < 1: print(-1) else: lst.sort() print(lst[0]) N킬로그램 설탕을 5킬로그램 봉지와 3킬로그램 봉지만 사용하여 배달을 할 경우 사용할 수 있는 가장 적은 봉지 수를 구하는 문제다. 다른 효율적인 방법을 구하는 방식이 있을지 모르겠지만 나의 경우는 완전탐색을 하였다. 완전탐색이란 될 수 있는 모든 경우를 구하는 것을 말하는데 여기서의 모든 경우는 봉지 수를 생각하지 않고 배달을 할..
2021.01.19 -
백준 BaekJoon Online Judge // 2775
백준 알고리즘 BaekJoon Online Judge 2775번 "부녀회장이 될테야" 문제입니다. TC = int(input()) for i in range(0, TC): K = int(input()) N = int(input()) lst = [list(range(1, N+1))] for j in range(1, K+1): temp = [] for l in range(0, N): temp.append(sum(lst[j-1][0:l+1])) lst.append(temp) print(lst[K][N-1]) 문제의 내용은 아래와 같다. 평소 반상회에 참석하는 것을 좋아하는 주희는 이번 기회에 부녀회장이 되고 싶어 각 층의 사람들을 불러 모아 반상회를 주최하려고 한다. 이 아파트에 거주를 하려면 조건이 있는데,..
2021.01.19 -
백준 BaekJoon Online Judge // 2292
백준 알고리즘 BaekJoon Online Judge 2292번 "벌집" 문제입니다. N = int(input()) for i in range(0, 200000000): if N == 1: print(N) break if N 7 -> 19 -> 37...로 개수가 늘어나는 것을 확인할 수 있다. 얼핏 보면 저 수들에서는 규칙성이 없어보이지만 저 수열에서 각각 수들의 차를 써보면 7-1 = 6, 19-7 = 12, 37-19 = 18 => 6, 12, 18...로 쓸 수 있다. 6, 12, 18은 6을 시작항으로 하고 6씩 늘어나는 등차수열의 성질을 띤다. 따라서 본 수열은 계차수열이라는 것을 알 수 있다. 계차수열에 관한 정보는 아래에 링크해두겠다. namu.wiki/w/%EA%B3%84%EC%B0%A8..
2021.01.18 -
백준 BaekJoon Online Judge // 1712
백준 알고리즘 BaekJoon Online Judge 1712번 "손익분기점" 문제입니다. import sys A, B, C = map(int, sys.stdin.readline().split()) if B >= C: print(-1) else: ans = A // (C - B) + 1 print(ans) 부등식을 활용하면 쉽게 풀 수 있는 문제다. 손익 분기점을 구하려면 팔은 노트북의 개수를 N 이라고 한다면 생산하는데 드는 비용은 A + B * N 이고 판매했을 때 얻은 수입은 C * N 이다. C * N > A + B * N 이 되어야 하므로 N > A / (C - B) 를 만족하는 N을 구하면 된다. B >= C 일 경우에는 N의 값이 음수가 되거나 분모가 0이 되어버리므로 그런 경우는 -1을 출..
2021.01.18