분류 전체보기

문제 풀이 부동소수점 문제로 인해 컴퓨터에서 단순한 나누기 방식으로는 21번째 자리까지 정확하게 출력할 수 없다.인간이 사고하는 것과 같은 방법으로 컴퓨터에게 연산을 하게끔 코드를 작성하면 답을 출력할 수 있다. 코드
11059번: 크리 문자열def main(): s = list(input().strip()) n = len(s) flag = 0 dp = [0]* n dp[0] = int(s[0]) for i in range(1,n): dp[i] = dp[i-1]+int(s[i]) # print(dp) if n % 2 > 0 : n-=1 while n>0: for i in range(len(s)-n+1): x = n //2 +i # 절반이 존재하는 위치. 8자리면 4. x-1과 x사이가 절반이겟지... # print(x,i,n) # print(dp[x-1] ,dp[n+i-1]-dp..
문제666은 종말을 나타내는 수라고 한다. 따라서, 많은 블록버스터 영화에서는 666이 들어간 제목을 많이 사용한다. 영화감독 숌은 세상의 종말 이라는 시리즈 영화의 감독이다. 조지 루카스는 스타워즈를 만들 때, 스타워즈 1, 스타워즈 2, 스타워즈 3, 스타워즈 4, 스타워즈 5, 스타워즈 6과 같이 이름을 지었고, 피터 잭슨은 반지의 제왕을 만들 때, 반지의 제왕 1, 반지의 제왕 2, 반지의 제왕 3과 같이 영화 제목을 지었다. 하지만 숌은 자신이 조지 루카스와 피터 잭슨을 뛰어넘는다는 것을 보여주기 위해서 영화 제목을 좀 다르게 만들기로 했다.종말의 수란 어떤 수에 6이 적어도 3개 이상 연속으로 들어가는 수를 말한다. 제일 작은 종말의 수는 666이고, 그 다음으로 큰 수는 1666, 2666,..
문제https://www.acmicpc.net/problem/2230 풀이1. 수열 오름차순 정렬2. 투 포인터로 탐색3. arr[right] - arr[left]가 M 이상이 되는 순간 최소 차이 후보로 갱신4. arr[right] - arr[left] input = __import__('sys').stdin.readlineN, M = map(int, input().split())arr = [int(input()) for _ in range(N)]arr.sort()left = 0right = 0min_diff = float('inf')while right right: right = leftprint(min_diff)
문제 https://www.acmicpc.net/problem/10211 크기 N인 정수형 배열 X가 있을 때, X의 부분 배열(X의 연속한 일부분) 중 각 원소의 합이 가장 큰 부분 배열을 찾는 Maximum subarray problem(최대 부분배열 문제)은 컴퓨터 과학에서 매우 잘 알려져 있다.여러분은 N과 배열 X가 주어졌을 때, X의 maximum subarray의 합을 구하자. 즉, max1 ≤ i ≤ j ≤ N (X[i]+...+X[j])를 구하자. 입력 입력 파일의 첫 번째 줄에 테스트 케이스의 수를 의미하는 자연수 T가 주어진다. 그 다음에는 T개의 테스트 케이스가 주어진다.각 테스트케이스 별로 첫 번째 줄에 배열의 크기 N이 주어진다. (1 ≤ N ≤ 1,000)그리고 두 번째 줄에..
문제알고리즘해당 배열의 모든 정수쌍의 곱의 합을 구하는 문제이다. 배열이 500000개가 최대이므로 반복문 2개를 사용하면 시간초과가 나오게 된다.이때, 누적합을 사용해주면 된다. 1그러면 누적합을 먼저 계산해주고, 반복문을 통해 i를 설정해준다음에 누적합계산을 통해 (A[i+1] + ... + A[n])을 찾고 곱해주면 된다.코드import sysinput = sys.stdin.readlinen = int(input())arr = list(map(int,input().split()))prefix = [0]*(n+1)for i in range(1,n+1): prefix[i] = prefix[i-1] + arr[i-1]ans = 0for i in range(1,n): ans = (ans + ar..
태상이의 훈련소 생활문제2020년 5월 14일 논산훈련소에 입대한 태상이는 첫 총기 훈련에서 가스 조절기를 잃어버리는 중대한 실수를 범했다. 그로 인해, 태상이는 조교들에게 눈총을 받게 되었다. 조교들은 태상이에게 연병장(운동장)의 흙을 옮기는 일을 주고 제대로 수행하지 못하면 징계를 내리려고 한다.연병장은 일렬로 이어진 N개의 칸으로 이루어져 있으며 각 칸마다 높이를 가지고 있고, 첫 번째 칸부터 순서대로 1번, 2번, 3번, ..., N번 칸으로 명칭이 붙어있다. 조교들은 총 M명이 있으며, 각 조교들은 태상이에게 a번 칸부터 b번 칸까지 높이 k만큼 흙을 덮거나 파내라고 지시한다. 흙은 주변 산에서 얼마든지 구할 수 있으므로 절대로 부족하지 않다.태상이는 각 조교의 지시를 각각 수행하면, 다른 조교..
문제알파벳 소문자와 대문자로만 이루어진 길이가 N인 단어가 주어진다.한 줄에 10글자씩 끊어서 출력하는 프로그램을 작성하시오.입력첫째 줄에 단어가 주어진다. 단어는 알파벳 소문자와 대문자로만 이루어져 있으며, 길이는 100을 넘지 않는다. 길이가 0인 단어는 주어지지 않는다.출력입력으로 주어진 단어를 열 개씩 끊어서 한 줄에 하나씩 출력한다. 단어의 길이가 10의 배수가 아닌 경우에는 마지막 줄에는 10개 미만의 글자만 출력할 수도 있다문제문자열을 한 줄 입력받음.input()을 사용해서 문자열을 통째로 입력받음.10글자씩 자르기 위해 반복문을 돌림.range(0, len(문자열), 10)을 사용해 10칸씩 건너뛰며 반복.슬라이싱을 통해 해당 구간의 10글자를 출력.문자열[i:i+10]처럼 범위를 지정해..
13371번: Dolphindef gkatn(n): left, right = 1, 65536 while left right: mid = (left + right) // 2 total = 3 * mid * (mid + 1) // 2 if total >= n: right = mid else: left = mid + 1 k = left yest = 3*(k-1)*k//2 idx = n- yest - 1 if idx k: return f"{k} dolphin" if k == 1 else f"{k} dolphins" elif idx 2 * k: retu..
문제https://www.acmicpc.net/problem/15686풀이1. 모든 치킨 집 중에서 M개를 고름.2. M개를 고른 case마다 치킨 거리를 계산.3. 최소 거리를 갱신4. 위 과정을 백트래킹으로 완전 탐색하며 답을 구함. input = __import__('sys').stdin.readlinen, m = map(int, input().split())li = [list(map(int, input().split())) for _ in range(n)]h = []c = []for i in range(n): for j in range(n): if li[i][j] == 1: h.append((i, j)) elif li[i][j] == 2: ..
[코드]#include using namespace std;int d(int n) { //n을 생성자로 하여, n과 n의 각 자리수를 더하는 함수 int sum = n; while (n != 0) { sum += n % 10; n = n / 10; } return sum;}int main() { int arr[10001] = { 0 }; for (int i = 1; i https://www.acmicpc.net/problem/4673문제셀프 넘버는 1949년 인도 수학자 D.R. Kaprekar가 이름 붙였다. 양의 정수 n에 대해서 d(n)을 n과 n의 각 자리수를 더하는 함수라고 정의하자. 예를 들어, d(75) = 75+7+5 = 87이다.양의 정수 n이 주어졌을 때, 이 수를 시작해서 n, d..
문제N×M크기의 직사각형이 있다. 각 칸에는 한 자리 숫자가 적혀 있다. 이 직사각형에서 꼭짓점에 쓰여 있는 수가 모두 같은 가장 큰 정사각형을 찾는 프로그램을 작성하시오. 이때, 정사각형은 행 또는 열에 평행해야 한다.입력첫째 줄에 N과 M이 주어진다. N과 M은 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에 수가 주어진다.출력첫째 줄에 정답 정사각형의 크기를 출력한다.코드n,m = map(int,input().split())a = min(n,m)I = []for _ in range(n) : I.append(list(map(int, list(input().strip()))))for size in range(a, 0, -1): for i in range(n - size + 1):..
KauKoala
'분류 전체보기' 카테고리의 글 목록 (3 Page)