알고리즘

TIL] 알고리즘 문제풀이[백준] (1152번, 1157번)

Nerd 2021. 6. 19. 01:25

알고리즘 문제풀이

1152번

# 영어 대소문자와 띄어쓰기만으로 이루어진 문자열이 주어진다. 문자열에 몇 개의 단어가 있는지 출력 중복도 세어야한다
# 띄어쓰기를 기점으로 단어가 나뉜다.

words = list(map(str, input().split()))
print(len(words))

1157번

# 알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성 단, 대문자와 소문자 구분 x
# 입력 : 첫째 줄에 알파벳 대소문자로 이루어진 단어가 주어짐
# 출력 : 첫째 줄에 이 단어에서 가장 많이 사용된 알파벳을 대문자로 출력 단, 가장 많이 사용된 알파벳이 여러개 존재하는경우 ?를 출력

# 문제 접근 방식 : 대소문자 구분을 하지 않기 위해 모두 대문자로 변환

words = list(input().upper()) 
most_word = list(set(words))  # 중복을 제거!

cnt_list = []  # 저장소

for i in most_word:  # 중복을 제거한 most_word를 넣어
    cnt = words.count(i)  # i가 words에 들어오면 count 해준다.
    cnt_list.append(cnt)  # 저장소에 cnt를 추가한다.

if cnt_list.count(max(cnt_list)) > 1:  # 만약 가장 많이 중복되는 알파벳이 두개 이상이라면
    print('?')  # ? 출력
else:
    max_index = cnt_list.index(max(cnt_list))
    print(most_word[max_index])

오늘도 알고리즘 문제를 풀었다!

어제는 강의를 듣고 기초 개념과 유형별 접근법에 대해 공부를 하였는데

확실히 그게 도움이 된 것 같다.

물론 배운 유형들을 풀지는 않았지만 문제를 접근할 때 겁을 먹는 것은 확실히 줄어든 것 같다.

확실히 알고리즘은 개념에 대해 익히고 문제를 많이 풀면 풀수록

실력이 느는 것 같아서 기분이 좋지만 아직은 하~중난이도도 버겁다...

열심히 공부해서 난이도를 높여야겠다!

파이팅✍️✍️✍️👍👍👍