백준 실버3 1183 약속 - python
https://www.acmicpc.net/problem/1183
1183번: 약속
마법사 N명이 머글 문화를 이해하기 위해 머글과 약속을 잡았다. 각 마법사는 한 명의 머글을 만날 예정이다. 하지만, 마법사는 약속 시간보다 빨리 또는 늦게 도착할 수 있기 때문에 고민에 빠
www.acmicpc.net
코드
맞았습니다가 뜬 코드입니다. - 메모리 31256KB | 시간 44ms | 코드 길이 289B
import sys
N = int(sys.stdin.readline().rstrip())
time = list()
for _ in range(N):
a, b = map(int, sys.stdin.readline().rstrip().split())
t = a - b
time.append(t)
time.sort()
if N % 2 == 0:
start = N // 2 - 1
print(time[start + 1] - time[start] + 1)
else:
print(1)
다음 그림과 같이 더하는 식의 개수가 홀수일 때는 1개가 나오고, 짝수일때는 중간 두개의 값을 포함한 사이에 위치한 값들이 최소가 된다는 규칙을 이용하여 풀이했습니다.
Try 1.
틀렸습니다가 뜬 코드입니다. - 코드 길이 645B
import sys
N = int(sys.stdin.readline().rstrip())
time = list() # a-b 모음
timeSum = 0 # a-b 총 합계 (절댓값 그래프의 x절편 알기위함)
slope = 0 # 기울기
for _ in range(N):
a, b = map(int, sys.stdin.readline().rstrip().split())
t = a - b
time.append(t)
if t > 0:
slope += 1
timeSum += t
elif t < 0:
slope -= 1
timeSum += -t
Tmax = max(time) # T의 최댓값
Tmin = min(time) # T의 최솟값
if slope == 0:
print(Tmax-Tmin+1)
else:
xIntercept = timeSum / slope
if Tmin <= xIntercept and xIntercept <= Tmax:
print(Tmax-Tmin+1)
else:
print(1)
- 그래프를 잘못그리고 있었습니다.
- 최소 최대값을 그래프 가운데가 아니라 맨끝과 맨앞을 넣었습니다.
- 규칙을 찾지 못했습니다.
Search 🔍
- 찾아본 코드 : https://v3.leedo.me/devs/58
후기
카테고리가 정렬이길래 왜 정렬이지 하면서 풀었는데 아 저 부분이었구나 싶은 문제
'코딩테스트' 카테고리의 다른 글
[백준] 5911 선물 - Python (2) | 2023.02.09 |
---|---|
[백준] 26267 은?행 털!자 1 - python (3) | 2023.02.08 |
[백준] 2606 바이러스 - python (2) | 2023.02.07 |
[백준] 9375 패션왕 신해빈 - python (1) | 2023.02.06 |
[백준] 3077 임진왜란 - python (2) | 2023.02.06 |