새벽_나그네
12시 지난 새벽
새벽_나그네
전체 방문자
오늘
어제
  • 분류 전체보기
    • TIL
    • DevLog
    • Algorithm
    • ComputerScience
    • etc

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 프로그래머스
  • TodayILearned
  • 스파르타코딩클럽
  • 코딩
  • portfolio
  • Selenium 4
  • 개발일지
  • 코린이
  • 내일배움캠프
  • 코딩프로젝트
  • 국비지원
  • til
  • machine learning
  • 내일배움단
  • Python
  • AI트랙
  • Github
  • 내일배움카드
  • 자기주도학습
  • docker

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
새벽_나그네

12시 지난 새벽

Algorithm

[백준_1157] 단어 공부

2022. 4. 21. 03:39

문제 보기: 1157번: 단어 공부 (acmicpc.net)

 

1157번: 단어 공부

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

www.acmicpc.net

문제

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

 

입력

첫째 줄에 알파벳 대소문자로 이루어진 단어가 주어진다. 주어지는 단어의 길이는 1,000,000을 넘지 않는다.

출력

첫째 줄에 이 단어에서 가장 많이 사용된 알파벳을 대문자로 출력한다. 단, 가장 많이 사용된 알파벳이 여러 개 존재하는 경우에는 ?를 출력한다.

 

새로 사용한 함수

A = input().upper()

.upper() 를 사용하였으며 해당 함수를 사용하면 text 형태의 문자를 대문자로 바꿔주는 기능을 한다.

 

풀이 과정

1. 입력값을 딕셔너리 형태로 저장한다.

2. 딕셔너리로 저장된 값의 value 값을 비교해본다.

 

코드

1번 코드

sentence = input().upper()

alphabet_array = {'A': 0, 'B': 0, 'C': 0, 'D': 0, 'E': 0, 'F': 0, 'G': 0,
                  'H': 0, 'I': 0, 'J': 0, 'K': 0, 'L': 0, 'M': 0, 'N': 0, 'O': 0,
                  'P': 0, 'Q': 0, 'R': 0, 'S': 0, 'T': 0, 'U': 0, 'V': 0, 'W': 0, 'X': 0, 'Y': 0, 'Z': 0}

for i in sentence:
    alphabet_array[i] += 1



for j in alphabet_array:
    if j == 'A':
        max_alphabet = 'A'
    elif alphabet_array[j] != 0:
        if alphabet_array[max_alphabet] == alphabet_array[j]:
            print("?")
            break
        elif alphabet_array[max_alphabet] < alphabet_array[j]:
            max_alphabet = j
    if j == 'Z':
        print(max_alphabet)

 1번 코드는 동작을 잘하는데 백준 채점에서 계속 fail이되서 사용하지 못했다.

 

2번 코드

sentence = input().upper()
alphabet_array = dict()

for i in sentence:
    if i in alphabet_array:
        alphabet_array[i] += 1
    else:
        alphabet_array[i] = 1

big_num = 0
big_word = 0

for alpha in alphabet_array:
    if alphabet_array[alpha] > big_num:
        big_num = alphabet_array[alpha]
        big_word = alpha
    elif alphabet_array[alpha] == big_num:
        big_word = '?'
print(big_word.upper())

1번과 거의 비슷한 구조지만 어떤 알파벳이 들어오는지는 모르는 상황에 기반을 둔 코드

저작자표시 비영리 변경금지 (새창열림)

'Algorithm' 카테고리의 다른 글

[백준_1316] 그룹 단어 체커  (0) 2022.04.21
[백준_2941] 크로아티아 알파벳  (0) 2022.04.21
[백준_10430] 나머지  (0) 2022.04.20
[백준_4673] 셀프 넘버  (0) 2022.04.20
[백준_4344] 평균은 넘겠지  (0) 2022.04.20
    'Algorithm' 카테고리의 다른 글
    • [백준_1316] 그룹 단어 체커
    • [백준_2941] 크로아티아 알파벳
    • [백준_10430] 나머지
    • [백준_4673] 셀프 넘버
    새벽_나그네
    새벽_나그네
    IT, 프로그래밍, 정보, 스마트스토어

    티스토리툴바