백준 문제풀이/수학(Math) 6

백준 온라인 저지 - 영화감독 숌(#1436) 파이썬

문제설명 이 문제는 While loop을 이용하여 오름차순으로 모든 양의 정수를 검사하며 올라가 666이 포함된 숫자를 모두 찾고, 순번을 매긴 뒤 순번과 N값을 비교하면 쉽게 해결할 수 있습니다. 이때 파이썬에서 제공하는 find()함수를 이용하여 str 자료형에 "666"이 포함되었는지 여부를 확인할 수 있습니다. 영화감독 숌(#1436) 파이썬 코드 inp = int(input()) cnt = 0 idx = 0 while True: idx += 1 if str(idx).find("666") != -1: cnt += 1 if cnt == inp: break print(idx)

백준 온라인 저지 - ACM호텔(#10250) 파이썬

문제설명 이 문제의 핵심은 경우의 수를 잘 나누는 것입니다. 호텔에 온 순서대로 1)가까운 호실, 2) 낮은 층을 배정합니다. 101, 201, 301..102, 202, 302.. 의 형태로 배정이 되겠죠. 먼저 여러 개의 테스트케이스를 받기 때문에 for문을 활용하여 H, W, N을 테스트케이스 배열에 저장합니다. 그 다음, N번째로 온 손님이 머물 층과 호수를 따로 구해야 합니다. 먼저 층은 N을 H로 나눈 나머지가 될 것입니다. 단, 나머지가 0이라면 N은 H가 되어야 합니다. 호실의 경우 N을 H로 나눈 몫이 됩니다. 이제 하나의 문자열에 층과 호수를 합쳐서 방 번호를 출력하면 되는데, 호수가 9 이하라면 층과 호수 사이에 0을 삽입해야 합니다. ACM호텔(#10250) 파이썬 코드 t = in..

백준 온라인 저지 - 달팽이는 올라가고 싶다(#2869) 파이썬

문제설명 이 문제의 핵심은 시간제한입니다. while문을 돌리면 간단하게 구현할 수 있지만 (1 ≤ B < A ≤ V ≤ 1,000,000,000) 라는 큰 수가 입력값으로 주어지기 때문에 while문을 사용하면 시간초과가 뜹니다. 그렇다면 두 가지의 경우로 나누어 풀면 됩니다. 먼저 달팽이가 꼭대기에 올라가기까지의 일수를 담을 변수 n을 설정합니다. 이 n이 정수일 경우는 달팽이가 하루에 올라갈 수 있는 할당량을 모두 채우며 꼭대기에 도달하는 경우입니다. 이 경우는 nA + (n-1)B = V, 즉 n = (V-B)/(A-B)이 성립한다면 n을 출력하고, 그 외의 경우, 즉 달팽이가 할당량을 모두 채우지 않은 채로 꼭대기에 도달하는 경우, n이 소수점을 가지게 되죠. 이 경우에는 n+1을 출력하면 됩니..

백준 온라인 저지 - 분수찾기(#1193) 파이썬

문제설명 2차원 배열에 분수가 담겨있고, 이는 아래로 향하는 (X, Y) 좌표로도 볼 수 있습니다. 이 배열의 형태도 마찬가지로 문제 해결을 위해서는 규칙성을 찾아야 합니댜. 저는 배열의 대각선을 또다른 배열로 보았습니다. 단, 지그재그 순서로 분수에 번호를 매기기 때문에 첫번째 배열은 1/1, 두번째 배열은 2/1, 1/2, 세번째 배열은 3/1, 2/2, 1/3이 담겨있고, N번째 배열에는 N개의 배열이, N이 홀수라면 N/1, N-1/2 .. 1/N 순서로, 짝수라면 역순으로 담겨있겠죠? 또한 지그재그 형태로 지나가면서 분수에 번호를 매기기 때문에 각 배열에 포함된 분수의 갯수의 합으로 이루어진 수열, 1, 1+2, 1+2+3.. 순으로 증가하는 수열, 등차수열이 포함된 계차수열입니다. (계차수열에..

백준 온라인 저지 - 벌집(#2292) 파이썬

문제설명 수와 도형에 관련된 문제는 규칙성을 찾는 것이 가장 먼저겠죠? 먼저,가장 작은 육각형을 육각형1 이라고 할 때, 육각형을 둘러싸고 있는 육각형들의 집합을 육각형2, 육각형3.. 순으로 보았습니다. 가장 작은 육각형은 1, 두번째는 2, 3, 4, 5, 6, 7, 세번째는 8, 9...19 를 담고 있는데요, 저는 육각형 집합에 포함된 가장 큰 숫자들에 주목했습니다. 몇번째 육각형 집합인지가 곧 시작점에서 육각형에 도달하는 최소이동거리가 되겠죠? 각 육각형 집합에 포함된 가장 큰 숫자는 1, 7, 19, 37.. 순으로 증가하고, 이것은 1, 1+6, 1+6+12, 1+6+12+18로 바꾸어 쓸 수 있습니다. 이것은 고등학교 수학시간에 배운 계차수열의 형태네요. 계차수열은 수열의 인접한 두 항에..

백준 온라인 저지 - 손익분기점(#1712) 파이썬

문제설명 단계별로 풀어보기 기본수학1 첫번째 문제인 손익분기점 입니다. 저는 BEP(Break-Even-Point)를 BEP = int(a/(c-b)) + 1로 두고, BEP가 0보다 크면 BEP를, 0보다 작으면 손익분기점이 존재하지 않기 때문에 -1을 출력하게 하고, 0으로 나눴을 때 발생하는 ZeroDivisionEroor를 방지하기 위해 try-except문을 활용하여 0으로 나누었을 때는 -1을 출력하도록 소스코드를 짰습니다. 여기서 주의할 점은 BEP를 정의할 때 try문 밖에 쓰면 ZeroDivisionError가 발생한다는 점! 손익분기점(# 1712) 파이썬 코드 a, b, c = map(int, input().split()) while True: try: bep = int(a/(c-b)..