본문 바로가기

코딩테스트

(30)
16. 백준 9663 (골드4) : N-Queen _ python풀이 / 브루트포스 문제N-Queen 문제는 크기가 N × N인 체스판 위에 퀸 N개를 서로 공격할 수 없게 놓는 문제이다.N이 주어졌을 때, 퀸을 놓는 방법의 수를 구하는 프로그램을 작성하시오.입력첫째 줄에 N이 주어진다. (1 ≤ N 출력첫째 줄에 퀸 N개를 서로 공격할 수 없게 놓는 경우의 수를 출력한다.예제 입력 1 복사8예제 출력 1 복사92 어떤 문제인지는 앞으로 제목에 적어둘 예정이다. *문제 해석 백트래킹하면 나오는 기본 문제인 N-Queen 문제다. 퀸이 서로를 공격할 수 없는 경우는 다음과 같다.1. 행과 열마다 한개의 퀸만 존재한다.2. 같은 대각선상에 퀸이 존재하지 않는다. '1'을 풀기 위해서는 각 행들을 하나의 리스트로 하고 리스트 별로 인덱스가 겹치지 않게 퀸을 배치하는 식으로 하면 될 것이다. ..
[Python] 순열과 조합 ( permutation, combination ) 순열 (permutation) 서로 다른 n개중 r개를 골라 순서를 정해 나열하는 가짓수를 의미한다. nPr 로 표기한다. 순서를 고려하기 때문에 만약 [A, B, C] 리스트가 있다면 [(A,B), (A,C), (B, C), (B, A), (C, A), (C, B)]가 나오게 된다. 요소가 동일 하더라도 순서가 다르면 다른 것으로 친다. *순서를 고려하며 중복은 허용하지 않는다. nPr = n! / (n-r)! python의 모듈 itertools를 통해 사용 가능하다. from itertools import permutationsarr = ['a','b','c']for i in permutatinos(arr,2): print(i) 단순 import permutations일 경우 사용시 itertool..
15. 백준 15686 (골드5) : 치킨배달 _ python풀이 문제크기가 N×N인 도시가 있다. 도시는 1×1크기의 칸으로 나누어져 있다. 도시의 각 칸은 빈 칸, 치킨집, 집 중 하나이다. 도시의 칸은 (r, c)와 같은 형태로 나타내고, r행 c열 또는 위에서부터 r번째 칸, 왼쪽에서부터 c번째 칸을 의미한다. r과 c는 1부터 시작한다.이 도시에 사는 사람들은 치킨을 매우 좋아한다. 따라서, 사람들은 "치킨 거리"라는 말을 주로 사용한다. 치킨 거리는 집과 가장 가까운 치킨집 사이의 거리이다. 즉, 치킨 거리는 집을 기준으로 정해지며, 각각의 집은 치킨 거리를 가지고 있다. 도시의 치킨 거리는 모든 집의 치킨 거리의 합이다.임의의 두 칸 (r1, c1)과 (r2, c2) 사이의 거리는 |r1-r2| + |c1-c2|로 구한다.예를 들어, 아래와 같은 지도를 갖..
14. 백준 2437 (골드2) : 저울 _ python풀이 문제하나의 양팔 저울을 이용하여 물건의 무게를 측정하려고 한다. 이 저울의 양 팔의 끝에는 물건이나 추를 올려놓는 접시가 달려 있고, 양팔의 길이는 같다. 또한, 저울의 한쪽에는 저울추들만 놓을 수 있고, 다른 쪽에는 무게를 측정하려는 물건만 올려놓을 수 있다. 무게가 양의 정수인 N개의 저울추가 주어질 때, 이 추들을 사용하여 측정할 수 없는 양의 정수 무게 중 최솟값을 구하는 프로그램을 작성하시오.예를 들어, 무게가 각각 3, 1, 6, 2, 7, 30, 1인 7개의 저울추가 주어졌을 때, 이 추들로 측정할 수 없는 양의 정수 무게 중 최솟값은 21이다. 입력첫 째 줄에는 저울추의 개수를 나타내는 양의 정수 N이 주어진다. N은 1 이상 1,000 이하이다. 둘째 줄에는 저울추의 무게를 나타내는 N개..
13. 백준 1202 (골드2) : 보석 도둑 _ python풀이 문제세계적인 도둑 상덕이는 보석점을 털기로 결심했다.상덕이가 털 보석점에는 보석이 총 N개 있다. 각 보석은 무게 Mi와 가격 Vi를 가지고 있다. 상덕이는 가방을 K개 가지고 있고, 각 가방에 담을 수 있는 최대 무게는 Ci이다. 가방에는 최대 한 개의 보석만 넣을 수 있다.상덕이가 훔칠 수 있는 보석의 최대 가격을 구하는 프로그램을 작성하시오.입력첫째 줄에 N과 K가 주어진다. (1 ≤ N, K ≤ 300,000)다음 N개 줄에는 각 보석의 정보 Mi와 Vi가 주어진다. (0 ≤ Mi, Vi ≤ 1,000,000)다음 K개 줄에는 가방에 담을 수 있는 최대 무게 Ci가 주어진다. (1 ≤ Ci ≤ 100,000,000)모든 숫자는 양의 정수이다.출력첫째 줄에 상덕이가 훔칠 수 있는 보석 가격의 합의 ..
12. 백준 12904 (골드5) : A와 B _ python풀이 문제수빈이는 A와 B로만 이루어진 영어 단어가 존재한다는 사실에 놀랐다. 대표적인 예로 AB (Abdominal의 약자), BAA (양의 울음 소리), AA (용암의 종류), ABBA (스웨덴 팝 그룹)이 있다.이런 사실에 놀란 수빈이는 간단한 게임을 만들기로 했다. 두 문자열 S와 T가 주어졌을 때, S를 T로 바꾸는 게임이다. 문자열을 바꿀 때는 다음과 같은 두 가지 연산만 가능하다.문자열의 뒤에 A를 추가한다.문자열을 뒤집고 뒤에 B를 추가한다.주어진 조건을 이용해서 S를 T로 만들 수 있는지 없는지 알아내는 프로그램을 작성하시오. 입력첫째 줄에 S가 둘째 줄에 T가 주어진다. (1 ≤ S의 길이 ≤ 999, 2 ≤ T의 길이 ≤ 1000, S의 길이 출력S를 T로 바꿀 수 있으면 1을 없으면 0을..