알고리즘 마라톤 2일차

7번

단어 공부

  • set 자료형을 떠올릴 수 있어야 한다.
  • 리스트의 count, max, index, append를 활용할 수 있어야 한다.
word = input().upper()
word_list = list(set(word))
cnt_list = []
for i in word_list:
    cnt = word.count(i)
    cnt_list.append(cnt)

if cnt_list.count(max(cnt_list)) > 1:
    print('?')
else:
    max_idx = cnt_list.index(max(cnt_list))
    print(word_list[max_idx])

8번

크로아티아 알파벳

  • 문자열의 replace 함수를 활용할 수 있어야 한다.
alphabet = ['c=', 'c-', 'dz=', 'd-', 'lj', 'nj', 's=', 'z=']
word_input = input()
cnt = 0
for i in alphabet:
    word_input = word_input.replace(i, '*')
print(len(word_input))

9번

그룹 단어 체커

이전 알파벳과 현재 알파벳을 비교하여 다를 경우 현재 알파벳 이전에 현재 알파벳이 나온 적이 있는지를 체크하면 된다.

case = int(input())
group_word = 0
for i in range(case):
    word_input = input()
    before_word = None
    error = 0
    for idx, word in enumerate(word_input):
        # print('before', before_word, 'after', word)
        if idx != 0 and before_word != word:
            if word_input[:idx].count(word):
                error += 1
        before_word = word
    if error == 0:
        group_word += 1
print(group_word)

10번

설탕 배달

5의 배수가 될 때까지는 3씩 빼는 것이 관건

sugar = int(input())
bag = 0
while sugar >= 0:
    if sugar % 5 == 0:
        bag += (sugar // 5)
        print(bag)
        break
    sugar -= 3
    bag += 1
    if sugar < 0:
        print(-1)
        break

12번

베르트랑 공준

범위 내의 소수를 미리 찾아서 리스트로 만들어 놓은 후 그 리스트 안에서 찾아야 시간 초과가 되지 않는다.

관련 문제
소수 구하기

import math
import sys

def num(num):
    if num == 1:  # 1은 소수가 아니다.
        return False
    else:
        for i in range(2, int(math.sqrt(num)) + 1):
            if num % i == 0:
                return False
        return True


all_list = list(range(2, 246912))
save_list = []

# 주어진 범위의 소수를 찾아서 미리 저장해두기
for i in all_list:
    if num(i):
        save_list.append(i)

num = int(sys.stdin.readline())

while num != 0:
    count = 0
    for i in save_list:
        if num < i <= num * 2:
            count += 1
    print(count)
    num = int(sys.stdin.readline())

좋은 웹페이지 즐겨찾기