알고리즘

[프로그래머스] 2 x n 타일링

2024. 6. 8. 23:21

 

특정 수로 나누어 나머지 구하는 과정을 다른 방식으로 해주었더니 시간 초과를 해결하였다.

 

def solution(n):
    answer = 0
    
    dp = [0] * (n+1)
    
    if n == 1:
        return 1
    
    if n == 2:
        return 2
    
    dp[1] = 1
    dp[2] = 2
    
    for i in range(3, n+1):
        dp[i] = dp[i-1] + dp[i-2]
    
    return dp[n] % 1000000007

 

위 코드는 일부 효율성 테스트케이스에서 시간 초과가 발생하였다.

 

위 코드는 1000000007 로 나누는 과정을 마지막에만 해주었다.

def solution(n):
    
    if n == 1:
        return 1
    
    if n == 2:
        return 2
    
    dp = [0] * (n+1)
    
    dp[1] = 1
    dp[2] = 2
    
    for i in range(3, n+1):
        dp[i] = (dp[i-1] + dp[i-2]) % 1000000007
    
    return dp[n]
  1. 2 x n 타

수정한 위 코드는 1000000007 로 나누는 과정을 for문 내에 적용해주었다.

즉, dp[i] 값이 갱신될 때마다 적용하였다. 그랬더니 시간 초과 오류가 해결되었다.

 

시간 초과 발생한 이유는 각 단계에서 1000000007 로 나누는 과정을 하지 않으면 dp[i] 값이 매우 커져서 덧셈 연산 자체가 매우 느려지기 때문이다. 또한, 큰 값을 저장하고 계산하는 것은 메모리 사용량도 증가시키기 때문에 메모리 측면에서도 비효율적이다.

 

dp 문제를 풀 때, 마지막 값만 생각하지 말고 중간 과정에서의 값 변화도 생각해야겠다.

 

https://school.programmers.co.kr/learn/courses/30/lessons/12900

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

저작자표시 비영리 변경금지 (새창열림)
화서동 병아리
화서동 병아리
[병아리에서 꿩이 되어가는 과정] 대학교 학부 수업에서 배운 Computer Science 중심으로 IT 관련 내용을 기록하는 곳입니다.
화서동 병아리
IT 병아리에서 꿩으로
화서동 병아리
전체
오늘
어제
  • 분류 전체보기 (86)
    • Study (0)
    • 객체지향(Java) (5)
    • 보안 (1)
    • 알고리즘 (1)
    • Spring (7)
    • Node.js (1)
    • JavaScript (1)
    • CS (35)
      • 네트워크 (6)
      • 데이터베이스 (21)
      • 소프트웨어공학 (5)
      • 컴파일러 (2)
      • 컴퓨터구조 (1)
    • 개발 (12)
      • AWS (2)
      • Linux (5)
      • Git (5)
    • 공부하면서 얻은 지식들 (16)
    • 코딩테스트 (6)
    • 정보처리기사 실기 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 아픈 동물 #프로그래머스 #db
  • mysql #db #프로그래머스
  • 도커 #이미지 #autoscaling #dockerfile
  • 코드잇 #codeit #유닉스 #unix
  • JPQL #Criteria #QueryDSL
  • 시간초과
  • CS면접대비 #네트워크
  • mysql #homebrew #usr/local #opt/homebrew
  • DATABASE #db #programmers

최근 댓글

최근 글

hELLO · Designed By 정상우.
화서동 병아리
[프로그래머스] 2 x n 타일링
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.