츄르사려고 코딩하는 코집사입니다.
1. [백준 알고리즘] 백준 22993번 서든어택 3 파이썬(Python)
1) 문제번호 : 22993번
2) 문제 출처
https://www.acmicpc.net/problem/22993
2. 문제
지스타를 준비하기 시작한 작년 여름 이후 CBT와 런칭 준비를 한 오늘까지. 평일 저녁에 가족이 깨어 있는 것을 거의 본 적이 없다.
이제 본격적인 정식오픈을 이틀 앞 둔 오늘. 바람소리와 스산한 빗소리가 사무실 창밖을 때린다.
폭풍전야.
블라인드에서 서든3을 비웃던, 지금도 비웃는 이들에게 반박글을 달지 않았다.
니들이 허접한지, 우리가 허접한지는 결과가 말해줄 것이다.
넥슨의 게임 개발자 준원이는 서든어택 3의 출시를 앞두고 게임 테스트를 하고 있다.
맵에는 준원이를 포함해 N명의 플레이어가 있다. 준원이의 공격력은 A1이고, 나머지 사람들의 공격력은 A2,⋯,AN이다.
전투가 시작되면 누구나 누구든 공격할 수 있게 된다! 죽은 사람은 공격하거나 공격받지 못하고, 두 사람이 동시에 공격하는 일은 일어나지 않는다.
공격력이 X인 플레이어 A가 공격력이 Y인 플레이어 B를 공격하면,
- X>Y 이면, B가 죽고 A의 공격력은 X+Y가 된다.
- X<Y 이면, A가 죽고 B의 공격력은 X+Y가 된다.
- X=Y 이면, 아무 일도 일어나지 않는다.
드디어 전투가 시작되었다! 준원이는 최후의 생존자가 될 수 있을까?
3. 제약사항
4. 입력
첫째 줄에는 준원이를 포함한 플레이어의 수 N이 주어진다.
둘째 줄에는 각 플레이어의 공격력 A1,⋯,AN이 차례대로 공백을 사이에 두고 주어진다.
5. 출력
좋은 전투 순서가 존재해서 준원이만 생존하고 나머지 플레이어가 모두 죽게 만들 수 있다면 Yes를, 반대로 전투가 어떤 순서로 이루어져도 준원이가 절대 최후의 생존자가 될 수 없다면 No를 출력한다.
6. 풀이
- 각 플레이어의 공격력 리스트에서 맨 첫 번째는 준원이의 공격력이기 때문에 따로 저장하고 뺀다.
- 뺀 리스트를 오름차순으로 정렬하여 준원이 공격력이 높은 경우는 jun1에 진사람의 공격력을 더해주고, 준원이 공격력이 낮은 경우에는 No를 출력하고 바로 끝내버린다.
- 그래서, else문에 들어가지 않은 경우에는 Yes를 출력하게 한다.
7. 소스 코드
import sys
input=sys.stdin.readline
N = int(input()) # 준원이를 포함한 플레이어의 수
attack = list(map(int, input().split())) # 각 플레이어의 공격력
jun1 = attack.pop(0) # 준원이 공격력
attack.sort() # 오름차순 정렬
for i in attack :
if jun1 > i : #준원이 공격력이 높은 경우
jun1 += i
else : # 준원이 공격력이 낮은 경우
print("No")
exit(0)
print("Yes")
'알고리즘 > 백준 알고리즘' 카테고리의 다른 글
[백준 알고리즘] 백준 15921번 수찬은 마린보이야!! 자바(JAVA) (0) | 2021.09.06 |
---|---|
[백준 알고리즘] 백준 15963번 CASIO 자바(JAVA) (0) | 2021.09.05 |
[백준 알고리즘] 백준 11651번 좌표 정렬하기 2 파이썬(Python) (0) | 2021.09.02 |
[백준 알고리즘] 백준 10989번 수 정렬하기 3 파이썬(Python) (0) | 2021.09.01 |
[백준 알고리즘] 백준 22950번 이진수 나눗셈 파이썬(Python) (0) | 2021.08.29 |
[백준 알고리즘] 백준 11282번 한글 파이썬(Python) (0) | 2021.08.08 |
[백준 알고리즘] 백준 2010번 플러그 파이썬(Python) (0) | 2021.08.01 |
[백준 알고리즘] 백준 22113번 창영이와 버스 파이썬(Python) (0) | 2021.07.30 |
최근댓글