무제

[백준] 10820 문자열 분석 / 1463 1로 만들기 본문

Study/Coding Test 오답노트

[백준] 10820 문자열 분석 / 1463 1로 만들기

mugan1 2024. 11. 26. 22:10

1. 10820 문자열 분석

 

파이썬에서는 input()은 EOF 에러를 발생시키기 때문에, except 를 통해 예외처리를 하여 정상적으로 프로세스를 종료

sys.stdin.readline()은 빈문자열 발생으로 입력초과 발생...

 

와 이런 차이가 있었다니...

 

import sys
# input = sys.stdin.readline

while True:
    try:
        s = input()
        capital = 0
        letter = 0
        num = 0
        space = 0
        for i in s :
            if i.isupper():
                capital += 1
            elif i.islower():
                letter +=1
            elif i.isnumeric():
                num +=1
            elif i == " " :
                space += 1
        print(letter, capital, num, space)
    except :
        break

 

2. 1로 만들기

 

드디어 DP 문제를 풀기 시작했고, 예상했던대로 어렵다..

이전 수의 최소값에서 1을 더한 것과, 나누었을 경우의 최소값에서 1을 더한 값을 비교하는 것이 포인트...

import sys
input = sys.stdin.readline

n = int(input())

tmp = [0]*((10**6)+1)

for i in range(2, n+1):
    tmp[i] = tmp[i-1]+1

    if i % 2 ==0:
        tmp[i] = min(tmp[i], tmp[i//2]+1)
    if i % 3 ==0:
        tmp[i] = min(tmp[i], tmp[i//3]+1)
print(tmp[n])
Comments