본문 바로가기

STUDY/Python

[Softeer] GBC python

728x90

[첫번째 풀이 - 테케만 맞음..]

import sys

n, m = map(int, sys.stdin.readline().split())

limit_length = []
limit_speed = []
for _ in range(n):
    limit_num = sys.stdin.readline()
    limit_num = limit_num.replace('\n','')
    a, b = map(int, limit_num.split())
    limit_length.append(a)
    limit_speed.append(b)

test_length = []
test_speed = []
for _ in range(m):
    test_num = sys.stdin.readline()
    test_num = test_num.replace('\n','')
    a, b = map(int, test_num.split())
    test_length.append(a)
    test_speed.append(b)

limit_answer = []
answer = 0
for i in range(m):
    re_length = limit_length[i] - test_length[i] 
    re_speed = limit_speed[i] - test_speed[i] 
    if re_length<0 or re_speed<0:
        if re_length < 0:
            answer += re_length
        if re_speed < 0:
            answer += re_speed
        limit_answer.append(abs(answer))
        answer = 0
    else:
        continue

if len(limit_answer)==0:
    print(0)
else:
    print(max(limit_answer))

테스트 케이스의 답은 다 맞다.

근데 오답이 뜬다.. 이유가 뭘까??

 

[두번째 답안 - 테케만 맞음]

import sys

n, m = map(int, sys.stdin.readline().split())

limit_list = [list(map(int, sys.stdin.readline().split())) for _ in range(n)]
test_list = [list(map(int, sys.stdin.readline().split())) for _ in range(m)]

answer = []
for i in range(m):
    diff_length = test_list[i][0] - limit_list[i][0] 
    diff_speed = test_list[i][1] - limit_list[i][1] 
    
    if diff_length>0 and diff_speed>0:
        diff =diff_length+diff_speed
        answer.append(diff)
    elif diff_length>0 and diff_speed<=0:
        answer.append(diff_length)
    elif diff_speed>0 and diff_length<=0:
        answer.append(diff_speed)

if len(answer)==0:
    print(0)
else:
    re = max(answer)
    if re!=0:
        print(re)    
    else:
        print(0)

이 코드도 테스트케이스만 맞음...

 

[다른 사람 코드 - 정답 코드]

n, m = map(int, input().split())

section_limit = [list(map(int, input().split())) for _ in range(n)]

section_test = [list(map(int, input().split())) for _ in range(m)]

speed_limit = []
for l, s in section_limit:
    speed_limit = speed_limit + [s for _ in range(l)]

speed_test = []
for l, s in section_test:
    speed_test =  speed_test + [s for _ in range(l)]
 
result = max([speed_test[i] - speed_limit[i] for i in range(100)])

print(result if result >= 0 else 0)
728x90