Eat the ENAK
BOJ1000 - A+B 본문
문제 바로가기
Solved.ac* 난이도
* Solved.ac는 백준 온라인 저지의 문제들에 난이도를 매겨주는 서비스입니다. 자세한 내용은 홈페이지를 참고해주세요.
본문
해설
https://github.com/return0927/CodingWrite-UP/blob/master/BOJ/1000/
아주 간단한 입출력 문제이다. 띄어쓰기로 구분된 두 정수를 받아 두 정수의 합을 출력한다.
Python 풀이
print(sum([int(x) for x in input().split(" ")]))
list comprehension을 이용하면 위와 같이 한 줄로 표현할 수 있다. 띄어쓰기로 구분된 숫자들을 정수로 변환해준 후에 sum연산으로 더해준다.
하지만 더 간단히 나타내면 다음과 같다.
print(sum(map(int,input().split())))
list comprehension을 map함수로 변환한 것이며, 36B짜리 코드이다. 깊게 생각해봤는데 이 이상으로 숏코딩을 할 수 없었으나, 더 간단히 나타낼 수 있다.
print(eval('+'.join(input())))
마지막 코드가 알려진 가장 짧은 Python3 풀이다. 첨언하자면 마지막 풀이는 두 정수 중 하나라도 10 이상이 되면 정상적인 합을 출력해주지 않는다. str.join(iterable) 함수는 iterable 사이사이에 str를 끼워주는데,
>>> '+'.join(input())
1 2
1+ +2
>>> '+'.join(input())
12 3
1+2+ +3
처럼 되기 때문에 모든 자릿수의 합이 되어버린다.
C++(C) 풀이
#include <cstdio>
int main() {
int a, b;
scanf("%d %d", &a, &b);
printf("%d", a+b);
return 0;
}
scanf는 bof 취약점 때문에 scanf_s를 대신 사용하도록 추천되고 있다만, 문제풀이에 그럴리가 없으니 그냥 썼다. 다만 첫줄만 바꿔주면 Pure C에서도 동일하게 해결할 수 있는데, Pure C++로 풀면 아래와 같다.
C++17풀이
#include <iostream>
using namespace std;
int main() {
int a, b;
cin >> a >> b;
cout << a + b;
return 0;
}
'PS: Problem Solving > BOJ: 백준온라인저지' 카테고리의 다른 글
BOJ1001 - A-B (1) | 2019.10.31 |
---|---|
BOJ7568 - 덩치 (0) | 2019.10.30 |
BOJ1436 - 영화감독 숌 (0) | 2019.10.30 |
BOJ2750 - 수 정렬하기 (0) | 2019.10.30 |
BOJ2231 - 분해합 (0) | 2019.10.29 |
Comments