본문 바로가기
코딩테스트

[백준] 1183 약속 - python

by CuckooBird 2023. 2. 8.

백준 실버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 🔍

후기

카테고리가 정렬이길래 왜 정렬이지 하면서 풀었는데 아 저 부분이었구나 싶은 문제