일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- SQL 정리
- 엘라스틱서치
- 파이썬
- 오라클
- 문법
- 프로그래밍
- 위클리챌린지
- SQL 문법
- 코딩테스트
- 스프링부트
- c언어
- 스파크
- 문제풀이
- MySQL
- 모의해킹
- 해킹실습
- 토이프로젝트
- 프로그래머스
- 기초
- 데이터베이스
- 리눅스마스터 2급 2차
- 알고리즘
- 데이터프로그래밍
- 백준
- SQL
- 스프링
- 자바
- 이클립스
- 빅데이터
- 필기
- Today
- Total
개발일기
백준 1157번 파이썬 풀이 : 단어 공부 본문
문제 링크 : https://www.acmicpc.net/problem/1157
1157번: 단어 공부
알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다.
www.acmicpc.net
문제
알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다.
입력
첫째 줄에 알파벳 대소문자로 이루어진 단어가 주어진다. 주어지는 단어의 길이는 1,000,000을 넘지 않는다.
출력
첫째 줄에 이 단어에서 가장 많이 사용된 알파벳을 대문자로 출력한다. 단, 가장 많이 사용된 알파벳이 여러 개 존재하는 경우에는 ?를 출력한다.
해당 문제를 푸는 이유는 금일 진행했던 2021 Toss Next 코딩테스트에 출제된 문제 유형과 비슷한 유형이라 풀이를 올리며 다시한번 정리해 본다.
문제 풀이
# 소문자와 대문자의 관계없이 갯수를 세어야 하고 출력을 대문자로 하기 때문에 먼저
# 모든 문자열을 대문자로 바꿔준다.
# 후에 set과 list 를 사용하여 중복 제거하고 해당 단어의 갯수를 세어 count 배열에 저장한다.
1
2
|
word = input()
word = word.upper()
|
cs |
입력한 단어들을 대문자로 바꾸어 준다.
1
2
3
4
5
|
word_list = list(set(word))
count = []
for i in word_list:
count.append(word.count(i))
|
cs |
word_list 에 중복된 단어들을 모두 제거하고 count 해야하는 단어들만 남긴다.
word.count( 타겟 )을 입력할 경우 word 문자열에서 타겟에 해당하는 문자열의 갯수를 리턴한다.
1
2
3
4
5
6
|
index = count.index(max(count))
if count.count(max(count)) > 1:
print("?")
else:
print(word_list[index])
|
cs |
count 배열에서 최대 값을 가진 index를 index 변수에 저장한다.
만일 최대 값이 2개 이상이면 지문에 따라 "?"를 리턴하고, 아닐경우 미리 선언한 index를 출력한다.
위 문제와 비슷하게 Toss next 프로그래밍에 출제가 되었다.
쉽게 풀어 맞추긴 했지만 list 와 set을 적절하게 잘 사용을 할 줄 알아야 할 것 같다.
'알고리즘 문제풀이 > 백준' 카테고리의 다른 글
백준 1312번 파이썬 풀이 : 소수 (0) | 2021.08.19 |
---|---|
백준 11653번 파이썬 풀이 : 소인수 분해 (0) | 2021.08.18 |
백준 5622번 파이썬 풀이 : 다이얼 (7) | 2021.08.13 |
백준 2839번 파이썬 풀이 : 설탕 배달 (4) | 2021.08.11 |
백준 4344번 파이썬 풀이 : 평균은 넘겠지 (2) | 2021.08.11 |