문제
논리학 교수 양항승은 칠판에 다음과 같은 내용을 썼다.
정확하게 a개의 말은 참이다.
정확하게 b개의 말은 참이다.
정확하게 c개의 말은 참이다.
...
...
...
a, b, c는 정수이다. 그리고 나서 항승이는 칠판에 작성한 내용 중에 총 몇 개가 참인지 알아내는 사람은 A+을 받는다. 입력으로 항승이가 작성한 내용에 있는 정수가 주어진다. 예를 들면, "정확하게 i개의 말은 참이다" 에서 i가 입력으로 주어진다.
항승이가 칠판에 작성한 내용이 주어졌을 때, 총 몇 개의 내용이 참인지 구해보자.
입력
첫째 줄에 항승이가 한 말의 개수 N이 주어진다. N은 1보다 크거나 같고, 50보다 작거나 같은 자연수이다. 둘째 줄에 항승이가 칠판에 작성한 내용에 있는 정수가 주어진다. 이 정수는 50보다 작거나 같은 음이 아닌 정수이다.
출력
첫째 줄에 항승이가 칠판에 작성한 내용 중 몇 개가 참인지 출력한다. 만약 내용이 모순이라면 -1을 출력하고, 가능한 답이 여러가지라면 가장 큰 값을 출력한다.
코드
N = int(input())
case = list(map(int, input().split()))
case_true = -1
for i in case :
check = 0
for j in range(N) :
if i == case[j] :
check += 1
if check == i and i > case_true:
case_true = i
if case.count(0) == 0 and case_true == -1:
print(0)
else :
print(case_true)
풀이
" i개의 말이 참이다. " 가 참이기 위해서는 " i개의 말이 참이다. " 라는 말이 i 개 있으면 성립한다.
칠판에 작성된 내용을 case라는 배열에 저장하여 case의 N번째 요소의 값 i가 i개 있는지 확인한다. 그리고 조건에서 가능한 답 중 가장 큰 값을 출력하라 하였으므로, 참인 것 중 가장 큰 값을 case_true에 저장하여 출력하기로 했다.
칠판에 작성된 내용 중 0이 없고, 참인 경우가 하나도 없으면 0을 출력한다. 그 외, 0만 작성되어 있는 경우와 같은 모순인 경우는 -1을 출력하도록 했다.
'Koala - 14기 > 기초 알고리즘 스터디' 카테고리의 다른 글
[백준/Java] 1302번 : 베스트셀러 (0) | 2024.03.31 |
---|---|
[백준/Python] 3059번: 등장하지 않는 문자의 합 (0) | 2024.03.31 |
[백준/python3] 2745: 세 용액 (0) | 2024.03.31 |
[백준/Python]1764번 듣보잡 (0) | 2024.03.31 |
[백준/Python3] 14724번 관리자는 누구? (0) | 2024.03.31 |