웹개발일지

[백준2420] 여러 값 정수로 입력받기 & 절댓값함수의 사용 - Python 본문

자료구조와 알고리즘

[백준2420] 여러 값 정수로 입력받기 & 절댓값함수의 사용 - Python

hee_log 2023. 1. 16. 13:23
728x90

www.acmicpc.net/problem/2420

 

이 글은 백준 2420을 풀며 관련 개념을 정리한 내용입니다. 

 

2420번: 사파리월드

첫째 줄에 두 도메인의 유명도 N과 M이 주어진다. (-2,000,000,000 ≤ N, M ≤ 2,000,000,000)

www.acmicpc.net

 

문제파악

두 정수가 주어지면 절댓값을 구하는 문제였다. 

 

첫 접근방식 

조건문으로 두 수의 차를 양수로 나오게 할 알고리즘을 구현했다. 

a,b = int(input(" 두 수를 입력하세요"))

if a >= b:
    a-b
else :
    b-a

print(type(a, b))

 두 번 런타임 에러 (value error)가 나서 찾아보니 타입 오류라는 것이었고 테스트를 위해 타입 출력도 해보았으나 첫 번째 줄에서 나는 오류였다. 그런데 알고보니 정수로 여러 값을 받으려면 map으로 감싸주어야하는 이슈가 있었다. 

 

파이썬에서 값을 받는 방법 


1. 문자열 입력받기 
  N= input()

2. 숫자로 입력받기 
  N = int(input())

3. 여러개 입력받기 
  N, N = input.split() 

4. 여러개를 숫자로 입력받기 
  N, M = map(int, input().split())

5. 리스트로 입력받기 
  numbers = [int(x) for x in input().split()]

 

이 문제를 풀려면 값은 위 4번의 방식으로 받고, 파이썬에서 기본으로 제공하는 절댓값 함수를 사용하면 됐다. 

 

절댓값 구하는 함수 

abs(N-M)

 

 

정답 성공 코드 

a, b = map(int, input().split())

print(abs(a-b))

 

 

 


파이썬으로 문제를 풀다보면 정수의 범위는 신경쓰지 않아도 되는 것인가 궁금했는데, 알아보니 파이썬에는 오버플로우가 없어서 그냥 연산만 해주면 된다고한다. Go에서는 정수의 범위를 지정해줬어야 했다.