카테고리 없음

백준 1157번 파이썬

abccoco 2022. 7. 18. 21:42

문제: 단어 공부

 


이번 문제를 풀기 위해 알아야 할 함수들

"lower()는 문자열의 모든 문자를 소문자로 바꾼다. 예를 들어 “Ups AND Downs”.lower()는 ‘ups and downs’로 계산된다."
"upper()는 문자열의 모든 문자를 대문자로 바꾼다. 예를 들어 “Ups AND Downs”.upper()는 ‘UPS AND DOWNS’로 계산된다."
"set()s는 집합 함수이다. 중복을 허용하지 않는다. 순서가 없다."
"max()은 인수로 받은 자료형 내에서 최대값을 찾아서 반환하는 함수 입니다."

전체 코드

# 대문자로 바꾼다.
alphabet = input().upper()
# 중복값을 없애고 list에 넣는다
alphabet_list = list(set(alphabet))

cnt = []
for i in alphabet_list:
    cnt.append(alphabet.count(i))

# 가장 많이 사용된 알파벳이 여러 개 존재하는 경우.
if cnt.count(max(cnt)) > 1:
    print("?")
# 해당 index 위치의 알파벳을 출력한다.
else:
    print(alphabet_list[(cnt.index(max(cnt)))])

 

문제 풀이

문제를 풀기 위해서 첫 번째로는 문제 풀이 조건을 맞추기 위해 알파벳을 대문자로 바꾸어 준다.

alphabet = input().upper()

 

다음으로는 중복 값을 없앤 알파벳 리스트와, 비어있는 리스트를 만들어 주자.

이유는 풀어가며 더 자세히 알아보겠다.

alphabet_list = list(set(alphabet))

cnt = []

 

alphabet_list 를(중복 값을 없애준 리스트) for문을 사용해 i 라는 변수 안에 넣는다.

그 다음 cnt 안에(비어있는 리스트) alphabet 의(입력 받은 알파벳) 알파벳 즉 i 가 몇게 있는지 count() 해준다.

* 이 작업은 alphabet 의 안에 중복된 알파벳의 숫자를 세기 위해 한다.

for i in alphabet_list:
    cnt.append(alphabet.count(i))

 

마지막으로 조건문을 사용해 조건에 맞추어 출력한다.

# 가장 많이 사용된 알파벳이 여러 개 존재하는 경우.
if cnt.count(max(cnt)) > 1:
    print("?")
# 해당 index 위치의 알파벳을 출력한다.
else:
    print(alphabet_list[(cnt.index(max(cnt)))])