문제
https://softeer.ai/practice/6289
해설
이 문제를 풀기 위해선 자신이 최고라고 생각하지 않게 되는 순간이 딱 한번이라도 있다면 그 사람을 최고가 아니라고 생각하도록 코드로 유도하면 된다.
즉 모두 자신이 최고라고 bool 형식을 통해 "True"로 초기화를 한 후, 비교를 하고, 만약 최고가 아니라고 생각하는 순간에 도달했을 때 그 사람을 "False"로 설정을 해주면 된다.
코드
import sys
# 회원수 N과 관계수 M을 받아들이기.
N,M = map(int, sys.stdin.readline().split())
# 각 회원마다 들 수 있는 중량 받아들이기.
weights = list(map(int, sys.stdin.readline().split()))
# 자신이 최고라고 생각하는 마음가짐 리스트 초기화.
b_best = [True]*N # 다들 최고라 생각하기에 모두 True로 설정.
# 마지막에 최고라고 생각하는 사람 수를 카운트 할 변수 생성
count = 0
# M개의 관계를 모두 확인한다.
for i in range(M):
# 관계 수 저장하고,
A, B = (map(int, sys.stdin.readline().split()))
# 만약 A가 B보다 더 많이 들 수 있다면
if weights[A-1] > weights[B-1]:
# B는 자신감 실취, 최고라고 생각 안하게 된다.
b_best[B-1] = False
# 만약 B가 A보다 더 많이 들 수 있다면
elif weights[B-1] > weights[A-1]:
# A는 자신감 실취, 최고라고 생각 안하게 된다.
b_best[A-1] = False
# A랑 B랑 드는 무게가 동일하다면
elif weights[A-1] == weights[B-1]:
# A와 B 모두 자신감 실취, 최고라고 생각 안하게 된다.
b_best[A-1] = False
b_best[B-1] = False
# 자신이 최고라고 생각하는 사람 수를 카운트한다.
for b in b_best:
if b == True:
count += 1
print(count)
결과
'알고리즘 > 소프티어' 카테고리의 다른 글
[파이썬] Softeer 연습문제 #8. 조립라인 완벽해설 (0) | 2023.12.10 |
---|---|
[파이썬] Softeer 연습문제 #7. 금고털이 완벽해설 (0) | 2023.12.09 |
[파이썬] Softeer 연습문제 #5. 강의실 배정 완벽해설 (1) | 2023.12.07 |
[파이썬] Softeer 연습문제 #4. 수퍼바이러스 (Lv. 3) 완벽해설 (1) | 2023.11.26 |
[파이썬] Softeer 연습문제 #3. 징검다리 (Lv. 3) 완벽해설 (1) | 2023.11.25 |