[코드트리 조별과제] 3주차 레포트

2024. 8. 4. 20:05·알고리즘 메모

 

> 문제 풀이

# DP

📝 사각형 채우기 3 - https://www.codetree.ai/missions/2/problems/rectangle-fill-3/description

 

코드트리 | 코딩테스트 준비를 위한 알고리즘 정석

국가대표가 만든 코딩 공부의 가이드북 코딩 왕초보부터 꿈의 직장 코테 합격까지, 국가대표가 엄선한 커리큘럼으로 준비해보세요.

www.codetree.ai

 

문제

정답률 27% 제출 1,427회 예상 소요 시간 91분

2 × n 크기의 사각형을 1 × 2, 2 × 1, 1 x 1 크기의 사각형들로 채우는 방법의 수를 구하는 프로그램을 작성해보세요

 
입력 예제

3

 
 
출력 예제

22

 
제출 결과

 
코멘트
- 사각형 채우기 유형이 여러가지 있지만, 1x1 짜리 블록이 포함된 다소 특이한 형태였다.
- 처음 점화식을 세울 때 이전 형태(목표보다 짧은 블록)에 양쪽으로 새로운 블록 패턴을 추가하는 아이디어를 떠올려서 더 헷갈렸다.

- 중복을 피하기 위해선 오른쪽에 추가하면서 늘리는 방식으로 생각해야 한다.

- 또한 가로 n- i 의 블록에 가로 i 크기의 블록을 더할 때, 중복을 피하기 위해선 다른 블록의 조합으로 만들 수 없는 고유한 i 크기의 블록 패턴만 사용해야한다.

- 고민을 해보면 가로 형태로 누운 2칸짜리 블록이 교차되는 형태로 각 크기별 고유한 블록이 2개씩 새로 생김을 알 수 있는데 2칸짜리 블록의 경우만 3개가 생기기 때문에 유의해야 한다(1x1 4개 패턴).

- 홀수 크기, 짝수 크기 상관 없이 모두 아래와 같은 패턴의 고유 패턴 2개씩.

- 크기 2x2 짜리 예외

 

# 그리디

📝 폭탄 해체 작업 - https://www.codetree.ai/missions/8/problems/the-bomb-dismantling/description

 

코드트리 | 코딩테스트 준비를 위한 알고리즘 정석

국가대표가 만든 코딩 공부의 가이드북 코딩 왕초보부터 꿈의 직장 코테 합격까지, 국가대표가 엄선한 커리큘럼으로 준비해보세요.

www.codetree.ai

 

문제

정답률 36% 제출 351회 예상 소요 시간 159분

N개의 시한 폭탄이 있습니다. 각 폭탄을 해체하는데는 1 시간이 걸리며, 폭탄마다 해체하면 얻을 수 있는 점수가 있습니다. 각 폭탄마다 해체해야만 하는 시간 제한이 정해져 있으며, 시간이 다 되어 터진 폭탄은 이후 해체할 수는 없게 되지만 다른 폭탄 해체 작업에 영향을 주지는 않습니다. 폭탄 해체 작업은 모든 폭탄이 해체되거나 터질 때 까지 진행합니다. 폭탄을 해체해서 얻을 수 있는 점수의 최댓값을 구하는 프로그램을 작성해보세요.

 
입력 예제

4
10 3
7 5
8 1
2 1

 
 
출력 예제

25

 
제출 결과

 
코멘트
- 이번 문제의 키포인트는 모든 폭탄의 해체 시간이 1로 동일하다는 것이다.

- 해체 시간이 달랐다면 풀이 방법이 달라졌겠지만, 동일하기 때문에 주어지는 정보 두 가지 측면에서 그리디하게 생각하면 된다.

- 먼저 점수 측면에서의 그리디 -> 현재 시간에 터지지 않은(해체가 가능한) 폭탄 중 가장 높은 점수의 폭탄이 최선의 선택이다.

- 시간 제한 측면에서의 그리디 -> 현재 가장 높은 점수의 폭탄을 가장 느리게 해체해야 이후 선택해야 할 폭탄들의 해체 가능 유무에 영향을 끼치지 않는다.

- 그렇다면 점수 순으로 정렬한 뒤, 정렬된 폭탄을 시간 제한에 최대한 가깝게 해체하는 방식으로 풀이하면 된다.

 

📝 자동차 단일 거래 이익 최대화하기 2 - https://www.codetree.ai/missions/8/problems/max-profit-of-single-car-2/description

 

코드트리 | 코딩테스트 준비를 위한 알고리즘 정석

국가대표가 만든 코딩 공부의 가이드북 코딩 왕초보부터 꿈의 직장 코테 합격까지, 국가대표가 엄선한 커리큘럼으로 준비해보세요.

www.codetree.ai

 

문제

정답률 59% 제출 309회 예상 소요 시간 31분

향후 n년 간의 자동차 가격 정보가 미리 주어졌을 때, 자동차를 단 한 번 사서 되팔 때의 이익을 최대화하고자 합니다. 낼 수 있는 최대 이익을 출력하는 프로그램을 작성해보세요. 단, 자동차를 사기 전에는 팔 수 없습니다.

 
입력 예제

5
9 10 2 3 6

 
 
출력 예제

4

 
제출 결과

 
코멘트
- 이번 문제의 키포인트는 시점을 거꾸로 생각하는 것이다.

- 시간의 흐름에 따라 이익을 판단하면 시간 복잡도가 매우 커지게 된다.

- 우리는 미래를 알고 있다는 점을 인지하고, 시점을 거꾸로 타고 올라오면 된다.

- 현재 최대 자동차 가격보다 현재 시점의 자동차 가격이 낮다면, 그 차익만큼 이득을 추가하면 된다.

- 반대로 현재 시점의 가격이 더 높다면 현재 가장 비싼 자동차의 이득 측정을 멈추고, 현재 시점의 자동차 가격으로 업데이트하여 반복한다.

'알고리즘 메모' 카테고리의 다른 글

[코드트리 조별과제] 6주차 레포트  (0) 2024.08.25
[코드트리 조별과제] 5주차 레포트  (0) 2024.08.17
[코드트리 조별과제] 4주차 레포트  (0) 2024.08.11
[코드트리 조별과제] 2주차 레포트  (0) 2024.07.28
[코드트리 조별과제] 1주차 레포트  (0) 2024.07.21
'알고리즘 메모' 카테고리의 다른 글
  • [코드트리 조별과제] 5주차 레포트
  • [코드트리 조별과제] 4주차 레포트
  • [코드트리 조별과제] 2주차 레포트
  • [코드트리 조별과제] 1주차 레포트
csb0710
csb0710
  • csb0710
    데모장
    csb0710
  • 전체
    오늘
    어제
    • 분류 전체보기 (51)
      • 스프링부트 메모 (6)
      • 개발 메모 (3)
      • 클라우드 메모 (10)
      • 설치&설정 메모 (2)
      • 알고리즘 메모 (18)
      • 인턴 메모 (7)
      • 데이터베이스 메모 (3)
      • 책 메모 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    디비설치
    티스토리챌린지
    .gitmodules
    GitHub
    코딩테스트
    오블완
    ELK Stack
    스프링부트
    이지퍼블리싱
    서버생성
    백준
    코드트리
    그리디
    submodule
    코드트리조별과제
    자동 답변 봇
    디비설정
    서버배포
    알고리즘
    서버 연결
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.2
csb0710
[코드트리 조별과제] 3주차 레포트
상단으로

티스토리툴바