CODINGTEST_최댓값과 최솟값, 멀리 뛰기

코넬·2023년 5월 21일
0

CodingTest_PCCE

목록 보기
16/17
post-thumbnail

최댓값과 최솟값

  • map 사용하는 방법, 줄이는 방법을 몰라 문제 상황 그대로 작성하였다.
  • 문자열을 split으로 나눠 값을 각각으로 나누고, 이를 리스트에 저장한다.
  • append() 를 작성하여 각각의 값을 리스트에 담아준다.
  • 최댓값 최솟값을 입출력 예에 알맞게 작성하여 answer에 넣어준다 !
def solution(s):
    answer = ''
    s = s.split()

    t = []
    for i in s:
        t.append(int(i)) 
    t.sort()

    answer += str(t[0])
    answer += ' '
    answer += str(t[-1])

    return answer

멀리뛰기

  • 피보나치 수열을 까먹어서 다시 복습했다. 결론적으로 수학적 개념 몰라 틀렸다
  • 리스트 담는 것까지는 다 했는데 for문 으로 케이스 돌릴려고했다.이 바보,,
  1. 방법 가짓수를 담는 리스트를 만든다. 어떤 수를 넣을 때 갈 수 있는 방법이 담아진다.
  2. [1] , [2] 는 이미 지정되어있는 케이스이기 때문에 초기값을 선언해준다.
  3. for 문을 통해서 동적 할당 을 진행한다. 총 걸음수를 넣었을 때, 갈 수 있는 방법을 계산할 수 있는 방법으로 피보나치 수열을 사용한다.

피보나치 수열의 활용?

can_num[i] = (can_num[i - 1] + can_num[i - 2]) % 1234567는 피보나치 수열을 구하는 방법 중 하나인 점화식이다. 피보나치 수열은 이전 두 항의 합으로 다음 항을 계산하는 수열이다.

여기서 can_num[i]는 i번째 칸에 도달하는 방법의 수를 나타낸다. can_num[i - 1]은 i - 1번째 칸에 도달하는 방법의 수이고, can_num[i - 2]는 i - 2번째 칸에 도달하는 방법의 수이다. 따라서, can_num[i]는 can_num[i - 1]과 can_num[i - 2]의 합으로 계산된다.

  1. range 함수 가 3부터 시작하는 이유는 초기값 dp[1]과 dp[2]가 이미 설정되었기 때문에, can_num[3]부터 계산되어야한다.

  2. [n] 으로 해두었더니 out of range 가 떠서 한칸씩 늘려 n+1 로 해주었다. (실수)

#내가 작성한 코드
def solution(n):
    can_num = [0] * (n+1)
    
    can_num[1] = 1
    can_num[2] = 2
    
    for i in range(3, n+1):
        can_num[i] = can_num[i] = (can_num[i - 1] + can_num[i - 2]) % 1234567
        
    return can_num[n]

멀리뛰기 - 나도 풀어볼래 !

profile
어서오세요.

0개의 댓글