문제 1676번: 팩토리얼 0의 개수 N!에서 뒤에서부터 처음 0이 아닌 숫자가 나올 때까지 0의 개수를 구하는 프로그램을 작성하시오. www.acmicpc.net 문제 풀이 팩토리얼로 계산된 값에서 뒤에서 부터 0이 아닌 최초의 다른 수가 발생하는지를 확인하고 반환하는 문제이다. 예를 들어 10!은 3628800이므로 뒤에서 0이 아닌 수는 2번째 이후에 등장한다. 간단하게 값이 입력되면 이에 대한 팩토리얼을 계산하고, 문자로 변환하여 뒤집은 후에 0이 나오지 않을 때까지 카운트하였다. 코드 import math if __name__ == '__main__': f = str(math.factorial(int(input()))) cnt = 0 for num in f[::-1]: if num != '0':..
문제 6588번: 골드바흐의 추측 문제 1742년, 독일의 아마추어 수학가 크리스티안 골드바흐는 레온하르트 오일러에게 다음과 같은 추측을 제안하는 편지를 보냈다. 4보다 큰 모든 짝수는 두 홀수 소수의 합으로 나타낼 수 있다. www.acmicpc.net 문제 풀이 4 보다 큰 모든 짝수는 두 홀수 소수의 합으로 나타낼 수 있는것이 크리스티안 골드바흐의 추측이다. 문제는 다음과 같은 순서에 따라 풀 수 있다. 최대 입력되는 수는 100000이므로, 최대 입력 수 까지의 소수를 미리 계산한다. 원래수 - 홀수인 소수 = 홀수 이므로, 가장 작은 홀수인 소수 부터 원래 수 - 홀수인 소수 모두 소수인지 판별하면 된다. 예를 들어 8인 경우 가장 작은 홀수인 소수인 3을 통해 계산한 값은, 5(8 - 3)이므..
문제 11655번: ROT13 첫째 줄에 알파벳 대문자, 소문자, 공백, 숫자로만 이루어진 문자열 S가 주어진다. S의 길이는 100을 넘지 않는다. www.acmicpc.net 문제 풀이 ROT13은 문자가 입력되면 소문자, 대문자를 구분하여 각 문자로 부터 13번째 이후의 알파벳으로 변경하는 암호화 방식이다. 해당 암호화 방식을 구현하면 문제를 해결 할 수 있다. 소문자와 대문자의 인덱스를 찾기 위한 딕셔너리를 초기화 한다. stirng 상수를 활용하면 좋다. 대문자는 ASCII코드 65 부터, 소문자는 97 부터 시작하므로 이를 활용하여 +13된 값을 찾는다. 코드 import string LOWER = {c: idx for idx, c in enumerate(string.ascii_lowercas..
문제 1935번: 후위 표기식2 첫째 줄에 피연산자의 개수(1 ≤ N ≤ 26) 가 주어진다. 그리고 둘째 줄에는 후위 표기식이 주어진다. (여기서 피연산자는 A~Z의 영대문자이며, A부터 순서대로 N개의 영대문자만이 사용되며, 길이�� www.acmicpc.net 문제 풀이 후위 표기식을 계산하는 것은 후위 표기식을 만드는 것보다는 간단하다. 피연산자를 stack에 push 하고, 연산자가 입력되면 stack의 값 중 2개를 출력하여 연산을 하면 된다. 해당 문제에서는 A - Z와 같이 영어 대문자가 주어지고, 이에 매칭 되는 숫자들이 입력될 때 후위 표기식을 계산하는 문제이다. `string.ascii_uppercase`를 활용하여 A - Z에 대응되는 딕셔너리를 초기화 한다. `stirng.asci..