2021/08/09 월요일

Gong Intaek·2021년 8월 9일
0

일상

목록 보기
59/1031
post-thumbnail

TIL


오늘 한 일

  • 휴식
  • 체력 보존용 산책(걷기 운동)
  • programers
    • 구명 보트 (level 2)

문제 풀이

구명보트 (level 2)

탈출할수 있는 최소 보트 갯수 구하는 문제. 사실 문제를 접한지는 좀 되었다. 이 문제의 경우 정확성과 효율성을 각각 확인하는데 정확성은 파이썬으로 코드를 짤때부터 클리어 된상태였다. 물론 오늘 짠코드가 가장 짧게 완성되긴 했지만. 효율성을 극복하는데 필요한것은 중복된 무게에대한 처리 방식이었다. 이전 코드의 경우 모든 무게에 대해 순차적으로 게산하였지만 중복된 무게의 경우 그보다빠르게 처리가 가능했으니깐. 즉 정해진 몇개의 무게만 존재하는 문제에서는 비효율적인 코드였었다.

여하튼 최종 방식은 다음과 같다. 우선 주어진 무게를 무게별로 구분할 객체를 하나 잡고, 무게별 갯수를 기록한다. 그리고 그렇게 정리된 객체의 키값을 배열로 가져와서 내림차순으로 정리한다. 그리고 while 반복문 내에서 다음과 같은 조건에 따라

  • 배열의 첫값 과 끝값의 합이 무게제한 이하 인가?

    • 첫값의 갯수가 끝값의 갯수보다 작은가?
    • 첫값의 갯수가 끝값의 갯수보다 큰가?
    • 첫값의 갯수가 끝값의 갯수와 같은가?
      • 작거나 같은 갯수를 구명보트에 더한다. 그리고 더해진 보트의 수는 양쪽값에서 모두 제외한다.
  • 배열의 첫값 과 끝값의 합이 무게제한 초과 인가?

    • 첫값의 무게가 무게제한의 절반 이하인가?
    • 첫값의 무게가 무게제한의 절반 초과인가?
      • 절반이하일때 그 갯수가 2의 배수이면 절반을 아니면 절반하고 올림한 값을 더한다.
        • 절반 초과시 값의 갯수를 모두 더한다.

구명보트수를 계산한다. 이 경우 같은 무게가 여러번 중복된 경우에 대한 효율성 문제가 해결 되었다.


오늘은...

산책을 하면서 무얼해볼까에 대한 고민을 해보았다. 당장 이전에 했었던 것에 대한 이어하기를 진행하기에는 뭔가 부족한것이 많은것 같아서 다시금 간단한것부터 진행해보고자 하였다. 해서 잡은것이 게시판 만들기. 우선 구상하고 있는 단순한 게시판 모습은 있는데, 이를 구체화 하는것을 초기 목표로 잡아야겠다. 그리고 연결할 서버는 기존 사용하던 스택으로 진행해봐야겠고 db는 mongodb를 사용해봐야겠다.

profile
개발자가 되기위해 공부중

0개의 댓글