본문 바로가기
반응형

알고리즘 문제 & 프로그래밍40

[C++]백준 1110번 더하기 사이클 문제 (while문) 백준 1110번 : 더하기 사이클 문제 0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 한다. 1. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 2. 그 다음, 주어진 수의 가장 오른쪽 자리 수와 앞에서 구한 합의 가장 오른쪽 자리 수를 이어 붙이면 새로운 수를 만들 수 있다. 다음 예를 보자. 1. 26부터 시작한다. 2. 2+6 = 8이다. 새로운 수는 68이다. 3. 6+8 = 14이다. 새로운 수는 84이다. 4. 8+4 = 12이다. 새로운 수는 42이다. 5. 4+2 = 6이다. 새로운 수는 26이다. 위의 예는 4번만에 원래 수로 돌아올 수 있다. 따라서 26의 사이클의 길이는 4이다. N이 주어졌을 때,.. 2020. 11. 10.
일복리, 이자 계산 & 기간 구하기 문제 | 파이썬 datetime 라이브러리 문제 입력 형식은 ‘20200701’과 같은 형식으로 시작일과 종료일을 입력 받아 기간을 계산하고, 그 기간의 일을 기준으로 한 복리 계산을 하시오. 접근 1. 날짜를 문자열로 4글자 / 2글자 / 2글자로 끊고 숫자형태로 변환한다. 2. 파이썬 datetime 라이브러리를 이용하여, 시작일과 종료일 사이의 기간을 구한다. 3. 그 후, 입력 형식인 '20200701'을 보기 좋게 '2020-07-01'로 바꾸어 준다. 4. 원금에 대한 일복리 계산식을 세운다. import datetime start_date = str(input('시작 날짜를 입력하세요(예시:20200701) : ')) end_date = str(input('마지막 날짜를 입력하세요(예시:20200701) : ')) start_mone.. 2020. 7. 1.
복리, 원리합계, 이자 계산 문제(등비수열) | 파이썬 while, for문 문제 회차별 납입금(or 저축액), 기간, 이자율을 입력받고, 모든 기간 경과 후의 원금총액, 이자총액, 원리금을 구해보자. (단, 기간 : 1~30회 제한, 이자율 : 1%~100% 제한) 접근 1. (1+이자율)을 곱한값을 계속 더하면 된다(등비수열). 이 값은 '원리합계'이다. 2. 원금총액 = 회차별 납입금 X 기간 3. 이자총액 = 원리합계 - 원금총액 #복리 프로그램 작성 total = income = int(input('회차별 납입금 : ')) term = int(input('기간(1 2020. 6. 24.
[백준 1110번] 더하기 사이클 문제 | 파이썬 while문 문제 0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 한다. 1. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 2. 그 다음, 주어진 수의 가장 오른쪽 자리 수와 앞에서 구한 합의 가장 오른쪽 자리 수를 이어 붙이면 새로운 수를 만들 수 있다. 다음 예를 보자. 1. 26부터 시작한다. 2. 2+6 = 8이다. 새로운 수는 68이다. 3. 6+8 = 14이다. 새로운 수는 84이다. 4. 8+4 = 12이다. 새로운 수는 42이다. 5. 4+2 = 6이다. 새로운 수는 26이다. 위의 예는 4번만에 원래 수로 돌아올 수 있다. 따라서 26의 사이클의 길이는 4이다. N이 주어졌을 때, N의 사이클의 길이를 구하는 프로.. 2020. 6. 20.
[백준 2884번] 알람시계 문제 | 파이썬 if문 문제 원래 시간보다 45분 일찍 표시되는 알람시계 만들기 ex) 10 10 입력 → 9 25 출력 0 30 입력 → 23 45 출력 23 40 입력 → 22 55 출력 처음 아이디어 1. 분이 45보다 크거나 같을 때는 그냥 '분-45' 하면 됨 2. 시가 1보다 크고, 분이 45보다 작을때는 '시-1', '분+15' 하면 됨 3. 이제 나머지는 시가 0이고, 분이 45보다 작을 때이므로, '시=23', '분+15' 하면 됨 input_data = input().split(' ') hour = int(input_data[0]) minute = int(input_data[1]) if minute>=45: print(hour, minute-45) elif hour>=1 and minute 2020. 6. 13.
[프로젝트 오일러] 5번 문제 & 풀이 (1 ~ 20 사이의 어떤 수로도 나누어 떨어지는 가장 작은 수) Problem 5 1 ~ 10 사이의 어떤 수로도 나누어 떨어지는 가장 작은 수는 2520입니다. 그러면 1 ~ 20 사이의 어떤 수로도 나누어 떨어지는 가장 작은 수는 얼마입니까? 처음 아이디어 이 문제는 최소공배수를 구하는 문제이다 숫자 4, 6의 경우, 이 때의 최대공약수(GCD)는 2, 최소공배수(LCM)는 12이고, 4 = GCD * 2, 6 = GCD * 3 에서 LCM = GCD * 2 * 3 = GCD * 2 X GCD * 3 / GCD 이다. 이 때, 추가로 숫자 7과의 최대공배수를 구하려면, 처음부터 다시 최대공약수&최소공배수를 구할 필요 없이, 앞서 구한 최소공배수인 12와 7 사의의 최소공배수를 구하면, 이 값이 4, 6, 7의 최소공배수가 된다. 같은 논리로, 1부터 차례대로 20.. 2020. 5. 30.
반응형