본문 바로가기

알고리즘/백준14

연속합 (1912) 1912 문제 n개의 정수로 이루어진 임의의 수열이 주어진다. 우리는 이 중 연속된 몇 개의 수를 선택해서 구할 수 있는 합 중 가장 큰 합을 구하려고 한다. 단, 수는 한 개 이상 선택해야 한다. 예를 들어서 10, -4, 3, 1, 5, 6, -35, 12, 21, -1 이라는 수열이 주어졌다고 하자. 여기서 정답은 12+21인 33이 정답이 된다. 입력 첫째 줄에 정수 n(1 ≤ n ≤ 100,000)이 주어지고 둘째 줄에는 n개의 정수로 이루어진 수열이 주어진다. 수는 -1,000보다 크거나 같고, 1,000보다 작거나 같은 정수이다. 출력 첫째 줄에 답을 출력한다. 답 n = int(input()) a = list(map(int, input().split())) lst = [a[0]] for i.. 2023. 2. 8.
기본수학2 (11653, 1929) 11653 문제 정수 N이 주어졌을 때, 소인수분해하는 프로그램을 작성하시오. 입력 첫째 줄에 정수 N (1 ≤ N ≤ 10,000,000)이 주어진다. 출력 N의 소인수분해 결과를 한 줄에 하나씩 오름차순으로 출력한다. N이 1인 경우 아무것도 출력하지 않는다. 답 n = int(input()) a = 2 while n != 1: if n % a != 0: a += 1 else: n = n // a print(a) 처음엔 문제를 이상하게 이해하고 약수를 다 구해버렸당.. 소인수분해니까 2부터 나눠주자 2로 안나눠지면 3으로 나눠주자 그렇게 1씩 올려서 나눠주고 n=1이 되면 멈춰주자! 다 나눠준거니까! n = int(input()) a = 2 while n != 1: if n % a != 0: a +=.. 2022. 9. 16.
기본수학2 (1978, 2581) 1978 문제 주어진 수 N개 중에서 소수가 몇 개인지 찾아서 출력하는 프로그램을 작성하시오. 입력 첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다. 출력 주어진 수들 중 소수의 개수를 출력한다. 답 def prime_number(x): for i in range(2, x): if x % i == 0: return None return x n = int(input()) numbers = map(int, input().split()) prime_list = [] for i in numbers: a = prime_number(i) prime_list.append(a) prime_list = [x for x in prime_list i.. 2022. 9. 15.
기본수학1 (10250, 2775, 2839, 10757) 10250 문제 ACM 호텔 매니저 지우는 손님이 도착하는 대로 빈 방을 배정하고 있다. 고객 설문조사에 따르면 손님들은 호텔 정문으로부터 걸어서 가장 짧은 거리에 있는 방을 선호한다고 한다. 여러분은 지우를 도와 줄 프로그램을 작성하고자 한다. 즉 설문조사 결과 대로 호텔 정문으로부터 걷는 거리가 가장 짧도록 방을 배정하는 프로그램을 작성하고자 한다. 문제를 단순화하기 위해서 호텔은 직사각형 모양이라고 가정하자. 각 층에 W 개의 방이 있는 H 층 건물이라고 가정하자 (1 ≤ H, W ≤ 99). 그리고 엘리베이터는 가장 왼쪽에 있다고 가정하자(그림 1 참고). 이런 형태의 호텔을 H × W 형태 호텔이라고 부른다. 호텔 정문은 일층 엘리베이터 바로 앞에 있는데, 정문에서 엘리베이터까지의 거리는 무시한.. 2022. 9. 14.
기본수학1 (1712, 2292, 1193, 2869) 1712 문제 월드전자는 노트북을 제조하고 판매하는 회사이다. 노트북 판매 대수에 상관없이 매년 임대료, 재산세, 보험료, 급여 등 A만원의 고정 비용이 들며, 한 대의 노트북을 생산하는 데에는 재료비와 인건비 등 총 B만원의 가변 비용이 든다고 한다. 예를 들어 A=1,000, B=70이라고 하자. 이 경우 노트북을 한 대 생산하는 데는 총 1,070만원이 들며, 열 대 생산하는 데는 총 1,700만원이 든다. 노트북 가격이 C만원으로 책정되었다고 한다. 일반적으로 생산 대수를 늘려 가다 보면 어느 순간 총 수입(판매비용)이 총 비용(=고정비용+가변비용)보다 많아지게 된다. 최초로 총 수입이 총 비용보다 많아져 이익이 발생하는 지점을 손익분기점(BREAK-EVEN POINT)이라고 한다. A, B, C.. 2022. 9. 13.
문자열(1152, 2908, 5622, 2941, 1316) 1152 문제 영어 대소문자와 공백으로 이루어진 문자열이 주어진다. 이 문자열에는 몇 개의 단어가 있을까? 이를 구하는 프로그램을 작성하시오. 단, 한 단어가 여러 번 등장하면 등장한 횟수만큼 모두 세어야 한다. 입력 첫 줄에 영어 대소문자와 공백으로 이루어진 문자열이 주어진다. 이 문자열의 길이는 1,000,000을 넘지 않는다. 단어는 공백 한 개로 구분되며, 공백이 연속해서 나오는 경우는 없다. 또한 문자열은 공백으로 시작하거나 끝날 수 있다. 출력 첫째 줄에 단어의 개수를 출력한다. 답 sentence = input().split() print(len(sentence)) sentence = input() print(sentence.count(" ")+1) 이라고 했었는데 문제를 읽어보니 문자열은 .. 2022. 9. 11.
문자열(11654, 11720, 10809, 2675, 1157) 11654 문제 알파벳 소문자, 대문자, 숫자 0-9중 하나가 주어졌을 때, 주어진 글자의 아스키 코드값을 출력하는 프로그램을 작성하시오. 입력 알파벳 소문자, 대문자, 숫자 0-9 중 하나가 첫째 줄에 주어진다. 출력 입력으로 주어진 글자의 아스키 코드 값을 출력한다. 답 asc = input() print(ord(asc)) 아스키코드를 구하는 함수가 있었던것 같아서 구글링을 해봤다! 역시나 있구만..!!! ord() 함수가 바로 그것!! chr() 함수는 그 반대를 계산해준다! 아스키코드에 해당하는 숫자를 입력하면 그 문자열을 출력한다! ex) ord(0) = 48, chr(4) = 0 11720 문제 N개의 숫자가 공백 없이 쓰여있다. 이 숫자를 모두 합해서 출력하는 프로그램을 작성하시오. 입력 첫.. 2022. 9. 10.
함수(15596, 4673, 1065) 15596 문제 정수 n개가 주어졌을 때, n개의 합을 구하는 함수를 작성하시오. 작성해야 하는 함수는 다음과 같다. a: 합을 구해야 하는 정수 n개가 저장되어 있는 리스트 (0 ≤ a[i] ≤ 1,000,000, 1 ≤ n ≤ 3,000,000) 리턴값: a에 포함되어 있는 정수 n개의 합 (정수) 답 1) def solve(a): num = 0 for i in a: num += i return num 2) def solve(a): return sum(a) input으로 받아와야되나 이것저것 시도해보다가 런타임에러 잔뜩 때려맞아따.. 이걸 원한거였구나!! 4673 문제 셀프 넘버는 1949년 인도 수학자 D.R. Kaprekar가 이름 붙였다. 양의 정수 n에 대해서 d(n)을 n과 n의 각 자리수를.. 2022. 9. 7.
1차원 배열(10818, 2562, 3052, 1546, 8958, 4344) 10818 문제 N개의 정수가 주어진다. 이때, 최솟값과 최댓값을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 정수의 개수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 N개의 정수를 공백으로 구분해서 주어진다. 모든 정수는 -1,000,000보다 크거나 같고, 1,000,000보다 작거나 같은 정수이다. 출력 첫째 줄에 주어진 정수 N개의 최솟값과 최댓값을 공백으로 구분해 출력한다. 답 1) import sys n = int(sys.stdin.readline()) a = list(map(int, sys.stdin.readline().split())) print(min(a), max(a)) 2) import sys a = int(sys.stdin.readline()) lst= list.. 2022. 9. 6.
반복문(2438, 2439, 10871, 10952, 10951, 1110) 2438 문제 첫째 줄에는 별 1개, 둘째 줄에는 별 2개, N번째 줄에는 별 N개를 찍는 문제 입력 첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다. 출력 첫째 줄부터 N번째 줄까지 차례대로 별을 출력한다. 답 import sys a = int(sys.stdin.readline()) for i in range(a): print('*'*(i+1)) input 대신 int(sys.stdin.readine()) 쓰기 2439 문제 첫째 줄에는 별 1개, 둘째 줄에는 별 2개, N번째 줄에는 별 N개를 찍는 문제 하지만, 오른쪽을 기준으로 정렬한 별(예제 참고)을 출력하시오. 입력 첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다. 출력 첫째 줄부터 N번째 줄까지 차례대로 별을 출력한다. 답 import sys.. 2022. 9. 5.
반복문(2739, 10950, 8393, 25304, 15552, 11021, 11022) 2739 문제 N을 입력받은 뒤, 구구단 N단을 출력하는 프로그램을 작성하시오. 출력 형식에 맞춰서 출력하면 된다. 입력 첫째 줄에 N이 주어진다. N은 1보다 크거나 같고, 9보다 작거나 같다. 출력 출력형식과 같게 N*1부터 N*9까지 출력한다. 답 1) a = int(input()) for i in range(1, 10): print(a, '*', i, '=', a*i) 2) a = int(input()) for i in range(1, 10): print(f"{a} * {i} = {a * i}") print(a, '*', i, '=', a*i) 이렇게 쓸 수도 있지만 print(f"{a} * {i} = {a * i}") 이렇게 쓸 수도 있다는것!! 10950 문제 두 정수 A와 B를 입력받은 다음.. 2022. 9. 3.
조건문(1330, 9498, 2753, 14681, 2884, 2525, 2480) 1330 문제 두 정수 A와 B가 주어졌을 때, A와 B를 비교하는 프로그램을 작성하시오. 입력 첫째 줄에 A와 B가 주어진다. A와 B는 공백 한 칸으로 구분되어져 있다. 출력 첫째 줄에 다음 세 가지 중 하나를 출력한다. A가 B보다 큰 경우에는 '>'를 출력한다. A가 B보다 작은 경우에는 ' 2022. 9. 2.
728x90