관리 메뉴

솜씨좋은장씨

[BaekJoon] 2997번 : 네 번째 수 (Python) 본문

Programming/코딩 1일 1문제

[BaekJoon] 2997번 : 네 번째 수 (Python)

솜씨좋은장씨 2022. 6. 16. 23:17
728x90
반응형

코딩 1일 1문제! 오늘의 문제는 백준의 네 번째 수 입니다.

 

2997번: 네 번째 수

첫째 줄에 상근이가 고른 4개의 수 중 3개가 주어진다. 이 수는 크기 순이 아닐 수도 있고, -100보다 크거나 같고, 100보다 작거나 같은 정수이다.

www.acmicpc.net

👨🏻‍💻 문제 풀이

1. 입력 받은 숫자 리스트를 정렬 합니다.

sorted_numbers = sorted(numbers)

2. 정렬한 리스트에서 첫번째 숫자와 두번째 숫자의 차이 ( diff_1 )

     두번째 숫자와 세번째 숫자의 차이 ( diff_2 ) 를 구합니다. 

diff_1 = sorted_numbers[1] - sorted_numbers[0]
diff_2 = sorted_numbers[2] - sorted_numbers[1]

3. diff_1 == diff_2 이면서

     마지막 숫자 + diff_1 이 100보다 큰 경우 

     -> 정답을 첫번째 숫자 - diff_1 으로

     마지막 숫자 + diff_1 이 100보다 작거나 같은 경우

     -> 정답을 마지막 숫자 + diff_1 으로  

if diff_1 == diff_2:
    if sorted_numbers[-1] + diff_1 <= 100:
        answer = sorted_numbers[-1] + diff_1
    else:
        answer = sorted_numbers[0] - diff_1

4. diff_1 * 2 == diff_2 인 경우

     -> 정답을 중간 숫자 + diff_1 으로

elif diff_1 * 2 == diff_2:
    answer = sorted_numbers[1] + diff_1

5. diff_1  == diff_2 * 2 인 경우

     -> 정답을 첫번째 숫자 + diff_2 으로

elif diff_1 == diff_2 * 2:
    answer = sorted_numbers[0] + diff_2

전체 코드는 아래를 참고해주세요.

👨🏻‍💻 코드 ( Solution )

def fourth_number(numbers):
    sorted_numbers = sorted(numbers)
    
    diff_1 = sorted_numbers[1] - sorted_numbers[0]
    diff_2 = sorted_numbers[2] - sorted_numbers[1]
    
    if diff_1 == diff_2:
        if sorted_numbers[-1] + diff_1 <= 100:
            answer = sorted_numbers[-1] + diff_1
        else:
            answer = sorted_numbers[0] - diff_1
    elif diff_1 * 2 == diff_2:
        answer = sorted_numbers[1] + diff_1
    elif diff_1 == diff_2 * 2:
        answer = sorted_numbers[0] + diff_2
        
    return answer


if __name__ == "__main__":
    numbers = list(map(int, input().split()))
    print(fourth_number(numbers))
 

GitHub - SOMJANG/CODINGTEST_PRACTICE: 1일 1문제 since 2020.02.07

1일 1문제 since 2020.02.07. Contribute to SOMJANG/CODINGTEST_PRACTICE development by creating an account on GitHub.

github.com

Comments