Python 4

11501: 주식(Python)

문제접근 이 문제도 회의실 배정과 마찬가지로 그리디 접근 방법으로 풀어야 하기 때문에 명쾌한 테스트 케이스 증명이 아닌 그럴듯한 가설을 세우고 코드를 돌려보며 검증하는 방식으로 접근해야 했다. 회의실 문제와 다르게 시간순으로 정렬된 배열이기에 멋대로 배열의 순서를 바꿨다가는 대참사가 일어날 것 같아 정렬은 사용하지 않았다. 시간 제한은 5초지만 테스트케이스 배열의 길이가 (2 ≤ N ≤ 1,000,000) 라 시간이 넉넉하다고도 볼 수 없었다. 우선 1) 미래의 가격을 예측할 수 있다는 가정 하에 거래하고, 2) 단순하게 가지고 있는 현재의 주식을 모두 파는 것이 아니라 원하는 만큼 팔 수 있다는 점에 주목했다. 그런데 조금 생각해보니 미래를 예측할 수 있다는 가정이 있으니 주식의 가격이 내리면 사고, ..

백준 온라인 저지 - 분수찾기(#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)..