코딩테스트/BOJ

[백준] 1157. 단어 공부

박소민 2023. 2. 16. 23:29
  • 내 풀이
    • 처음엔 시간초과
    • 오답이 된 부분: 개수가 같은 값이 나오면 break 해버렸는데
    • 이렇게 하면 뒤에 더 개수가 많은 문자를 확인하기도 전에 앞에 개수만 비교후 종료됨
st=input().upper()
st_copy=list(set(st))
result=""

for idx, s in enumerate(st_copy):
    if idx==0:
        cnt=st.count(s)
        result=s
        continue
    
    if(st.count(s)==cnt):
        print("?")
        break
    if cnt<st.count(s):
        cnt=st.count(s)
        result=s
else:
    print(result)

 

  • 시간초과 -> set()으로 중복제거한 값을 for문에 돌리면서 해결
  • 전체 개수 다 체크한 후에 가장 많이 나온 값 체크
st=input().upper()
st_copy=list(set(st))
cnt=[]
result=""

for s in st_copy:
    cnt.append(st.count(s))

if cnt.count(max(cnt))>1:
    print("?")
else:
    print(st_copy[cnt.index(max(cnt))])

'코딩테스트 > BOJ' 카테고리의 다른 글

[백준] [실버2] 1260. DFS와 BFS  (0) 2023.02.18
[백준] 2908.상수  (0) 2023.02.17
[백준][DFS][순열] 14888. 연산자 끼워넣기  (0) 2023.02.15
[백준 1978] 소수찾기  (0) 2023.02.11
[백준 1436] 영화감독 숌  (0) 2023.02.11