문제 구름LEVEL 난이도별 다양한 문제를 해결함으로써 SW 역량을 향상시킬 수 있습니다. level.goorm.io 내 풀이(Python3) N = int(input()) T, M = map(int, input().split()) time = 0 for i in range(N): time += int(input()) # 시간 hour = time // 60 if hour >= 24: hour %= 24 #분 minute = time % 60 T += hour M += minute if M >= 60: T += 1 M -= 60 if T >= 24: T -= 24 print(T, M) time 변수에 더해야할 분수를 저장했다. 시간(hour)을 구하기 위해 60을 나누고 만약 hour가 24보다 큰 경우..
문제 구름LEVEL 난이도별 다양한 문제를 해결함으로써 SW 역량을 향상시킬 수 있습니다. level.goorm.io 내 풀이 (Python3) 내용적으로 봤을 땐 어려워 보였는데 결론적으로 수식대로 코드를 짜고 소수점 이하의 값을 버리면 되는 문제였다. W, R = map(int, input().split()) RM = int(W *(1+R/30)) print(RM) 소수점 이하의 값을 버리기 위해 int() 함수를 사용해서 정수로 만들어 주었다. 구름톤 해설 구름톤 해설에서는 Math 라이브러리의 trunc() 함수를 사용하여 소수점 이하의 값을 버렸다. import math math.trunc(W *(1+R/30)) 배운 점 정해코드를 통해 trunc() 함수에 대해 처음 알게 되었다. 소수점을 다..
실패 | 시도 -번 🔗 [백준] 10816번 : 숫자 카드 2 10816 : [이진 탐색] 숫자카드 2 (py) 문제 내 소스 n = int(input()) n_lst = list(map(int, input().split())) m = int(input()) m_lst = list(map(int, input().split())) dic = {} for i in n_lst: if i not in dic: dic[i] = 1 else: dic[i] += 1 for i in m_lst: if i in dic: print(dic[i], end=' ') else: print(0, end=' ') 소스 설명 for i in n_lst: if i not in dic: dic[i] = 1 else: dic[i] += ..
성공 | 시도 3번 🔗 [백준] 1065번 : 한수 1065 : [브루트포스 알고리즘] 한수(py) 문제 설명 어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력하는 프로그램을 작성하시오. 문제 분석 - 숫자가 백의 자리 이상일 때 등차수열인지 확인한다. 입력 첫째 줄에 1,000보다 작거나 같은 자연수 N이 주어진다. 출력 첫째 줄에 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력한다. 입력과 출력 예시 입력 출력 110 99 1 1 210 105 1000 144 500 119 내 소스 n = input() cnt = 0 ..
성공 | 시도 2번 🔗 [백준] 4673번 : 셀프 넘버 4673 : [브루트포스 알고리즘] 셀프 넘버(py) 문제 설명 셀프 넘버는 1949년 인도 수학자 D.R. Kaprekar가 이름 붙였다. 양의 정수 n에 대해서 d(n)을 n과 n의 각 자리수를 더하는 함수라고 정의하자. 예를 들어, d(75) = 75+7+5 = 87이다. 양의 정수 n이 주어졌을 때, 이 수를 시작해서 n, d(n), d(d(n)), d(d(d(n))), ...과 같은 무한 수열을 만들 수 있다. 예를 들어, 33으로 시작한다면 다음 수는 33 + 3 + 3 = 39이고, 그 다음 수는 39 + 3 + 9 = 51, 다음 수는 51 + 5 + 1 = 57이다. 이런식으로 다음과 같은 수열을 만들 수 있다. 33, 39, 51..
한 개의 입력 데이터 받기 # 문자열 n = input() # 정수 n = int(input()) 여러 입력 데이터를 리스트로 변환 1) 데이터들이 한 칸 띄어쓰기가 되어있는 경우 map() : 리스트의 요소를 지정된 함수로 처리해주는 함수이다. # 문자열 n = list(input().split()) # 입력 : a b c d print(n) # 출력 : ['a', 'b', 'c', 'd'] # 정수 n = list(map(int,input().split())) # 입력 : 1 2 3 4 print(n) # 출력 : [1, 2, 3, 4] 2) 데이터들이 붙어있는 경우 문자열을 list로 형변환하면 각 문자가 원소가 된다. # 문자열 n = list(input()) # 입력 : abcd print(n)..
실패 | 시도 - 번 🔗 [백준] 1789번 수들의 합 1789 : [그리디 알고리즘] 수들의 합(py) 문제 설명 서로 다른 N개의 자연수의 합이 S라고 한다. S를 알 때, 자연수 N의 최댓값은 얼마일까? 문제 분석 - N이 커지기 위해서는 작은 자연수들의 합이어야 한다. 또 서로 다른 자연수이기 때문에 작은 수들을 차례대로 세워서 합을 구해야 한다. 즉 공차가 1인 등차수열 형태가 나온다. - 등차수열의 공식을 이용하였다. (사실 등차수열 공식을 까먹어서 공식을 찾아보기도 했었다...) 등차수열의 합 : $$ \frac{n{\{2a+(n-1)d}\}}{2} $$ n 구하기 : a1 = 1, d = 1, 등차수열의 합 = 200 → 전개 : n(n+1) = 400 → 자연수를 얼만큼 더해야 200이 ..
성공 | 시도 2번 🔗 [백준] 10162번 전자레인지 10162 : [그리디 알고리즘] 전자레인지(py) 문제 설명 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번 누르면 된다. 이..
실패 | 시도 6번 🔗 [백준] 2217번 로프 2217 : [그리디 알고리즘] 로프(py) 문제 설명 N(1 ≤ N ≤ 100,000)개의 로프가 있다. 이 로프를 이용하여 이런 저런 물체를 들어올릴 수 있다. 각각의 로프는 그 굵기나 길이가 다르기 때문에 들 수 있는 물체의 중량이 서로 다를 수도 있다. 하지만 여러 개의 로프를 병렬로 연결하면 각각의 로프에 걸리는 중량을 나눌 수 있다. k개의 로프를 사용하여 중량이 w인 물체를 들어올릴 때, 각각의 로프에는 모두 고르게 w/k 만큼의 중량이 걸리게 된다. 각 로프들에 대한 정보가 주어졌을 때, 이 로프들을 이용하여 들어올릴 수 있는 물체의 최대 중량을 구해내는 프로그램을 작성하시오. 모든 로프를 사용해야 할 필요는 없으며, 임의로 몇 개의 로프를 ..