BOJ/Python

백준 1157번 단어 공부 파이썬

띵지니어 2021. 8. 6. 17:26
반응형

https://www.acmicpc.net/problem/1157

 

1157번: 단어 공부

알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다.

www.acmicpc.net

X = input().upper()
Y = list(set(X))    # 중복 되는 단어 합치기
X_count = []        # 몇번 중복 됬는지 Y에 같은 인덱스 자리에 입력

for i in Y:
    count = X.count(i)
    X_count.append(count)
    
if X_count.count(max(X_count)) > 1: # 중복된게 2개 이상이면 ?
    print('?')
else:
    maxid = X_count.index(max(X_count)) # 아니면 그 숫자에 대응하는 문자 출력
    print(Y[maxid])

입력받을 때 입력한 문자열을 대문자로 받았다.

세트로 병합하고 인덱스를 사용하기 위해 다시 리스트로 바꿔 주었다.

세트는 순서가 없어서 인덱싱을 활용할 때는 항상 리스트로 바꿔 줘야 한다.

중복된 문자를 for 문으로 돌려 각 자리마다 몇 개 중복되어 있는지 새로운 리스트를 만들어주었다.

이후에 같은 문자가 2개 이상이면 '?'를 출력하고 아니면 인덱싱을 이용해서 그 위치에 대응하는 문자를 출력하는 코드를 짰다.

세트를 사용 했던 비슷한 문제이니 참고 하자.

https://thingjin.tistory.com/entry/%EB%B0%B1%EC%A4%80-1159%EB%B2%88-%EB%86%8D%EA%B5%AC-%EA%B2%BD%EA%B8%B0-%ED%8C%8C%EC%9D%B4%EC%8D%AC

 

백준 1159번 농구 경기 파이썬

라이브러리로 이용하면 간단한 코딩으로도 나타 낼 수 있다. 하지만 아직 덜 배웠기 때문에 지금 까지 배운 리스트 , 세트 정도로 코딩을 해봤다. list1 = [] list2 = [] n = int(input()) for i in range(n): li..

thingjin.tistory.com

 

반응형
목차(index)