[1157] 단어공부

Sarah·2021년 11월 15일
0

BaekJoon

목록 보기
3/8

문제

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

코드


### 런타임 에러 코드 = indexError
string = input()
alpa = {}

for i in string:
    temp = ord(i)
    # 대문자를 소문자 숫자로 저장하기
    if temp > 90:
        temp = ord(i)-32
    # 반복횟수 저장
    if temp in alpa:
        alpa[temp] += 1
    else:
        alpa[temp] = 1

values = list(alpa.values())
values.sort()

# 맥스값이 동일한 글자가 2개이상이면
if values[-1] == values[-2]:
    print('?')
else:
    # key와 value 자리 바꾸기
    reverse_alpa = {v:k for k, v in alpa.items()}
    # 대문자로 출력
    print(chr(reverse_alpa[values[-1]]))

통과 코드


string = input()
alpa = {}

for i in string:
    temp = ord(i)
    # 대문자를 소문자 숫자로 저장하기
    if temp > 90:
        temp = ord(i)-32
    # 반복횟수 저장
    if chr(temp) in alpa:
        alpa[chr(temp)] += 1
    else:
        alpa[chr(temp)] = 1

# 최대 반복인 값 찾기위해 오름차순 정렬
values = list(alpa.values())
values.sort()

# # 맥스값이 동일한 글자가 2개이상이면
if len(values) > 1 and values[-1] == values[-2]:
    print('?')
else:
    # key와 value 자리 바꾸기
    reverse_alpa = {v:k for k, v in alpa.items()}
    # 대문자로 출력
    print(reverse_alpa[values[-1]])

TIL

  • 문자열이 한개짜리의 경우를 고려하지 못하였다.

-> if len(values) > 1 를 넣어서 통과!

  • 딕셔너리 key와 val값 뒤집어서 저장

->reverse_alpa = {v:k for k, v in alpa.items()}

-> val값으로 key를 자주 조회할 때,
차라리 뒤집어서 key값으로 구하는 것이 좋다는 글을 봄!

단, 중복 key는 안된다는 것을 명심!!'
  • 대문자와 소문자의 아스키코드 수 차이는 '32'
profile
2021.06 ~

0개의 댓글

관련 채용 정보