Notice
Recent Posts
Recent Comments
Link
jyamethyst21 님의 블로그
백준 30403번- '무지개 만들기' (PYTHON 풀이) 본문
문제:

ROYGBIV가 소문자나 대문자로 작성될 경우 무지개를 그릴 수 있기 때문에 소문자인지, 대문자인지, 둘이 섞여있는지를 판별하는 문제이다. 설명이 잘 나와있어 이해하는데 어렵지 않았다.
풀이:
N = int(input())
ans = set(input())
low = set(['r','o','y','g','b','i','v'])
up = set(['R','O','Y','G','B','I','V'])
if len(low & ans) == len(low) and len(up & ans) == len(up):
print('YeS')
elif len(up & ans) == len(up):
print('YES')
elif len(low & ans) == len(low):
print('yes')
else:
print('NO!')
우선 값을 입력받고, 소문자를 담은 집합, 대문자를 담은 집합을 만들어준다. 여기서 집합을 사용하는 이유는 교집합으로 포함관계를 쉽게 확인할 수 있고 중복을 없애주니까 길이로만 해당 문제를 쉽게 풀 수 있기 때문이다.
그래서 소문자를 집합으로 만든 다음 그 값이랑 입력값 집합의 길이를 비교해서 소문자 집합과 일치하면 모든 수가 포함되어 있다는 것이므로 해당하는 값들을 출력해준다. (대문자나 소문자+대문자 조합도 마찬가지로 작성해준다.)
다만 조건식을 작성할 때 주의할 점은, 'YeS'를 만드는 조건식이 더 까다롭기 때문에 제일 우선해야한다는 점이다. 만약 elif로 낮은 우선순위로 놓는다면 다른 조건식이 우선해서 일치하기 때문에 해당 조건식은 실행되지 않는다. 이 점만 유의하고 집합을 잘 활용한다면 쉽게 풀 수 있다.
'CODING 💻' 카테고리의 다른 글
| 백준 2010번- '플러그' (PYTHON 풀이) (0) | 2025.12.22 |
|---|---|
| 백준 5565번- '영수증' (PYTHON 풀이) (0) | 2025.12.21 |
| 백준 10866번- '덱' (PYTHON 풀이) (0) | 2025.12.19 |
| 백준 10866번- '덱' (PYTHON 풀이) (0) | 2025.12.18 |
| 백준 11047번- '동전 0' (PYTHON 풀이) (0) | 2025.12.17 |
