본문 바로가기

분류 전체보기

(172)
[알고리즘] 백준 1644 소수의 연속합 / pyhton https://www.acmicpc.net/problem/1644 1644번: 소수의 연속합 문제 하나 이상의 연속된 소수의 합으로 나타낼 수 있는 자연수들이 있다. 몇 가지 자연수의 예를 들어 보면 다음과 같다. 3 : 3 (한 가지) 41 : 2+3+5+7+11+13 = 11+13+17 = 41 (세 가지) 53 : 5+7+11+13+17 = 53 (두 www.acmicpc.net 검색해서 에라토스테네스의 체 코드를 이용해 N이하의 소수배열을 구하고(여기를 참고) 2003번문제와 동일한 방법으로 연속된 합을 구했다. def isPrime(n): a = [False,False] + [True]*(n-1) for i in range(2,n+1): if a[i]: primes.append(i) for j ..
[알고리즘] 백준 1806 부분합 / python https://www.acmicpc.net/problem/1806 1806번: 부분합 문제 10,000 이하의 자연수로 이루어진 길이 N짜리 수열이 주어진다. 이 수열에서 연속된 수들의 부분합 중에 그 합이 S 이상이 되는 것 중, 가장 짧은 것의 길이를 구하는 프로그램을 작성하시오. www.acmicpc.net N, S = map(int, input().split()) A = list(map(int, input().split())) left, right, hap, result, temp = 0, 0, A[0], 0, 0 while left = S: temp = right - left + 1 if result == 0: result = temp else: result = min(result, temp) ..
[알고리즘] 백준 2003 수들의 합 2 / python https://www.acmicpc.net/problem/2003 2003번: 수들의 합 2 첫째 줄에 N(1≤N≤10,000), M(1≤M≤300,000,000)이 주어진다. 다음 줄에는 A[1], A[2], …, A[N]이 공백으로 분리되어 주어진다. 각각의 A[x]는 30,000을 넘지 않는 자연수이다. www.acmicpc.net left, right를 설정해놓고 진행해나가는데 right는 left와 같거나 커야한다. left가 증가할 경우의 예외처리를 처음에 못했는데 left가 right보다 커지면 right를 left와 같게 해줘서 그 인덱스부터 시작할 수 있도록 해준다. (처음 시작하는 것 처럼) N, M = map(int, input().split()) A = list(map(int, in..
[알고리즘] 백준 2580 스도쿠 / pyhton, 백트랙킹 https://www.acmicpc.net/problem/2580 2580번: 스도쿠 스도쿠는 18세기 스위스 수학자가 만든 '라틴 사각형'이랑 퍼즐에서 유래한 것으로 현재 많은 인기를 누리고 있다. 이 게임은 아래 그림과 같이 가로, 세로 각각 9개씩 총 81개의 작은 칸으로 이루 www.acmicpc.net ✔ 풀이과정 스도쿠 규칙은 같은 행, 같은 열, 같은 3x3사각형 내에 1~9사이의 숫자가 겹치지 않게 배치하는 것이다. 이걸 시간초과가 나지 않게 확인하기 위해서 c1, c2, c3의 이차원 배열을 만들어서 0~8행열사각형에 1~9숫자가 존재하는지 직관적으로 체크해놓고 스도쿠 전체를 돌면서 규칙에 맞는지 확인한다. 스도쿠 이차원 배열을 돌때는 좌표값이 아닌 0, 1, 2, ...80 까지의 순서..
[알고리즘] 백준 9663 N-Queen / python, 백트랙킹 https://www.acmicpc.net/problem/9663 9663번: N-Queen N-Queen 문제는 크기가 N × N인 체스판 위에 퀸 N개를 서로 공격할 수 없게 놓는 문제이다. N이 주어졌을 때, 퀸을 놓는 방법의 수를 구하는 프로그램을 작성하시오. www.acmicpc.net ✔ 풀이과정 같은 열과 대각선에 안겹치게 퀸을 놓는 게임을 구현한다. 먼저, 같은 열을 체크한다. ck배열은 크기가 N이고, 퀸을 놓은 위치의 열을 표시한다. ck_col[2] = 1 대각선을 체크한다. 대각선의 총 개수는 7개 이므로 ck배열의 크기는 2 * N - 1 이다. 퀸을 놓은 대각선의 규칙을 찾아보면 위치가 행=1, 열=2 일 때 3이므로 ck_dig[행+열] = 1로 바꾼다. 반대쪽 대각선을 체크한..
[알고리즘] 백준 1248 맞춰봐 / python, 백트랙킹 https://www.acmicpc.net/problem/1248 1248번: 맞춰봐 문제 규현이는 멍청하다. 왜냐하면, 1~10까지 수 밖에 모르기 때문이다. 어느 날 규현이 옆을 지나가던 태석이가 규현이를 보고 이렇게 외쳤다. "빵빵!!" 규현이는 "아하!" 하면서 세상에는 빵이란 www.acmicpc.net ✔ 풀이과정 첫째 줄에 수열의 크기 N이 주어진다. 처음 N개의 문자는 부호 배열의 첫 번째 줄에 해당하고, 다음 N-1개의 문자는 두 번째 줄에 해당한다. 예제에서 첫번째줄 : -+0+ / 두번째줄 : +++ / 세번째줄 : -- / 네번째줄:+ 이다. A = [-2, 5, -3, 1]일 때, 부호의 뜻은 첫번째줄 : A[0], A[0]+A[1], A[0]+A[1]+A[2], A[0]+A[1]..
[알고리즘] 백준 1339 단어수학 / python https://www.acmicpc.net/problem/1339 1339번: 단어 수학 첫째 줄에 단어의 개수 N(1 ≤ N ≤ 10)이 주어진다. 둘째 줄부터 N개의 줄에 단어가 한 줄에 하나씩 주어진다. 단어는 알파벳 대문자로만 이루어져있다. 모든 단어에 포함되어 있는 알파벳은 최대 www.acmicpc.net ✔ 풀이과정 원래는 순열을 이용하는것같은데.. 파이썬은 딕셔너리를 사용해야지 시간초과가 안나나보다😢 딕셔너리에 각 숫자의 자리값을 저장해놓고 내림차순으로 정렬한다음, 제일 큰 수인 9부터 곱해준다. 이 예제로 설명하자면 dictionary = { G:100, C:1010, F:1, A:10000, D:100, E:10, B:1 } 이렇게 자리값을 10의 n승으로 저장한다. sort_list ..
[알고리즘] 백준 2529 부등호 / python https://www.acmicpc.net/problem/2529 2529번: 부등호 여러분은 제시된 부등호 관계를 만족하는 k+1 자리의 최대, 최소 정수를 첫째 줄과 둘째 줄에 각각 출력해야 한다. 단 아래 예(1)과 같이 첫 자리가 0인 경우도 정수에 포함되어야 한다. 모든 입력� www.acmicpc.net #순열이 오름차순일때 사용하는 함수 def next_permu(a): i = len(a)-1 while i > 0 and a[i-1] >= a[i]: i -= 1 if i