백준 9063번 바로가기
나의 풀이#
x = []
y = []
for _ in range(int(input())):
n, m = map(int, input().split())
x.append(n)
y.append(m)
print((max(x)-min(x)) * (max(y)-min(y)))
고수의 풀이#
*l,=map(int,open(0).read().split())
s=lambda i:max(i)-min(i)
print(s(l[1::2])*s(l[2::2]))
출처
CODE REVIEW#
- 예외를 따질 필요 없이, x값중 최대에서 최소를 빼고, y도 마찬가지로 빼서 서로 곱하면 되는 간단한 문제였다.
- x와 y 각각에 대해 list을 만들어서 해결했는데, 메모리를 더 줄이기 위해서는 하나의 리스트로도 해결 가능하다.
- 고수의 풀이를 보면 3번째 줄에
l[1::2]
l[2::2]
와 같은 표현을 볼 수 있는데 input을 int로 계속 불러와서 list에 저장하게 되면 x값은 1번 index부터 2간격으로, y값은 2번 index부터 2간격으로 등장한다.
lambda
을 애용하자. s=lambda i:max(i)-min(i)
로 지정하면 여러번 반복해서 작성할 필요 없이 함수처럼 불러올 수 있다.