이론113 백준 1463번: 1로 만들기 1로 만들기 성공시간 제한메모리 제한제출정답맞은 사람정답 비율2 초128 MB48311156931023132.331%문제정수 X에 사용할 수 있는 연산은 다음과 같이 세 가지 이다.X가 3으로 나누어 떨어지면, 3으로 나눈다.X가 2로 나누어 떨어지면, 2로 나눈다.1을 뺀다.정수 N이 주어졌을 때, 위와 같은 연산 세 개를 적절히 사용해서 1을 만들려고 한다. 연산을 사용하는 횟수의 최솟값을 출력하시오.입력첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 자연수 N이 주어진다.출력첫째 줄에 연산을 하는 횟수의 최솟값을 출력한다.예제 입력 1 복사2 예제 출력 1 복사1 예제 입력 2 복사10 예제 출력 2 복사3 힌트10의 경우에 10 -> 9 -> 3 -> 1 로 3번 만에 만들 수 있다.출처문.. 2018. 8. 6. 알고리즘 스터디 5회차 - 동적 계획법 (백준 2579번: 계단 오르기) 이번 알고리즘 스터디에서는 동적 계획법 (Dynamic Programming) 에 대해 간단히 배우고, 이를 적용하여 문제를 풀어보는 시간을 가졌다. 동적 계획법이란 쉽게 말해 복잡한 문제들을 간단한 여러개의 문제로 나누어 하나씩 해결해나가는 것으로,여러 알고리즘 문제 분류에서 쉽게 찾아 볼 수 있다. 이번에 풀어 본 문제도 간단한 동적 계획법에 해당한다. 계단 오르기 성공시간 제한메모리 제한제출정답맞은 사람정답 비율1 초128 MB255809813727638.232%문제계단 오르기 게임은 계단 아래 시작점부터 계단 꼭대기에 위치한 도착점까지 가는 게임이다. 과 같이 각각의 계단에는 일정한 점수가 쓰여 있는데 계단을 밟으면 그 계단에 쓰여 있는 점수를 얻게 된다.예를 들어 와 같이 시작점에서부터 첫 번째.. 2018. 6. 5. 백준 2745번: 진법변환 백준은 여기 안올리는데 이 문제는 하도 뻘짓을 많이 해서 올려본다. 진법 변환 성공시간 제한메모리 제한제출정답맞은 사람정답 비율1 초128 MB34621937163657.103%문제B진법 수 N이 주어진다. 이 수를 10진법으로 바꿔 출력하는 프로그램을 작성하시오.10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를 사용한다.A: 10, B: 11, ..., F: 15, ..., Y: 34, Z: 35입력첫째 줄에 N과 B가 주어진다. (2 ≤ B ≤ 36)B진법 수 N을 10진법으로 바꾸면, 항상 10억보다 작거나 같다.출력첫째 줄에 B진법 수 N을 10진법으로 출력한다.예제 입력 1 복사ZZZZZ 36 예제 출력 1 복사60466175 처음엔 1c.. 2018. 5. 31. mail_programming - 4주차 : 팰린드롬 판정하기 이번 매일 프로그래밍은 주어진 정수가 팰린드롬인지 아닌지 판정하는 것이다. 태어나서 팰린드롬이라는 말을 처음 들어보는 것 같은데 다행히도 뜻은 별로 어렵지 않다. 앞 뒤가 똑같은 수인지만 확인하면 되는 간단한 문제였다. 처음엔 배열(리스트)에 넣고 리버스를 하면 되는 것이 아닌가? 라고 생각을 했으나 문제의 조건에 정수를 문자열로 바꿔서는 안된다고 적혀있기에... 되도록 정수 상태 그대로를 보존해서 풀이해보았다. 슬라이스, 리버스 등을 사용할 수 없기에 한 자리씩 떼서 분류하기엔 역시 10으로 나눈 몫과 나머지를 이용하는게 가장 간단하다고 생각했다. 초기값이 0인 tmp 변수에 10을 곱하여 숫자가 들어갈 자리를 만들어주고, 주어진 수를 10으로 나눈 나머지를 tmp 변수에 더한 뒤 인자로 받은 정수를 .. 2018. 4. 15. mail_programming - 3주차 : 괄호 조합 구하기 쉬운듯 복잡한듯... 방법은 간단했다. left(왼쪽괄호) right(오른쪽괄호) 의 개수를 하나씩 줄여가며 재귀함수를 실행시키고,마지막엔 decode 함수를 불러와 프린트한다. 파이썬 짱 쉽고 간편하다 최고 인생은 짧으니 파이썬을 쓰도록 하자 야호 123456789101112131415161718192021222324252627282930def parenthesis(left, right, code): if code == None: code = 1 parenthesis(left-1, right, code) else: if left != 0: if left 2018. 4. 14. mail_programming - 2주차 : N보다 작은 짝수 피보나치 수의 합 1주차보다 훨씬 쉬웠다. 원래대로라면 입력된 수보다 약간 더 큰 피보나치 수를 구해서 range에 넣어줬어야 하는데, 귀찮아서 ipt+2로 처리해주었다. (2를 더한 이유는 예외처리) 12345678910111213141516def pibonacci(n): if n==0: return 0 elif n==1: return 1 else: return (pibonacci(n-2) + pibonacci(n-1)) sum = 0ipt = int(input('몇보다 작은 짝수 피보나치 수의 합을 구할까요? : ')) for i in range(ipt+2): if pibonacci(i) 2018. 4. 11. 이전 1 ··· 14 15 16 17 18 19 다음