반응형

@notepad_jj2

츄르사려고 코딩하는 코집사입니다.


1. [백준 알고리즘] 백준 4299번 AFC 윔블던 파이썬(Python)

1) 문제번호 : 4299번

 

2) 문제 출처

https://www.acmicpc.net/problem/4299

 

4299번: AFC 윔블던

원섭이는 잉글랜드 4부리그 풋볼 리그 2에서 활약하는 AFC 윔블던을 좋아한다. 이 팀은 2002년 윔블던 FC가 밀턴 킨스로 연고 이전을 감행하자 윔블던의 서포터들이 스스로 나서 창단한 팀이다. 윔

www.acmicpc.net

 

2. 문제

원섭이는 잉글랜드 4부리그 풋볼 리그 2에서 활약하는 AFC 윔블던을 좋아한다. 이 팀은 2002년 윔블던 FC가 밀턴 킨스로 연고 이전을 감행하자 윔블던의 서포터들이 스스로 나서 창단한 팀이다. 윔블던 FC는 1988년에 당시 최고의 팀인 리버풀을 꺾고 FA컵을 우승하면서 엄청난 활약을 했었다. 하지만 1989년 4월 15일 축구역사상 최대 비극적인 사건 중 하나인 힐스보로 참사가 발생하였고, 1990년 1월 테일러 리포트가 발표되었다. 1991년, 상위권 리그 팀은 반드시 홈 경기장을 좌석제로 바꿔야 한다는 테일러 리포트의 내용에 따라 윔블던은 홈 구장이었던 플로 레인을 떠나게 되었다. 이때부터 10년동안 임시로 근처 클럽이었던 크리스털 팰리스와 경기장을 공유하기 시작했고 점점 재정적인 어려움을 겪었다. 결국 2002년 윔블던에서 약 90km정도 떨어진 밀턴 킨스로 연고지를 이전하는 초유의 사태가 벌어졌으며, 2004년 윔블던 FC는 파산하게 된다. 윙클만은 클럽을 산 뒤, 7월 클럽의 이름을 밀턴 킨스 돈스 FC(이하 MK 돈스)로 바꾼다.

한국에서 이 소식을 들은 원섭이는 엄청난 분노했고, 어서 빨리 MK 돈스를 경기장에서 이기는 모습을 보고싶어했다.

하지만, MK 돈스는 2004년 3부리그에 참가했지만, 그 때 AFC 윔블던은 8부리그에 참가하고 있었다. 두 팀이 공식 경기에서 만나려면 FA Cup밖에 기회가 없었다. 하지만, FA Cup은 하부 리그 팀은 낮은 라운드부터 대회에 참가하고, 대진은 추첨이므로 두 팀이 만나는 것은 불가능하다 생각했다.

AFC 윔블던은 2002년 클럽의 역사를 9부리그에서 시작했지만, 2004년 8부리그, 2005년 7부리그, 2008년 6부리그, 2009년 5부리그로 점점 승격하였다. 그리고 2011년, 창단 9년만에 AFC 윔블던은 4부리그(리그2)에 승격하였다.

MK 돈스는 2004년부터 2시즌(06-07, 07-08)을 제외하고는 항상 3부리그에서 활동했다. 이제 MK 돈스가 강등당하거나 AFC 윔블던이 승격을 하면 리그에서 두 팀간의 경기를 볼 수 있다.

2012년 12월 2일. 불가능할 것 같았던 사건이 일어났다. 2012-13 FA Cup 2라운드 에서 두 팀이 맞붙게 된 것이었다. 어서 빨리 이 경기를 보고 싶었던 원섭이는 FA Cup을 중계해주는 SBS ESPN의 편성표를 검색해보았다. 하지만, 두 팀간의 경기는 한국인에게 별로 관심을 끌지 못하는 경기였기 때문에, 중계가 예정되어 있지 않았다.

원섭이는 잉글랜드에 거주하는 지수에게 경기 결과를 물어봤다. 지수는 축구에는 큰 관심이 없지만 원섭이를 괴롭히는 것을 좋아하는 친구다. 지수는 두 팀의 최종 점수를 알려주는 대신, 두 팀이 득점한 점수의 합과 차를 알려주었다.

MK 돈스와 AFC 윔블던의 점수의 합과 차가 주어졌을 때, 최종 점수를 구하는 프로그램을 작성하시오.

참고로 우리나라도 비슷한 경우가 있다. 2007년 부천 SK의 제주 연고지 이전을 반대하던 서포터들은 부천FC 1995를 창단했다. 이 팀은 2013년부터 K리그에 참가한다. 또, AFC 윔블던과 자매 결연 관계를 맺고 있다.

 

3. 제약사항


4. 입력

첫째 줄에 두 팀 점수의 합과 차가 빈 칸으로 구분되어 주어진다. 축구 점수는 항상 음이 아닌 정수이고, 합과 차는 1000보다 작거나 같은 음이 아닌 정수이다.

 

5. 출력

첫째 줄에 두 팀의 경기 결과를 출력한다. 득점을 많이 한 쪽을 먼저 출력한다. 만약, 그러한 합과 차를 갖는 경기 결과가 없다면, -1을 출력한다.

 

6. 풀이

- 단순한 사칙연산 문제이다.

- 음수 조건을 적지 못해서 계속 틀렸다.

- 두 수의 합은 P, 두 수의 차는 M이라고 두면, P = p+q, M = p-q가 된다.

- 그래서, p+q 한 값에 2로 나누면 하나의 수가 되고, 합에서 p값을 빼면 나머지의 한 수가 된다.

7. 소스 코드

import sys
input=sys.stdin.readline

# 합 P, 차 M 입력
P, M = map(int, input().split())

if P-M<0 or (P-M)%2!=0 :
    print(-1)

else :
    p = (P+M) // 2
    q = (P-p)

    print(max(p,q), min(p,q))

 

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기