Basic Math 1

Introduction

수학 문제로 수학적 사고력을 길러 봅시다.

Example

https://www.acmicpc.net/step/8

손익분기점

이익이 발생하는 지점을 찾는 문제

첫째 줄에 A, B, C가 빈 칸을 사이에 두고 순서대로 주어진다. A, B, C는 21억 이하의 자연수이다.

첫 번째 줄에 손익분기점 즉 최초로 이익이 발생하는 판매량을 출력한다. 손익분기점이 존재하지 않으면 -1을 출력한다.

import sys
input = sys.stdin.readline
A, B, C = map(int,input().split())

result = -1

if B >= C:
  result = -1
else:
  result = int(A/(C-B))+1

print(result)

풀이

B가 C보다 크거나 같으면, 손익분기점이 존재하지 않는다.

결과: -1

C가 B보다 크면, 손익분기점이 존재한다.

본문에 나온 내용을 토대로 식을 정리하면,

A+B*n < C*n

n 값만 남도록 정리하면,

A < (C-B)*n

A/(C-B) < n

n은 자연수 이므로,

결과: A/(C-B) + 1

벌집

벌집이 형성되는 규칙에 따라 벌집의 위치를 구하는 문제

첫째 줄에 N(1 ≤ N ≤ 1,000,000,000)이 주어진다.

입력으로 주어진 방까지 최소 개수의 방을 지나서 갈 때 몇 개의 방을 지나는지 출력한다.

import sys
input = sys.stdin.readline
N = int(input())

result = 0
if N == 1:
  result = 1
else:
  for n in range(2,18259):
    if N <= 1+(n*(n-1))/2*6:
      result = n
      break

print(result)

풀이

벌집의 순서, 1 -> 7 -> 19 -> 37 을 수열로 표현하면 다음과 같다.

1 -> 1*6 -> 2*6 -> ... -> (n-1)*6

이를 근거로 범위를 표현하면 다음과 같다.

(1+1) <= N <= (1+1*6) : 2

(1+1+(1*6)) <= N <= (1+(1*6)+(2*6)) : 3

(1+1+(1*6)+(2*6)) <= N <= (1+(1*6)+(2*6)+(3*6)) : 4

이를 근거로 수열로으로 나타내면 표현하면 다음과 같다.

(1+1+(1+2+...(n-2))*6) <= N <= (1+(1+2+...+(n-1)))*6) : n

등차 수열 합공식으로 정리하면,

(1+1+(n-1)*(n-2)*6) <= N <= (1+n*(n-1)*6) : n

N이 1,000,000,000일때, n의 최댓값을 구한다.

N = 1000000000
n = 1
while N > 1+n*(n-1)/2*6:
  n+=1
print(n)
>> 18258

n의 최댓값을 참조해 range 값 설정

result = 0
if N == 1:
  result = 1
else:
  for n in range(2,18259):
    if N <= 1+(n*(n-1))/2*6:
      result = n
      break

분수찾기

분수의 순서에서 규칙을 찾는 문제

달팽이는 올라가고 싶다

달팽이의 움직임을 계산하는 문제

ACM 호텔

호텔 방 번호의 규칙을 찾아 출력하는 문제

부녀회장이 될테야

층과 거주자 수의 규칙을 찾는 문제

설탕배달

5와 3을 최소 횟수로 합하여 N을 만드는 문제

큰 수 A+B

파이썬 같은 언어는 10,000자리 정도의 자연수도 자유롭게 다룰 수 있습니다. 하지만 C/C++이라면 이 문제를 어떻게 풀까요? C/C++ 사용자가 아니더라도 고민해 보면 좋을 것입니다.

pass

2022

Stack

1 minute read

Introduction

Stack

less than 1 minute read

Introduction

Download-only-one-directory

less than 1 minute read

Git 명령어를 사용한 하위 디렉토리 다운로드 Clone 할 로컬 저장소 생성

Sort

3 minute read

Introduction

Tree

less than 1 minute read

Introduction

Mutex library on C++

less than 1 minute read

#include <iostream> #include <thread> #include <chrono> #include <mutex> #include <atomic> #include <string.h>

TODO

less than 1 minute read

how to costom github blog using jekyll

Welcome to Jekyll!

less than 1 minute read

You’ll find this post in your _posts directory. Go ahead and edit it and re-build the site to see your changes. You can rebuild the site in many different wa...

Back to top ↑