본문 바로가기

분류 전체보기

(642)
[백준] 그리디 알고리즘 - 피보나치 (9009번) #파이썬 #python 피보나치 (9009번) 시간 제한 : 1초 메모리 제한 : 128 MB 문제 피보나치 수 ƒK는 ƒK = ƒK-1 + ƒK-2로 정의되며 초기값은 ƒ0 = 0과 ƒ1 = 1 이다. 양의 정수는 하나 혹은 그 이상의 서로 다른 피보나치 수들의 합으로 나타낼 수 있다는 사실은 잘 알려져 있다. 하나의 양의 정수에 대한 피보나치 수들의 합은 여러 가지 형태가 있다. 예를 들어 정수 100은 ƒ4 + ƒ6 + ƒ11 = 3 + 8 + 89 또는 ƒ1 + ƒ3 + ƒ6 + ƒ11 = 1 + 2 + 8 + 89, 또는 ƒ4 + ƒ6 + ƒ9 + ƒ10 = 3 + 8 + 34 + 55 등으로 나타낼 수 있다. 이 문제는 하나의 양의 정수를 최소 개수의 서로 다른 피보나치 수들의 합으로 나타내는 것이다. 하나의 양의 ..
[백준] 그리디 알고리즘 - 우유 축제 (14720번) #파이썬 #python 우유 축제 (14720번) 시간 제한 : 1초 메모리 제한 : 256 MB 문제 영학이는 딸기우유, 초코우유, 바나나우유를 좋아한다. 입맛이 매우 까다로운 영학이는 자신만의 우유를 마시는 규칙이 있다. 1.맨 처음에는 딸기우유를 한 팩 마신다. 2.딸기우유를 한 팩 마신 후에는 초코우유를 한 팩 마신다. 3.초코우유를 한 팩 마신 후에는 바나나우유를 한 팩 마신다. 4.바나나우유를 한 팩 마신 후에는 딸기우유를 한 팩 마신다. 영학이는 우유 축제가 열리고 있는 우유거리에 왔다. 우유 거리에는 우유 가게들이 일렬로 늘어서 있다. 영학이는 우유 거리의 시작부터 끝까지 걸으면서 우유를 사먹고자 한다. 각각의 우유 가게는 딸기, 초코, 바나나 중 한 종류의 우유만을 취급한다. 각각의 우유 가게 앞에서, 영학이는..
[백준] 그리디 알고리즘 - 전자레인지 (10162번) #파이썬 #python 전자레인지 (10162번) 시간 제한 : 1초 메모리 제한 : 64 MB 문제 3개의 시간조절용 버튼 A B C가 달린 전자레인지가 있다. 각 버튼마다 일정한 시간이 지정되어 있어 해당 버튼을 한번 누를 때마다 그 시간이 동작시간에 더해진다. 버튼 A, B, C에 지정된 시간은 각각 5분, 1분, 10초이다. 냉동음식마다 전자레인지로 요리해야할 시간 T가 초단위로 표시되어 있다. 우리는 A, B, C 3개의 버튼을 적절히 눌러서 그 시간의 합이 정확히 T초가 되도록 해야 한다. 단 버튼 A, B, C를 누른 횟수의 합은 항상 최소가 되어야 한다. 이것을 최소버튼 조작이라고 한다. 만일 요리시간이 100초라고 하면(T=100) B를 1번, C는 4번 누르면 된다. 이와 다르게 C를 10번 눌러도 100초가..
[백준] 그리디 알고리즘 - ATM (11399번) #파이썬 #python ATM (11399번) 시간 제한 : 1초 메모리 제한 : 256 MB 문제 인하은행에는 ATM이 1대밖에 없다. 지금 이 ATM앞에 N명의 사람들이 줄을 서있다. 사람은 1번부터 N번까지 번호가 매겨져 있으며, i번 사람이 돈을 인출하는데 걸리는 시간은 Pi분이다. 사람들이 줄을 서는 순서에 따라서, 돈을 인출하는데 필요한 시간의 합이 달라지게 된다. 예를 들어, 총 5명이 있고, P1 = 3, P2 = 1, P3 = 4, P4 = 3, P5 = 2 인 경우를 생각해보자. [1, 2, 3, 4, 5] 순서로 줄을 선다면, 1번 사람은 3분만에 돈을 뽑을 수 있다. 2번 사람은 1번 사람이 돈을 뽑을 때 까지 기다려야 하기 때문에, 3+1 = 4분이 걸리게 된다. 3번 사람은 1번, 2번 사람이 돈을 뽑..
[CodeUp] 코드업 기초 100제 1060번 풀이 - 파이썬(python) 1060 : [기초-비트단위논리연산] 비트단위로 AND 하여 출력하기(설명) 시간 제한 : 1초 메모리 제한 : 128 MB 문제 설명 입력된 정수 두 개를 비트단위로 and 연산한 후 그 결과를 정수로 출력해보자. 비트단위(bitwise)연산자 &를 사용하면 된다.(and, ampersand, 앰퍼센드라고 읽는다.) 입력 2개의 정수가 공백을 두고 입력된다. -2147483648 ~ +2147483647 출력 두 정수를 비트단위(bitwise)로 and 계산을 수행한 결과를 10진수로 출력한다. 입력 예시 3 5 출력 예시 1 내 풀이 a,b=map(int, input().split()) print(a&b) 모범 답안 a,b=input().split() x=int(a) y=int(b) print(x&y..
[CodeUp] 코드업 기초 100제 1059번 풀이 - 파이썬(python) 1059 : [기초-비트단위논리연산] 비트단위로 NOT 하여 출력하기(설명) 시간 제한 : 1초 메모리 제한 : 128 MB 문제 설명 입력 된 정수를 비트단위로 참/거짓을 바꾼 후 정수로 출력해보자. 비트단위(bitwise)연산자 ~ 를 붙이면 된다.(~ : tilde, 틸드라고 읽는다.) 입력 정수 1개가 입력된다. -2147483648 ~ +2147483647 출력 비트 단위로 1 -> 0, 0 -> 1로 바꾼 후 그 값을 10진수로 출력한다. 입력 예시 2 출력 예시 -3 내 풀이 a=int(input()) print(~a) 모범 답안 a=input() n=int(a) print(~n) 해설 비트단위로 참과 거짓을 바꿔야 하므로 비트단위 not 연산자인 '~'를 사용하였습니다.
[CodeUp] 코드업 기초 100제 1058번 풀이 - 파이썬(python) 1058 : [기초-논리연산] 둘 다 거짓일 경우만 참 출력하기 시간 제한 : 1초 메모리 제한 : 128 MB 문제 설명 두 개의 참(1) 또는 거짓(0)이 입력될 때, 모두 거짓일 때에만 참이 계산되는 프로그램을 작성해보자. 입력 1 또는 0의 값만 가지는 2개의 정수가 공백을 두고 입력된다. 출력 둘 다 거짓일 경우에만 1을 출력하고, 그 외의 경우에는 0을 출력한다. 입력 예시 0 1 출력 예시 0 내 풀이 a,b=map(int,input().split()) if a==b and a==0: print(1) else: print(0) 모범 답안 a,b=input().split() x=int(a) y=int(b) b1=bool(x) b2=bool(y) z=int((not b1) and (not b2)..
[CodeUp] 코드업 기초 100제 1057번 풀이 - 파이썬(python) 1057 : [기초-논리연산] 참/거짓이 서로 같을 때에만 참 출력하기 시간 제한 : 1초 메모리 제한 : 128 MB 문제 설명 두 개의 참(1) 또는 거짓(0)이 입력될 때, 참/거짓이 서로 같을 때에만 참이 계산되는 프로그램을 작성해보자. 입력 1 또는 0의 값만 가지는 2개의 정수가 공백을 두고 입력된다. 출력 참/거짓이 서로 같을 때에만 1을 출력하고, 그 외의 경우에는 0을 출력한다. 입력 예시 0 0 출력 예시 1 내 풀이 a,b=map(int,input().split()) if a==b: print(1) else: print(0) 모범 답안 a,b=input().split() x=int(a) y=int(b) b1=bool(x) b2=bool(y) z=int(b1 == b2) print(z)..
[CodeUp] 코드업 기초 100제 1056번 풀이 - 파이썬(python) 1056 : [기초-논리연산] 참/거짓이 서로 다를 때에만 참 출력하기(설명) 시간 제한 : 1초 메모리 제한 : 128 MB 문제 설명 두 가지의 참(1) 또는 거짓(0)이 입력될 때, 참/거짓이 서로 다를 때에만 참을 출력하는 프로그램을 작성해보자. 입력 1 또는 0의 값만 가지는 2개의 정수가 공백을 두고 입력된다. 출력 참/거짓이 서로 다를 때에만 1을 출력하고, 그 외의 경우에는 0을 출력한다. 입력 예시 1 1 출력 예시 0 내 풀이 a,b=map(int,input().split()) if a ^ b==1: print(1) else: print(0) 모범 답안 a,b=input().split() x=int(a) y=int(b) b1=bool(x) b2=bool(y) z=int((b1==True..
[CodeUp] 코드업 기초 100제 1055번 풀이 - 파이썬(python) 1055 : [기초-논리연산] 하나라도 참이면 참 출력하기(설명) 시간 제한 : 1초 메모리 제한 : 128 MB 문제 설명 두 개의 참(1) 또는 거짓(0)이 입력될 때, 하나라도 참이면 참을 출력하는 프로그램을 작성해보자. 입력 1 또는 0의 값만 가지는 2개의 정수가 공백을 두고 입력된다. 출력 하나라도 참일 경우 1을 출력하고, 그 외의 경우에는 0을 출력한다. 입력 예시 1 1 출력 예시 1 내 풀이 a,b=map(int,input().split()) if a or b==1: print(1) else: print(0) 모범 답안 a,b=input().split() x=int(a) y=int(b) b1=bool(x) b2=bool(y) z=int(b1 or b2) print(z) 해설 두 개의 입..