코딩테스트/프로그래머스[모든문제Lv.0]

다음에 올 숫자

두퍼 2023. 3. 30. 17:13

1. Clarify Questions / Idea

  • 리스트로 매개변수에 저장하는 것인가? 예시 보니 그러하다
  • 음수도 다 포함해서 생각? 당근
  • 어떻게 해서 주어진 숫자들을 보고 등차인지 등비인지 알 수 있을까?
  • 등차 같은 경우: 리스트 옆에 있는 숫자들끼리 빼본다 차가 같은면 등차임을 알 수 있다
  • 그렇다면 차가 일정하지 않으면 등비라고 생각하기? 즉 등차 등비 외에는 둘다 아닌 경우에 대해서는 나오게 될것인가?
  • 등비임을 판단하면 그냥 바로 첫번째 두번째 수를 나눔으로서 공비를 확인할 수 있다.
  • 리스트는 등차라면 모두 등차인것이가? 예외인 숫자는 없는 거겠지? 그러면 세개의 숫자만 확인하고 구할 수 있으니까
  • 그렇다면 리스트 안에는 최소 3개는 들어가 있어야겠지?

2. Get to the most Optimized solution

  1. 리스트의 숫자를 받아와서 등차인지 아닌지 판단
  2. 등차라 하면 이미 구한 차를 마지막 수에 더하기
  3. 등비라면 첫번째 두번째 수를 나눠서 등비 구한 후 마지막 숫자에 등비를 곱하기

 

3. Code

1차 실패

def solution(common):
    answer = 0
    
    i = 0
    count = len(common)
    
    if count >= 3:
        if common[i+1] - common[i] == common[i+2] - common[i+1]:
            diff = common[i+1] - common[i]
            answer = common[count]+diff
        else:
            diff = common[i+1]/common[i]
            answer = common[count]*diff
    
    
    
    return answer

이유:

  1. common[count]는 common 리스트의 범위를 벗어나는 인덱스입니다. 따라서 common[count-1]을 사용해야 합니다.
  2. common[count] 대신 common[-1]을 사용하여 리스트의 마지막 요소를 가져와야 합니다.

정답

def solution(common):
    answer = 0
    
    i = 0
    count = len(common)
    
    if count >= 3:
        if common[1] - common[0] == common[2] - common[1]:
            diff = common[1] - common[0]
            answer = common[-1]+diff
        else:
            diff = common[i+1]/common[i]
            answer = common[-1]*diff
    
    
    
    return answer

 

 

'코딩테스트 > 프로그래머스[모든문제Lv.0]' 카테고리의 다른 글

잘라서 배열로 저장하기  (0) 2023.03.31
문자열 밀기 ☑️  (0) 2023.03.31
종이 자르기  (0) 2023.03.31
연속된 수의 합  (0) 2023.03.30
옹알이(1)  (0) 2023.03.30