Python 75

[백준/알고리즘/python/java] 2839번 - 설탕 배달

어떤 수가 주어질 때, 그 수가 5로 나누어 떨어지는 수 라면 5로 하나씩 빼고 3으로 나누어 떨어지는 수라면 3을 하나씩 빼면 될 것 같았다. 약간 그리디 알고리즘처럼 말이다. 하지만, 예외가 있었다. (처음 풀었던 python 코드) n = int(input()) cnt = 0 while(n != 0): if(n % 5 == 0): n -= 5 cnt += 1 elif(n % 3 == 0): n -= 3 cnt += 1 else: cnt = -1 break print(cnt) 하지만, 위 코드처럼 풀면, 8이라는 수는 2가 나와야 정상인데, -1을 출력하고 만다. 다시 고민해봤다. (두번 째로 고친 python 코드) n = int(input()) cnt = 0 while(n != 0): if(n %..

[백준/알고리즘/python/java] 2941번 - 크로아티아 알파벳

처음에는 시간초과가 났었던 문제이다. 알파벳을 기준으로 하지말고 기호를 기준으로 제어문을 나누었더니 시간초과문제가 해결되었다. (처음에 풀었던 코드-python) string = input() length = len(string) cnt = 0 idx = 0 while(idx != (length)): if(string[idx] == 'l'): if(string[idx+1] == 'j'): cnt += 1 idx += 2 else: cnt += 1 elif(string[idx] == 'n'): if(string[idx+1] == 'j'): cnt += 1 idx += 2 else: cnt += 1 idx += 1 elif(string[idx] == 'd'): if(string[idx+1] == 'z'): ..

[백준/알고리즘/python/java] 4673번 - 셀프 넘버

이전에 자바로 풀었던 문제를 파이썬을 공부하면서 다시 풀어봤다. 이런 유형의 문제는 일단 숫자를 다 써보면서 이해하는게 빠르다. 문제에서 말하는 셀프 넘버란 생성자가 없는 숫자를 말한다. (여기서 '생성자'란 어떠한 숫자를 만들 수 있는 숫자를 가리킨다.) 쉽게 예를 들어보자면, 1 : 1+1 = 2 를 만들 수 있다. (반면, 1은 어떠한 숫자로도 생성될 수 없다.)-> self_number(o) 2 : 2+2 = 4 를 만들 수 있다. ( 1로 2를 만들 수 있으므로 셀프넘버가 아니다.) -> self_number(x) 3 : 3+3 = 6 을 만들 수 있다. ( 반면, 3은 어떠한 숫자로도 생성될 수 없다.) -> self_number(o) 4 : 4+4 = 8 을 만들 수 있다. ( 2로 4를 만..

[백준/알고리즘/python/java] 1065번 - 한수

이전에 자바로 풀었던 문제를 파이썬을 공부하면서 다시 풀어보았다. 먼저 문제설명을 이해해보면, 100전까지의 모든 양수는 '한수'라는 것을 알 수 있다. 즉, 사용자가 입력한 수가 100보다 작은 수라면, 그대로 그 숫자가 '한수'의 개수이다. 그러면, 사용자가 100 이상의 숫자를 입력한다면, 100부터 사용자가 입력한 수까지 반복문을 돌면서 한수의 조건을 만족하는 등차수열의 공식을 그대로 적용하면 된다. 코드는 아래와 같다. def hansu(number): count = 99 # 100 전까지의 모든 자연수는 '한수'이기 때문에 초기변수를 99로 설정한다. if(number < 100): print(number) else: for i in range(100, number+1): x = str(i) ..

반응형