baekjoon73 백준 알고리즘 2580번: 스도쿠 (Python) 문제 정보 2580번: 스도쿠 스도쿠는 18세기 스위스 수학자가 만든 '라틴 사각형'이랑 퍼즐에서 유래한 것으로 현재 많은 인기를 누리고 있다. 이 게임은 아래 그림과 같이 가로, 세로 각각 9개씩 총 81개의 작은 칸으로 이루 www.acmicpc.net 핵심 경우의 수가 엄청나게 많기 때문에, 파이썬의 경우 특히 시간초과에 대한 고민을 하면서 푸는것이 좋음 또한, 어떤식으로 풀어갈지 잡고 가는것이 가장 중요한 것 같다 풀이 문자열을 입력받아 2차원 정수형 배열을 만든다. 배열의 이름은 Pane 이를 뒤집은 배열(행-열) rPane을 만들어 준다 (열에 같은 수가 존재하는지 확인) 배열의 원소 중 0을 가진 좌표(빈 공간)을 blank 배열에 좌표 형태로 저장한다 해당 좌표에 올 수 있는 수를 계산하.. 알고리즘/Python 2023. 6. 27. 백준 알고리즘 2661번: 좋은 수열 (Python) 문제 정보 2661번: 좋은수열 첫 번째 줄에 1, 2, 3으로만 이루어져 있는 길이가 N인 좋은 수열들 중에서 가장 작은 수를 나타내는 수열만 출력한다. 수열을 이루는 1, 2, 3들 사이에는 빈칸을 두지 않는다. www.acmicpc.net 핵심 좋은 수열인지 검사할 때, 나는 처음에 예시로 나온 나쁜 수열의 모든 경우의 수를 계산하려고 코드를 짜고 있었다 하지만, 여기서 핵심은 수열을 만들어 나갈 때 나는 좋은 수열을 만들어 나가는 것이다 다시 말하면, 7이라는 N이 주어졌고 6개의 숫자로 이루어진 수열이 만들어졌으며 1개의 추가할 숫자가 남아있다고 한다면 내가 만들었던 길이 6을 가지는 수열은 이미 좋은 수열이기 때문에 그들 사이를 검사하려고 노력하지 않아도 된다는 것이다 예를 들어서 예제 입력처.. 알고리즘/Python 2023. 6. 26. 백준 알고리즘 15686번: 치킨 배달 (Python) 문제 정보 15686번: 치킨 배달 크기가 N×N인 도시가 있다. 도시는 1×1크기의 칸으로 나누어져 있다. 도시의 각 칸은 빈 칸, 치킨집, 집 중 하나이다. 도시의 칸은 (r, c)와 같은 형태로 나타내고, r행 c열 또는 위에서부터 r번째 칸 www.acmicpc.net 핵심 모든 치킨집들 중 M개의 치킨집을 갖는 부분집합들을 구해서, 각 집까지의 최소 치킨 거리를 갖는 부분집합을 구하기 풀이 from sys import stdin from itertools import combinations N, M = map(int, stdin.readline().split()) house = [] chicken = [] for i in range(N): row = list(map(int, stdin.readl.. 알고리즘/Python 2023. 6. 26. 백준 알고리즘 2609번: 최대공약수와 최소공배수 문제 정보 2609번: 최대공약수와 최소공배수 첫째 줄에는 입력으로 주어진 두 수의 최대공약수를, 둘째 줄에는 입력으로 주어진 두 수의 최소 공배수를 출력한다. www.acmicpc.net 핵심 유클리드 호제법을 이용한 최대공약수와 최소공배수를 구한다 유클리드 호제법에 대한 간단한 설명은 다음 게시물에서 확인할 수 있다 유클리드 호제법: 두 수의 최대공약수 구하기 유클리드 호제법이란? 두 개의 자연수의 최대공약수(GCD, Greatest Common Divisor)를 구하는 방법 중 하나로, 고대 그리스 수학자인 유클리드가 제안한 알고리즘으로, 매우 간단하면서 효과적인 방법 dduneon.tistory.com 풀이 재귀호출을 사용한 풀이 from sys import stdin N, M = map(int,.. 알고리즘/Python 2023. 6. 19. 백준 알고리즘 1929번: 소수 구하기 (Python) 문제 정보 1929번: 소수 구하기 첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다. www.acmicpc.net 핵심 앞서 설명한 에라토스테네스의 체를 활용하여 문제를 풀이해야 함 해당 글은 아래 참고 링크를 확인하면 될것 같다 풀이 from sys import stdin M, N = map(int, stdin.readline().split()) prime = [True for _ in range(N+1)] prime[0], prime[1] = False, False for i in range(2, int(N**0.5)+1): if prime[i]: j = 2 while i*j 알고리즘/Python 2023. 6. 19. 이전 1 ··· 7 8 9 10 11 12 13 ··· 15 다음