백준 153

[백준, SWEA] BOJ 14889 스타트와 링크, swea4012 요리사

https://acmicpc.net/problem/14889 14889번: 스타트와 링크 예제 2의 경우에 (1, 3, 6), (2, 4, 5)로 팀을 나누면 되고, 예제 3의 경우에는 (1, 2, 4, 5), (3, 6, 7, 8)로 팀을 나누면 된다. www.acmicpc.net n = int(input()) s_ij = [list(map(int, input().split())) for i in range(n)] min_val = 100 * 20 visit = [0] * n def comb(index=0, arr=[]): if index == (n // 2): global min_val value = total_chk(arr) if min_val > value: min_val = value else:..

STUDY/Algorithm 2021.03.10

[백준] 14888 연산자 끼워넣기

https://acmicpc.net/problem/14888 14888번: 연산자 끼워넣기 첫째 줄에 수의 개수 N(2 ≤ N ≤ 11)가 주어진다. 둘째 줄에는 A1, A2, ..., AN이 주어진다. (1 ≤ Ai ≤ 100) 셋째 줄에는 합이 N-1인 4개의 정수가 주어지는데, 차례대로 덧셈(+)의 개수, 뺄셈(-)의 개수, www.acmicpc.net n = int(input()) n_list = list(map(int, input().split())) operator = list(map(int, input().split())) min_val = 1000000000 max_val = -1000000000 def backtrack(index, number=n_list[0]): if index == ..

STUDY/Algorithm 2021.03.10

[백준] 9663 N-Queen

https://acmicpc.net/problem/9663 9663번: N-Queen N-Queen 문제는 크기가 N × N인 체스판 위에 퀸 N개를 서로 공격할 수 없게 놓는 문제이다. N이 주어졌을 때, 퀸을 놓는 방법의 수를 구하는 프로그램을 작성하시오. www.acmicpc.net n = int(input()) matrix = [[0] * n for _ in range(n)] result = 0 # 1: 퀸, 0: 놓을수 있는 자리, -1: 놓을수 없는 자리 def backtrack(index, arr=[]): if index == n: global result result += 1 else: for i in range(n): # 한줄에서 하나씩만 보면 됨 if i in arr: continue ..

STUDY/Algorithm 2021.03.10

[백준] 2580 스도쿠

https://acmicpc.net/problem/2580 2580번: 스도쿠 스도쿠는 18세기 스위스 수학자가 만든 '라틴 사각형'이랑 퍼즐에서 유래한 것으로 현재 많은 인기를 누리고 있다. 이 게임은 아래 그림과 같이 가로, 세로 각각 9개씩 총 81개의 작은 칸으로 이루 www.acmicpc.net import sys input = sys.stdin.readline sudoku = [] zero_list = [] for i in range(9): tmp = list(map(int, input().split())) sudoku.append(tmp) for j in range(9): if tmp[j]: continue zero_list.append((i,j)) def backtrack(index): i..

STUDY/Algorithm 2021.03.09

[백준] 2589 보물섬

https://acmicpc.net/problem/2589 2589번: 보물섬 보물섬 지도를 발견한 후크 선장은 보물을 찾아나섰다. 보물섬 지도는 아래 그림과 같이 직사각형 모양이며 여러 칸으로 나뉘어져 있다. 각 칸은 육지(L)나 바다(W)로 표시되어 있다. 이 지도에서 www.acmicpc.net from collections import deque n, m = map(int, input().split()) _map = [ input() for i in range(n)] # n, m = 5, 7 # _map = ['WLLWWWL', 'LLLWLLL', 'LWLWLWW', 'LWLWLLL', 'WLLWLWW'] def bfs(x, y): q = deque() visited = [[0] * m for _..

STUDY/Algorithm 2021.03.08

[백준] 2468 안전영역

www.acmicpc.net/problem/2468 2468번: 안전 영역 재난방재청에서는 많은 비가 내리는 장마철에 대비해서 다음과 같은 일을 계획하고 있다. 먼저 어떤 지역의 높이 정보를 파악한다. 그 다음에 그 지역에 많은 비가 내렸을 때 물에 잠기지 않는 www.acmicpc.net 주어지는 것은 지역의 높이 정보이고, 내리는 비의 양은 6이다. 즉 6 이하의 높이를 가지고 있는 곳은 물에 잠기게 된다. (입력이 N밖에 주어지지 않았으므로 혹시 다른 문제에서 비의 양이 주어지면 값만 바꿔주면 된다.) 구해야하는 건 안전한 영역의 개수이다. dfs나 bfs를 사용하면 쉽게 구할수 있을 것이다. DFS나 BFS를 사용해서 구할수 있는 방법은 두가지 인데, 첫 번째는 물에 잠기는 영역을 만들고 안전영역..

STUDY/Algorithm 2021.03.06

[백준] 1759 암호만들기

www.acmicpc.net/problem/1759 1759번: 암호 만들기 첫째 줄에 두 정수 L, C가 주어진다. (3 ≤ L ≤ C ≤ 15) 다음 줄에는 C개의 문자들이 공백으로 구분되어 주어진다. 주어지는 문자들은 알파벳 소문자이며, 중복되는 것은 없다. www.acmicpc.net L, C = map(int, input().split()) char = input().split() char.sort() def comb(index=0, arr=[], limit=L): if index == limit: vowel = {'a','e','i','o','u'} vow, con = 0, 0 for i in range(limit): if arr[i] in vowel: vow += 1 else: con += ..

STUDY/Algorithm 2021.03.05

[백준] 3980 선발명단

www.acmicpc.net/problem/3980 3980번: 선발 명단 각각의 테스트 케이스에 대해서, 모든 포지션의 선수를 채웠을 때, 능력치의 합의 최댓값을 출력한다. 항상 하나 이상의 올바른 라인업을 만들 수 있다. www.acmicpc.net for tc in range(int(input())): player = [0] * 11 for i in range(11): player[i] = list(map(int,input().split())) visit = [0] * 11 max_val = 0 def comb(index=0, total=0): if index == 11: global max_val if max_val < total: max_val = total else: for i in range..

STUDY/Algorithm 2021.03.05

[백준] 6603 로또

www.acmicpc.net/problem/6603 6603번: 로또 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있다. 첫 번째 수는 k (6 < k < 13)이고, 다음 k개 수는 집합 S에 포함되는 수이다. S의 원소는 오름차순으로 www.acmicpc.net 로또 1등 한번만 받아보고싶습니다..... while True: k, *S = map(int, input().split()) if k == 0: break visited = [0] * k def lotto(index=0, arr=[]): if index == 6: print(*arr) return else: for i in range(index, k): if visited[i] == 0: if arr..

STUDY/Algorithm 2021.03.04

[백준] 2583 영역구하기

www.acmicpc.net/problem/2583 2583번: 영역 구하기 첫째 줄에 M과 N, 그리고 K가 빈칸을 사이에 두고 차례로 주어진다. M, N, K는 모두 100 이하의 자연수이다. 둘째 줄부터 K개의 줄에는 한 줄에 하나씩 직사각형의 왼쪽 아래 꼭짓점의 x, y좌표값과 오 www.acmicpc.net from collections import deque def bfs(row, col): q = deque() dr = [-1, 1, 0, 0] dc = [0, 0, -1, 1] q.append((row, col)) matrix[row][col] = 1 while q: nr, nc = q.popleft() for i in range(4): if 0

STUDY/Algorithm 2021.03.04