문제
소스 코드
input_num = input()
A = int(input_num[:1])
B = int(input_num[2:])
print(A + B)
풀이
두 개의 값을 입력받고 그것들을 더한 결과를 출력합니다.
풀이를 남기는 이유
이 문제는 매우 간단하게 풀 수 있는데 왜 풀이를 남기는지 의문이 들 수 있습니다.
포스팅을 하는 이유는 문제에 제시된 요구 사항과 조건을 명확히 파악하지 않은 것을 반성하기 위해서입니다.
이번 문제를 풀 때 '입력받은 두 개의 값을 더해서 출력하라'는 내용만 슬쩍 보고 바로 input()
함수를 두 번 쓰면 되겠다고 생각했습니다. 그리고 사용자에게 값을 입력받고 결과를 출력할 때 보여줄 메시지도 있으면 친절하고 좋을 것 같았습니다. 그래서 처음에 다음과 같이 코드를 작성했습니다.
A = int(input("A를 입력하세요: "))
B = int(input("B를 입력하세요: "))
print("A + B = %d" % (A + B))
임의의 값을 넣어서 테스트도 했고 가뿐하게 통과할 줄 알았습니다. 그런데 결과는 런타임 에러였습니다. 무슨 일인가 싶어서 문제를 찬찬히 다시 읽어보니 첫째 줄에 두 개의 값이 모두 입력된다는 것을 알게 됐습니다 😅
한 줄에 두 개의 값을 입력받은 뒤 변수 A와 B에 각각 값을 할당해주기 위해 슬라이스를 이용했습니다. 그리고 입력 값을 받을 때와 값을 출력할 때 불필요한 문구는 모두 제거했습니다. 이렇게 소스 코드를 고친 후에야 문제를 통과할 수 있었습니다.
이를 통해 앞으로는 문제를 풀 때 코드부터 작성하려고 하는 것이 아닌 문제가 요구하는 사항과 조건을 먼저 잘 파악하자는 다짐을 할 수 있었습니다.
또 다른 방법
저는 슬라이스를 이용해서 이번 문제를 풀었지만 input().split()
과 map()
을 사용해서 풀 수도 있습니다. input().split()
는 입력받은 여러 개의 값을 나눠서 각각 변수에 넣어줍니다.
아래와 같이 코드를 작성합니다.
A, B = input().split()
그리고 두 개의 값을 입력합니다.
>>> 5 8
A
에는 문자열 5
가, B
에는 문자열 8
이 저장됩니다.
A
와 B
에 값을 넣을 때 정수로 변환해서 넣으려면 map()
함수도 같이 써야 합니다. map(function, iterable)
함수의 첫 번째 매개변수로 각 요소에 적용할 함수을 넣으면 되고 두 번째 매개변수로 함수를 적용할 데이터 집합으로 반복 가능한 객체인 리스트와 튜플 등을 넣으면 됩니다.
여기서는 입력한 값을 모두 정수로 바꾸고 변수 A
, B
에 저장해야 하고 두 변수를 더한 값을 결과로 출력하면 됩니다.
A, B = map(int, input().split())
print(A + B)
'백준' 카테고리의 다른 글
백준 문제 풀이 - 11654번 아스키 코드 (0) | 2024.03.28 |
---|