문제
승혁이는 괴짜 교수이다.
그는 미래에 컴퓨터 프로그램을 만들기 위해서는 컴퓨터 프로그램을 병렬로 만들어야 한다고 믿는다.
그가 옳다는 것을 확신시키기 위해서 그는 실험을 진행 하길 원했다.
실험과정은 다음과 같다:
그는 먼저 몇 개의 문제에 대해 이 프로그램이 다음 해 동안 실행 될 횟수를 예상한다.
그리고 그는 그의 조교에게 병렬버전의 프로그램을 개발하고, 그 프로그램을 개발하는 데 걸리는 시간을 측정하라고 지시한다.
마지막으로, 그들은 병렬버전과 직렬버전의 실행 시간을 측정한다.
이 측정된 데이터를 기반으로, 승혁이는 어떤 경우에 병렬화를 통해 전반적인 작업량을 최소화하는지 알고 싶어한다.
이 일에 대한 작업량은 병렬버전을 개발하는 시간과 그 프로그램이 실행될 때까지 기다리는 시간이다.
https://www.acmicpc.net/problem/11109
입력
첫째 줄에 입력으로 테스트케이스의 개수 T (T ≤ 1000)가 주어진다.
각각의 테스트케이스에 대해 정수 d, n, s, p가 한 칸의 공백을 사이로 주어진다.
d (0 ≤ d ≤ 1000000)는 병렬 버전을 개발하는데 걸리는 시간이다.
그리고 n (0 ≤ n ≤ 100000) 은 다음해 동안 이 프로그램이 실행되는 횟수이다.
s와 p (0 ≤ s, p ≤ 1000) 는 각각 직렬버전과 병렬버전의 실행 시간이다.
출력
각각의 테스트케이스에 대해 병렬화를 하는게 좋으면 "parallelize" 를 출력하고,
병렬화를 하는게 좋지 않으면 "do not parallelize" 를 출력한다.
만약 직렬화와 병렬화를 통한 시간이 같으면 "does not matter" 를 출력한다.
예제
# input
3
10 2 3 2
20 5 8 2
0 2 1 1
# output
do not parallelize
parallelize
does not matter
문제 풀이
import sys
input = sys.stdin.readline()
T = int(input())
for i in range(T):
d, n, s, p = map(int, input().split())
parallel_time = d + n * p
serial_time = n * s
if parallel_time < serial_time:
print('parallelize')
elif parallel_time > serial_time:
print('do not parallelize')
else:
print('does not matter')
파이썬을 독학하시는 분들에게 도움이 되길 바라며,
혹 더 좋은 방법이 있거나 오류가 있다면 편하게 말씀 부탁드립니다.
문제
승혁이는 괴짜 교수이다.
그는 미래에 컴퓨터 프로그램을 만들기 위해서는 컴퓨터 프로그램을 병렬로 만들어야 한다고 믿는다.
그가 옳다는 것을 확신시키기 위해서 그는 실험을 진행 하길 원했다.
실험과정은 다음과 같다:
그는 먼저 몇 개의 문제에 대해 이 프로그램이 다음 해 동안 실행 될 횟수를 예상한다.
그리고 그는 그의 조교에게 병렬버전의 프로그램을 개발하고, 그 프로그램을 개발하는 데 걸리는 시간을 측정하라고 지시한다.
마지막으로, 그들은 병렬버전과 직렬버전의 실행 시간을 측정한다.
이 측정된 데이터를 기반으로, 승혁이는 어떤 경우에 병렬화를 통해 전반적인 작업량을 최소화하는지 알고 싶어한다.
이 일에 대한 작업량은 병렬버전을 개발하는 시간과 그 프로그램이 실행될 때까지 기다리는 시간이다.
https://www.acmicpc.net/problem/11109
입력
첫째 줄에 입력으로 테스트케이스의 개수 T (T ≤ 1000)가 주어진다.
각각의 테스트케이스에 대해 정수 d, n, s, p가 한 칸의 공백을 사이로 주어진다.
d (0 ≤ d ≤ 1000000)는 병렬 버전을 개발하는데 걸리는 시간이다.
그리고 n (0 ≤ n ≤ 100000) 은 다음해 동안 이 프로그램이 실행되는 횟수이다.
s와 p (0 ≤ s, p ≤ 1000) 는 각각 직렬버전과 병렬버전의 실행 시간이다.
출력
각각의 테스트케이스에 대해 병렬화를 하는게 좋으면 "parallelize" 를 출력하고,
병렬화를 하는게 좋지 않으면 "do not parallelize" 를 출력한다.
만약 직렬화와 병렬화를 통한 시간이 같으면 "does not matter" 를 출력한다.
예제
# input 3 10 2 3 2 20 5 8 2 0 2 1 1 # output do not parallelize parallelize does not matter
문제 풀이
import sys input = sys.stdin.readline() T = int(input()) for i in range(T): d, n, s, p = map(int, input().split()) parallel_time = d + n * p serial_time = n * s if parallel_time < serial_time: print('parallelize') elif parallel_time > serial_time: print('do not parallelize') else: print('does not matter')
파이썬을 독학하시는 분들에게 도움이 되길 바라며,
혹 더 좋은 방법이 있거나 오류가 있다면 편하게 말씀 부탁드립니다.