1) 사이트
2) 문제
요약하자면 소문자 대문자 상관 없이 가장 많은 갯수를 가진 알파벳을 대문자로 출력하는 것이다.
3) 파이썬 코드
sentence=input()
number=[0]*26
list(sentence)
same=0
max_index=0
for a in sentence:
index=ord(a.upper())-65
number[index]=number[index]+1
index=0
for b in number:
if b<number[max_index]:
index=index+1
continue
elif b>number[max_index]:
max_index=index
same=1
elif b==number[max_index]:
max_index=index
same=same+1
index=index+1
if same>1:
print("?")
else:
print(chr(max_index+65))
3-1) 선수 지식
파이썬 코드를 이해하기 위해 알아야 할 선수 지식이 있습니다.
1. 문자열을 리스트로 바꾸는 법
-> list(문자열)
2. 문자열 초기화 시키는 법
-> list 변수명 = [리스트를 채울 무언가]*몇개
3. 아스키코드
a는 97, A는 65이다.(b는 98 ....)
문자를 아스키코드로 바꾸려면 ord()
4. 소문자 -> 대문자 / 대문자 -> 소문자로 만드는 법
소문자 -> 대문자 : 문자.upper()
대문자 -> 소문자 : 문자.lower()
각각 대문자를 소문자로 만들 경우 이미 소문자인 경우는 변화 없다.
반대의 경우도 마찬가지이다.
3-2) 설명
1. 문자열을 받고 리스트형으로 변환한다.
->sentence=input()
or
->sentence=list(input())
2. sentence리스트 안에 들어있는 문자열이 몇갠지 계산한다. (소문자 -> 대문자)
계산 결과는 number리스트에 넣을 것이다. (26개는 A~Z까지의 수이다.)
number=[0]*26
for a in sentence:
index=ord(a.upper())-65 //아스키코드 A는 65이므로 -65를 해줘 A를 0부터 채워준다.
number[index]=number[index]+1
3. 가장 많은 수를 가진 대문자를 찾는다. (index를 0으로 만들어주고 재활용 해준다.)
max_index에는 가장 많은 수를 가진 대문자의 인덱스가 들어간다.
same은 가장 많은 수를 가진 대문자와 같은 수를 가진 대문자가 몇 개인지를 나타내준다.
index는 현재 검사중인 number의 인덱스를 나타낸다.
max_index=0
same=0
index=0
for b in number:
if b<number[max_index]:
index=index+1
continue
elif b>number[max_index]:
max_index=index
same=1
elif b==number[max_index]:
max_index=index
same=same+1
index=index+1
먼저, 가장 큰 갯수를 가진 대문자보다 작은 수를 가진 대문자는 다음 인덱스로 빠르게 이동시킨다.
만약 현재 가장 큰 개수를 가진 대문자보다 더 큰 개수가 있다면 max_index를 교체한 후 same을 1로 교체한다.(1로 교체하는 이유는 결과값 출력과 연관되어있다.)
만약 현재 가장 큰 개수를 가진 대문자와 같은 개수를 가진 대문자라면 same을 1 추가해준다.
최종적으로는 다음 인덱스로 이동하며, 26번을 검사한다.
4. 같은 개수를 가진 대문자가 1개 이상이면 "?"를 출력하고, 아니면 가장 많은 수를 가진 대문자를 출력한다.
if same>1:
print("?")
else:
print(chr(max_index+65))
4) c언어 코드
아직~
나태해지지 말자!
궁금한 점이 있다면 함께 고민해요!
끝!
'알고리즘 > 백준' 카테고리의 다른 글
2908번 상수 (0) | 2021.05.19 |
---|---|
1152번 단어의 개수 (0) | 2021.05.11 |
2675번 문자열 반복 (0) | 2021.04.26 |
10809번 알파벳 찾기 (0) | 2021.04.25 |
11720번 숫자의 합 (0) | 2021.04.18 |