본문 바로가기

분류 전체보기

(33)
[프로그래머스] level1 약수의 개수와 덧셈(python) 문제 설명 제한사항 입출력 예 나의 풀이(전체 코드) def solution(left, right): answer = 0 for i in range(left, right+1): count = 0 for j in range(1, i+1): if i%j == 0: count += 1 if count%2 == 0: answer += i else: answer -= i return answer 이 문제는 약수의 개수가 짝수인 수는 더하고(+), 약수의 개수가 홀수인 수는 뺀(-) 값을 모두 더한 값이 return 돼야 한다. 입출력 예 설명을 보면서 이해를 하면 수월하게 풀 수 있는 문제였다. 우선 입력받은 두 정수 left부터 right 까지의 모든 수들 중에서 약수의 개수를 판단해야 하기 때문에 반복문은 l..
[프로그래머스] level1 로또의 최고 순위와 최저 순위(파이썬) 문제 설명 로또 6/45(이하 '로또'로 표기)는 1부터 45까지의 숫자 중 6개를 찍어서 맞히는 대표적인 복권입니다. 아래는 로또의 순위를 정하는 방식입니다. 제한 사항 입출력 예 나의 풀이(전체 코드) def solution(lottos, win_nums): answer = [6,6,5,4,3,2,1] count1 = count2 = 0 for i in range(len(lottos)): if lottos[i] in win_nums: count1 += 1 for i in range(len(lottos)): if (lottos[i] == 0) and (lottos[i] not in win_nums): lottos[i] = win_nums[i] if lottos[i] in win_nums: count2 ..
[프로그래머스] Level1 3진법 뒤집기 (파이썬) 문제 설명 자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요. 제한사항 n은 1 이상 100,000,000 이하인 자연수입니다. 입출력 예 n result 45 7 125 229 나의 풀이 (전체 코드) def solution(n): answer = [] sum = 0 while(n != 0): answer.append(n%3) n = n // 3 answer.reverse() for i in range(len(answer)): sum += answer[i] * (3**i) return sum 처음 문제를 접하고 나서 3진법이란 게 있나?라는 생각을 짧게 했다 우선 문제를 풀기 전에 위의 ..
[백준] 1408번 파이썬 풀이 https://www.acmicpc.net/problem/1408 1408번: 24 도현이는 Counter Terror Unit (CTU)에서 일하는 특수요원이다. 도현이는 모든 사건을 정확하게 24시간이 되는 순간 해결하는 것으로 유명하다. 도현이는 1시간 만에 범인을 잡을 수 있어도 잡지 않는 www.acmicpc.net [문제] 도현이는 Counter Terror Unit (CTU)에서 일하는 특수요원이다. 도현이는 모든 사건을 정확하게 24시간이 되는 순간 해결하는 것으로 유명하다. 도현이는 1시간 만에 범인을 잡을 수 있어도 잡지 않는다. 정확하게 24시간이 되는 순간이 아니면 잡지 않는 CTU 특수요원이다. 2008년 3월 3일 월요일, CTU는 새학기에 맞춰 핵폭탄을 날리겠다는 테러 정보를 ..
[백준] 1173번 파이썬 풀이 https://www.acmicpc.net/problem/1173 1173번: 운동 첫째 줄에 다섯 정수 N, m, M, T, R이 주어진다. www.acmicpc.net [문제] 영식이가 운동을 하는 과정은 1분 단위로 나누어져 있다. 매 분마다 영식이는 운동과 휴식 중 하나를 선택해야 한다. 운동을 선택한 경우, 영식이의 맥박이 T만큼 증가한다. 즉, 영식이의 맥박이 X였다면, 1분 동안 운동을 한 후 맥박이 X+T가 되는 것이다. 영식이는 맥박이 M을 넘는 것을 원하지 않기 때문에, X+T가 M보다 작거나 같을 때만 운동을 할 수 있다. 휴식을 선택하는 경우 맥박이 R만큼 감소한다. 즉, 영식이의 맥박이 X였다면, 1분 동안 휴식을 한 후 맥박은 X-R이 된다. 맥박은 절대로 m보다 낮아지면 안된다..
5. 그리디 알고리즘(Greedy Algorithm) ✅ 그리디 알고리즘이란? ㅇ 그리디 알고리즘은 탐욕 알고리즘이라고 불리며, 선택의 순간마다 당장 눈앞에 보이는 최적의 상황만을 쫓아 최종적인 해답에 도달하는 방법이다. ㅇ 주로 최적해를 구하는데에 사용되는 방법이며, 속도가 빠르다는 장점이 있다. ㅇ 여러 경우 중 하나를 결정해야 할 때마다 그 순간에 최적이라고 생각되는 것을 선택해 나가는 방식으로 진행된다. - 순간마다 하는 선택은 그 순간에 대해서는 지역적으로 최적이지만, 최종적(전역적)으로는 최적이라고 보장할 수 없다. ㅇ 특성을 가지는 문제들을 해결하는데 강점이 있는 알고리즘으로, 한 번의 선택이 다음 선택에는 전혀 무관한 값이어야 하며 매 순간의 최적해가 문제에 대한 최적해여야 한다. ✅ 그리디 알고리즘을 적용하기 위한 조건 1️⃣ 탐욕적 선택 ..
4. 동적계획법 (Dynamic Programming) ✅ 동적 계획법이란? ㅇ 하나의 큰 문제를 여러 개의 작은 문제로 나누어서 그 결과를 저장하고, 다시 큰 문제를 해결할 때 사용하는 것. ㅇ 즉, 한 번 계산한 문제는 다시 계산하지 않도록 하는 알고리즘이다. ㅇ 동적 계획법은 다이나믹 프로그래밍(DP) 라고도 불린다. ✅ 동적 계획법의 조건 1️⃣ 최적 부분 구조 ㅇ 부분 문제의 최적 결과 값을 사용하여 전체 문제의 최적 결과를 낼 수 있는 경우. ㅇ 특정 문제의 정답은 문제의 크기에 상관없이 항상 동일하다는 특징이 있음. ㅇ 피보나치 수열의 점화식은 f(n) = f(n-1) + f(n-2)으로, 위와 같은 트리구조로 함수가 호출되게 된다. 위 그림에서도 쉽게 찾을 수 있듯이 fib(1), fib(2), fib(3)과 같이 동일한 부분 문제가 중복되어 ..
[백준] 1371번 파이썬 풀이 https://www.acmicpc.net/problem/1371 1371번: 가장 많은 글자 첫째 줄부터 글의 문장이 주어진다. 글은 최대 50개의 줄로 이루어져 있고, 각 줄은 최대 50개의 글자로 이루어져 있다. 각 줄에는 공백과 알파벳 소문자만 있다. 문장에 알파벳은 적어도 하나 이 www.acmicpc.net [문제] 영어에서는 어떤 글자가 다른 글자보다 많이 쓰인다. 예를 들어, 긴 글에서 약 12.31% 글자는 e이다. 어떤 글이 주어졌을 때, 가장 많이 나온 글자를 출력하는 프로그램을 작성하시오. [입력] 첫째 줄부터 글의 문장이 주어진다. 글은 최대 50개의 줄로 이루어져 있고, 각 줄은 최대 50개의 글자로 이루어져 있다. 각 줄에는 공백과 알파벳 소문자만 있다. 문장에 알파벳은 적어도..
[백준] 1252번 파이썬 풀이 https://www.acmicpc.net/problem/1252 1252번: 이진수 덧셈 첫째 줄에 두 개의 이진수가 빈 칸을 사이에 두고 주어진다. 각 이진수는 1 또는 0으로만 이루어져 있으며, 0으로 시작할 수도 있다. 또한 각 이진수의 길이는 80을 넘지 않는다. www.acmicpc.net [문제] 두 개의 이진수를 입력받아 이를 더하는 프로그램을 작성하시오. [입력] 첫째 줄에 두 개의 이진수가 빈 칸을 사이에 두고 주어진다. 각 이진수는 1 또는 0으로만 이루어져 있으며, 0으로 시작할 수도 있다. 또한 각 이진수의 길이는 80을 넘지 않는다. [출력] 첫째 줄에 이진수 덧셈 결과를 출력한다. 결과가 0인 경우를 제외하고는 출력되는 이진수는 항상 1로 시작해야 한다. [예제 입력1] 100..
[백준] 1159번 파이썬 풀이 https://www.acmicpc.net/problem/1159 1159번: 농구 경기 상근이는 농구의 세계에서 점차 영향력을 넓혀가고 있다. 처음에 그는 농구 경기를 좋아하는 사람이었다. 농구에 대한 열정은 그를 막을 수 없었고, 결국 상근이는 농구장을 청소하는 일을 시작 www.acmicpc.net [문제] 상근이는 농구의 세계에서 점차 영향력을 넓혀가고 있다. 처음에 그는 농구 경기를 좋아하는 사람이었다. 농구에 대한 열정은 그를 막을 수 없었고, 결국 상근이는 농구장을 청소하는 일을 시작했다. 상근이도 농구장을 청소하면서 감독이 되기 위해 가져야할 능력을 공부해나갔다. 서당개 3년이면 풍월을 읊듯이 상근이는 점점 감독으로 한 걸음 다가가고 있었다. 어느 날 그에게 지방의 한 프로농구팀을 감독할 ..