2021.06.15 알고리즘 문제풀기

samdaso-o·2021년 6월 15일
1

python

목록 보기
9/17

백준 1712

손익분기점을 구하는 문제이다.
고정비용이 a가 있고, 한대생산시 드는 가변비용 b가 있고, 가격 c가 있다.
손익분기점을 넘는 갯수를 구하는 문제이다. 만약 손익분기점을 넘을 수 없다면 -1을 출력할것.
생각해보기

  • 숫자받기
  • 출력불가시 -1 출력(가격이 가변비용보다 작으면 손익분기점 달성 불가)
  • a/(c-b)값에 하나 더 많으면 손익분기점을 넘긴것

일단 input과 split함수로 값을 받으며 map함수로 int형태로 바꿔 값을 각각 저장했다.
그리고 조건문으로 가격이 가변비용보다 작으면 -1을 출력하도록 하고, 그에 반대면 계산식으로 갯수를 구하게 했다. +1은 딱 떨어지는 지점을 구하는것이 아니라 손익분기점을 넘기는 지점을 구하는것이므로 하나 더하는 식으로 만들었다.

백준 2292

육각형으로 이뤄진 벌집 중앙에서 시작해 이웃하는방에 돌아가면서 1씩 증가하는 번호를 매긴다. 이때 숫자 n이 주어지는데 중앙에서 n까지 가는데 최소 개수의 방까지 가는데 몇개의 방을 지나는지 구하는 문제이다.
생각해볼것

  • 벌집모양같이 증가하는 변수 만들기(반복문 활용)
  • 그 증가에 따라 1씩 증가하는 방 변수 만들기
  • n값과 증가하는 변수 비교식 만들기

일단 n의 값을 받았다.
중앙값 1의 변수를 만들고, 벌집모양이 육각형이므로 6씩 증가하므로 6이 담긴 변수를 만들었다. 그리고 1칸씩 이동하는 방을 만들었다.
1의 값을 받으면 1을 바로 출력하도록 조건문을 걸어놓고, else에 while True를 걸어 참이 될때까지 반복문을 걸었다.

백준 2869

달팽이가 올라는데 걸리는 day를 구하는 문제이다. 낮에 a만큼 올라가고, 밤에 b만큼 미끄러진다. 높이는 v이다. 정상에 도착 후에는 미끄러지지 않는다.
생각하기

  • 반복문으로 v에 도달할때까지 반복할것
  • 낮에 정상에 도착시 계산식 종료하도록 설정할것.(조건문으로 따로 설정하는게 좋을듯 싶다.)


일단 앞 1712번 문제와 동일하게 map과 split, input함수로 입력받고 올라가는 높이와 날을 계속 저장하기 위해 변수를 만들었다.
그리고 반복문으로 올라간 높이가 v이상이 될때까지 반복하였다. 조건문으로 두 값을 비교하였다.

하지만 문제가 생겼다.

예제 입력 1,2 는 작은 수라 잘 출력하지만, 예제 3은 값이 커 저만큼 반복문을 돌려야하므로 매우 장시간이 걸렸다.(출력이 안됨...)
더 간단한 식으로 만들어야되는 문제가 생겼다.
*출처:https://www.acmicpc.net/problem/2869

profile
ㅎㅅㅎ

0개의 댓글