티스토리 뷰

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

 

1157번: 단어 공부

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

www.acmicpc.net

 

 

 

 

👩‍💻처음 짰던 코드 : 시간초과☠️

s = input().upper()

res = [0 for _ in range(len(s))]
for i in range(0, len(s)):
    res[i] = s.count(s[i])

if(list(set(res)).count(max(res)) >1):
    print("?")

else:
    print(s[str(res).find(str(max(res)))])

 

 

s = input().upper()
# 대소문자를 구분하지 않기 때문에 입력받은 문자열을 대문자 처리해줌
 

 

 

res = [0 for _ in range(len(s))]
# 문자열의 길이와 같은 크기의 리스트(res)을 만들어 준 후, 0으로 채움

 

 

for i in range(0, len(s)):
    res[i] = s.count(s[i])
# 리스트 각 자리에 문자열에서 각 알파벳의 개수를 넣어줌

 

 

 

if(list(set(res)).count(max(res)) >1):
    print("?")
# 가장 많이 있는 알파벳이 2개 이상이면 "?" 출력
else:
    print(s[str(res).find(str(max(res)))])
# 가장 많이 등장하는 알파벳 출력
# find함수로 가장 높은 숫자의 위치의 -> 알파벳 값 출력

 

시간초과가 났다..

 

 

 

👩‍💻다시 짠 코드 : 성공🌈

sen = str(input().upper())
freq = []
for char in set(sen):
    count = sen.count(char)
    freq.append([count, char])
freq.sort(reverse = True)
if(len(freq)>1 and freq[0][0] == freq[1][0]):
    print("?")
else:
    print(freq[0][1])

 

 

sen = str(input().upper())
freq = []
for char in set(sen):
    count = sen.count(char)
    freq.append([count, char])
# freq 리스트에 [알파벳 개수, 알파벳] 추가
freq.sort(reverse = True)
# 내림차순으로 정렬

 

 

if (len(freq)>1 and freq[0][0] == freq[1][0]):
    print("?")
# 내림차순으로 정렬 되었을 때, 첫번 째 알파벳의 개수와 두 번째 알파벳의 개수가 같다면 "?"출력
else:
    print(freq[0][1])

 

 

Point

list에 append 시 list도 추가 가능!

 

 

🚀결과🚀

댓글
최근에 올라온 글
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Total
Today
Yesterday