본문 바로가기

Python(알고리즘,문제풀이)/BOJ (Bronze IV)

백준 28074번 / 모비스 - 파이썬

728x90

📚문제

 

📝풀이

# 28074 모비스
word = input()
if 'M' and 'O' and 'B' and 'I' and 'S' in word:
    print('YES')
else:
    print('NO')

처음에 나도 위 코드처럼 풀었다가 게시판을 한 번 확인해봤다(나와 같은 풀이가 분명 있을 것 같아서)

역시 비슷한 코드가 있었고 친절하고 이해가 잘 되게 답변해주신 글이 있어서 가져와봤다

 

 

# 28074 모비스
word = input()
word = list(word)
if 'M' in word and 'O' in word and 'B' in word and 'I' in word and 'S' in word:
    print('YES')
else:
    print('NO')

그래서 이렇게 하나하나 word에 넣어보는 방식을 생각해봤는데

너무 주먹구구식이고 Pythonic하지가 않은 것 같아서 

다른 방법을 생각해보기로했다

(비교해야될 단어가 MOBIS가 아니라 100글자,1000글자라면..?을 생각해보자)

 

# 28074 모비스
word = input()
result = ''
for idx,k in enumerate(word):
    if k in 'MOBIS':
        result += k
if len(set(result))==5:
    print('YES')
    
else:
    print('NO')

그래서 생각한 풀이

word의 단어가 MOBIS에 속한다면 result로 추가 될 것이다 (몇개가 가도 상관없다)

그 다음 set()을 해준다면 중복되는 M,O,B,I,S 는 다 사라지고 1개씩만 남을것이다(순서는 상관없다)

그 다음 남은 값의 길이가 5(MOBIS의 길이)와 같다면 정답(MOBIS를 제외한 알파벳은 result에 들어올 수 없음)

 

728x90