반응형
밑의 링크는 백준에서의 문제 링크입니다.
파이썬 코드와 결과입니다.
# readline을 사용하기 위해 import합니다.
from sys import stdin
# 소의 수 N, 코스튬의 크기 S를 공백으로 구분해 입력합니다.
# 정수형으로 변환해서 저장합니다.
# 2 <= N <= 20,000
# 1 <= S <= 1,000,000
N, S = map(int, stdin.readline().split(' '))
# 소들의 크기를 저장하는 리스트 변수를 선언합니다.
cattle_sizes = []
# 코스튬에 들어갈 수 있는 서로 다른 소의 사이즈 짝의 개수를 저장하는 변수를 선언합니다.
pair_cnt = 0
# 소의 수 N만큼 반복해봅니다.
for cow_index in range(N):
# 소 한 마리의 사이즈를 입력합니다.
# 1보다 크거나 같고, 1,000,000보다 작거나 같습니다.
cow_size = int(stdin.readline())
# 입력한 소 한 마리의 사이즈를 cattle_sizes에 넣어줍니다.
cattle_sizes.append(cow_size)
# 서로 다른 소들을 하나씩 뽑아봅니다.
for cow1 in range(N - 1):
for cow2 in range(cow1 + 1, N):
# 서로 다른 소들의 사이즈의 합이 코스튬의 크기보다 작거나 같다면
if cattle_sizes[cow1] + cattle_sizes[cow2] <= S:
# pair_cnt에 1을 더해줍니다.
pair_cnt += 1
# pair_cnt를 출력해줍니다.
print(pair_cnt)
중첩된 for문으로 코드를 짜서 제출해보기도 하고,
combinations를 사용해서 코드를 짜서 제출해봤는데 시간 초과나 메모리 초과가 떴습니다.
그래서 예전에 어떤 블로그에서 읽어봤던 글 중에 Python3로 제출하는 것보다 PyPy3로 제출할 때
더 빠른 실행 시간의 결과를 낼 수 있다는 내용이 있었습니다.
이번에 이중 for문으로 작성한 코드를 PyPy3로 제출해봤더니 다행히 맞았습니다 결과가 나왔습니다.
다음에 Python3와 PyPy3로 제출할 때 어떤 점이 다른지 조사해서 포스팅해봐야겠습니다.
※ 궁금한 부분, 이상한 점 및 오타는 댓글에 부탁드립니다.
※ 더 효율적이고 빠른 정답을 환영합니다.
반응형
댓글