A + B
두수를 입력받고 합을 출력하는 문제.
이번 백준 문제는 두수를 입력받고 합을 출력하는 문제이다. 이 또한 파이썬을 조금이라도 알고 있다면, 어렵지 않게 풀 수 있는 문제입니다. 하지만 정답 비율은 약 38%입니다.
백준 단계별로 풀어보기에 첫 단계에서 정답 비율이 저조한 것은 아마 백준의 입출력 제한 과 정답 제출 방식이 특이하기 떄문이라고 생각합니다. 따라서 이를 확실하게 알아야 다음 단계들을 더욱 쉽하게 접할 수 있다고 생각합니다.
이제 문제를 분석해보겠습니다.
문제의 목적은 다음 과 같습니다. 두 정수 A와 B를 입력받은 후 A+B를 출력하는 프로그램을 작성해야 합니다.
백준에서는 입력을 조건에 알맞게 스스로 넣어 테스트 합니다.
따라서 백준에게 제출 할 때 입력을 스스로 받을 수 있도록 해줘야 합니다. 여기서 입력 조건도 꼭 잘 보셔야 합니다.
현재 입력 조건은 (0< A , B <10) A는 음수전체이고, B는 10보다 작은 수 전체입니다. 이러한 조건들은 의미없어 보이지만 나중에 단계가 높아질 수록 결국 시간 초과라는 오류를 범하게 됩니다. 따라서 이러한 조건을 잘 읽고 코딩을 할 때 영향을 받는지 생각하셔야 합니다.
예제 입력에 보면 1 2 가 들어온다는 것을 알 수 있습니다.
따라서 1 2 를 A 와 B라는 변수에 받아야 합니다. 하지만 입력은 받는 다는 것은 input()을 받는 다는 것입니다. 하지만 input() 은 단 한번만 사용했지만, 두 개의 변수에 할당한 것을 알 수 있습니다. 앞으로 백준에서 자주 쓸 함수입니다. 바로 split() 함수 입니다. split() 은 어떤 기준으로 문자열을 나누어 전달하는 형식입니다. 따라서 먼저 input()을 받은 것을 공백을 기준으로 나누고 정수형으로 변환하여 A,B에 할당한 것을 알 수 있습니다.
이 때 map 형태도 제너레이터 형식으로 바로바로 정수형으로 변환해주는 형식임을 알 수 있습니다.
A,B = map(int,input().split())
print(A+B)
다른 사람들의 풀이는 같긴 때문에 옳지 않은 풀이를 한번 확인해보도록 하겠습니다.
다른 사람들의 풀이가 앞에서 말한 거 처럼 입력과 출력을 집접적으로 제한한다는 것을 확인할 수 있습니다. 이러면 입력을 넣지 못하기 때문에 아무리 해도 오답 밖에 나오지 않는 것을 알 수 있습니다. 이는 아직 map , split의 사용법이 익숙하지 않아 그렇습니다.
파이썬의 map과 split 함수는 데이터 처리 작업에서 자주 사용되는 강력한 도구입니다. 이 두 함수를 활용하면 복잡할 수 있는 문자열 입력과 숫자 변환 작업을 간단하고 효율적으로 처리할 수 있습니다. 이 글에서는 이러한 함수들의 사용법과 함께, 특히 map 함수의 반환 값인 이터레이터에 대한 깊이 있는 이해를 제공하고자 합니다.
split() 함수 소개
split() 함수는 문자열을 특정 구분자로 분리하여 리스트로 반환합니다. 기본적으로는 공백을 구분자로 사용하여 문자열을 분리합니다.
예제 코드:
text = "Hello World"
parts = text.split() # 공백 기준으로 분리
print(parts) # 출력: ['Hello', 'World']
map() 함수의 이해
map() 함수는 주어진 함수를 리스트 또는 다른 시퀀스의 각 요소에 적용하고, 결과를 맵 객체(이터레이터)로 반환합니다.
예제 코드:
numbers = ["1", "2", "3"]
numbers_int = map(int, numbers) # 문자열을 정수로 변환
print(list(numbers_int)) # 출력: [1, 2, 3]
split()과 map()의 조합
이 두 함수를 조합하면 사용자 입력을 쉽게 처리할 수 있습니다. 예를 들어, 사용자로부터 여러 숫자를 입력받아 정수 리스트로 변환하는 상황을 생각해 보겠습니다.
예제 코드:
input_string = input("숫자를 입력하세요 (공백으로 구분): ")
numbers = map(int, input_string.split())
print(list(numbers)) # 사용자의 입력을 정수 리스트로 변환하여 출력
map 객체의 특성과 주의사항
map 함수는 지연 계산을 사용하여 메모리 사용을 최적화합니다. 그러나 이 때문에, map 객체는 한 번만 사용할 수 있습니다. 요소를 재사용하려면 map 함수를 다시 호출하거나, 결과를 리스트 같은 구조에 저장해야 합니다.
지연 계산의 예:
numbers = map(int, ['1', '2', '3'])
total = sum(numbers)
print(total) # 출력: 6
split()과 map() 함수는 파이썬에서 입력 데이터를 처리할 때 매우 유용합니다. 이들을 이해하고 적절히 사용하면, 코드의 효율성과 가독성을 크게 향상시킬 수 있습니다. 하지만 map 객체의 지연 계산 특성을 잘 이해하고 사용해야만, 예기치 않은 버그를 방지하고 프로그램의 성능을 최적화할 수 있습니다.
'BaekJoon Reivew' 카테고리의 다른 글
단계별로 풀어보기 백준_10869번 (0) | 2025.02.01 |
---|---|
단계별로 풀어보기_백준 10998번 (0) | 2025.01.27 |
단계별로 풀어보기_백준 1001번 with Python (0) | 2025.01.24 |
단계별로 풀어보기_백준 1000번 < map 더 자세히 알기 > (2) | 2025.01.23 |
단계별로 풀어보기_백준 2557번 with Python (0) | 2025.01.22 |