백준

알고리즘/BOJ

[백준/파이썬] 16509번 장군

https://www.acmicpc.net/problem/16509 문제 해석 상이 움직여서 왕을 잡는 최소 횟수를 구하는 문제이다. 코드 from collections import deque input = __import__('sys').stdin.readline # 16509 장군 arr = [[0] * 9 for _ in range(10)] visit = [[0] * 9 for _ in range(10)] dx, dy = [-3, -3, -2, -2, 2, 2, 3, 3], [-2, 2, -3, 3, -3, 3, -2, 2] r, c = map(int, input().split()) a, b = map(int, input().split()) arr[a][b] = 1 # 움직일 수 있는지 확인하는 함..

알고리즘/BOJ

[백준/파이썬] 13164번 행복 유치원

https://www.acmicpc.net/problem/13164 13164번: 행복 유치원 입력의 첫 줄에는 유치원에 있는 원생의 수를 나타내는 자연수 N(1 ≤ N ≤ 300,000)과 나누려고 하는 조의 개수를 나타내는 자연수 K(1 ≤ K ≤ N)가 공백으로 구분되어 주어진다. 다음 줄에는 원생들 www.acmicpc.net 문제 해석 유치원생들이 내림차순의 키 순서대로 주어진다. 유치원들은 1명 이상으로 조를 구성할 수 있을 때 k개 이하의 조를 구성할 때, 해당 조원의 키차이만큼 티셔츠를 맞추는 비용이 소모된다. 비용이 최소가 되는 값을 구하는 문제이다. 코드 input = __import__('sys').stdin.readline n, k = map(int, input().split()) ..

알고리즘/BOJ

[백준/파이썬] 16234번 인구 이동

https://www.acmicpc.net/problem/16234 16234번: 인구 이동 N×N크기의 땅이 있고, 땅은 1×1개의 칸으로 나누어져 있다. 각각의 땅에는 나라가 하나씩 존재하며, r행 c열에 있는 나라에는 A[r][c]명이 살고 있다. 인접한 나라 사이에는 국경선이 존재한다. 모 www.acmicpc.net 문제 해석 n * n 크기의 땅이 존재한다. 각 땅에는 인구수가 담겨 있다. 각 땅은 하나의 나라이다. 인구 이동이 시작되면 다음과 같은 과정이 일어난다. 인접한 나라, 즉 국경선을 공유하는 나라의 인구수 차이가 주어진 L이상 R이하라면 국경선이 열린다. 같은날 모든 국경선을 열어준다. 국경선이 모두 열리면 인구 이동이 시작된다. 인구 이동은 국경선이 열린 영역의 모든 나라의 인구수..

알고리즘/BOJ

[백준/파이썬] 1090번 체커

https://www.acmicpc.net/problem/1090 1090번: 체커 N개의 체커가 엄청 큰 보드 위에 있다. i번 체커는 (xi, yi)에 있다. 같은 칸에 여러 체커가 있을 수도 있다. 체커를 한 번 움직이는 것은 그 체커를 위, 왼쪽, 오른쪽, 아래 중의 한 방향으로 한 칸 www.acmicpc.net 문제 해석 n개의 체커가 주어진다. 1 ~ n개를 골라 맨해튼 거리가 최소가 되는 좌표의 각 최소 거리의 합을 구하는 문제이다. 코드 input = __import__('sys').stdin.readline # 1 ~ n 개를 골라 맨해튼 거리가 최소가 되는 좌표의 최소 거리를 구하여라 n = int(input()) arr = [] _xarr = [] _yarr = [] for _ in..

알고리즘/BOJ

[백준/파이썬] 19590번 비드맨

https://www.acmicpc.net/problem/19590 19590번: 비드맨 구슬을 엄청 좋아하는 비드맨이 있다. 구슬만 보면 갖고 싶어 하는 비드맨은 오늘도 갖고 싶은 구슬을 발견했다. 그러나 비드맨은 현재 구슬을 너무 많이 갖고 있기 때문에 더 이상 구슬을 가질 www.acmicpc.net 문제 해석 n개의 종류의 구슬의 갯수가 주어진다. 종류가 서로 다른 구슬 2종류를 부딪혀 구슬을 깨뜨릴 수 있다. 구슬을 서로 부딪혀 최소로 남개되는 구슬의 수를 구하여라. 코드 input = __import__('sys').stdin.readline n = int(input()) arr = [] for _ in range(n): arr.append(int(input())) _max = max(arr)..

알고리즘/BOJ

[백준/파이썬] 16236번 아기 상어

https://www.acmicpc.net/problem/16236 16236번: 아기 상어 N×N 크기의 공간에 물고기 M마리와 아기 상어 1마리가 있다. 공간은 1×1 크기의 정사각형 칸으로 나누어져 있다. 한 칸에는 물고기가 최대 1마리 존재한다. 아기 상어와 물고기는 모두 크기를 가 www.acmicpc.net 문제 해석 9에 위치한 아기 상어가 있다. 아기 상어는 처음 크기가 2 이며, 크기가 자신보다 작은 물고기만 먹을 수 있다. 자신의 크기만큼 물고기를 먹으면 크기가 1 증가한다. 즉 크기가 2 일때 물고기를 두번 먹으면 3으로 커진다. 아기 상어는 자신보다 큰 물고기를 지나갈 수 없으며 자신과 크기가 같은 물고기는 지나갈 수 있다. 가장 가까운 물고기, 가장 위에, 가장 왼쪽에 존재하는 물..

알고리즘/BOJ

[백준/파이썬] 16953번 A → B

https://www.acmicpc.net/problem/16953 문제 해석 정수 A를 B로 바꾸는 문제이다. 가능한 연산은 2를 곱하거나, 가장 오른쪽에 1을 추가한다. 코드 input = __import__('sys').stdin.readline a, b = map(int, input().split()) cnt = 1 # a -> b 가 아닌 b -> a 로 가면서 가능한지 확인 # 즉 2로 나눌수 있다면 나누고, 나눌 수 없는 1 이 있는 경우엔 1을 제거하고 // 10 을 통해 b -> a # 1이 아닌 홀수가 온다면 만들 수 없음. while 1: # 정답이라면 출력 if a == b: print(cnt) exit(0) # 1이라면 더이상 답을 구할 수 없으므로 -1 if b == 1: pri..

알고리즘/BOJ

[BOJ/python] 1339번 단어 수학

https://www.acmicpc.net/problem/1339 1339번: 단어 수학 첫째 줄에 단어의 개수 N(1 ≤ N ≤ 10)이 주어진다. 둘째 줄부터 N개의 줄에 단어가 한 줄에 하나씩 주어진다. 단어는 알파벳 대문자로만 이루어져있다. 모든 단어에 포함되어 있는 알파벳은 최대 www.acmicpc.net 문제 해석 대문자 알파벳으로 이루어진 단어가 N개 주어진다. 해당 알파벳의 종류는 10개 이하이며 같은 알파벳은 같은 숫자를 대입할 때, 주어진 알파벳을 모두 더해 가장 큰 수가 나오는 값을 구하는 문제이다. 코드 input = __import__('sys').stdin.readline n = int(input()) # 아스키 코드로 변환해 해당 값에 크기를 저장한 배열 arr = [0] *..

알고리즘/BOJ

[BOJ/python] 1439번 뒤집기

https://www.acmicpc.net/problem/1439 1439번: 뒤집기 다솜이는 0과 1로만 이루어진 문자열 S를 가지고 있다. 다솜이는 이 문자열 S에 있는 모든 숫자를 전부 같게 만들려고 한다. 다솜이가 할 수 있는 행동은 S에서 연속된 하나 이상의 숫자를 잡고 모 www.acmicpc.net 문제 해석 0과 1로 이루어진 문자열이 주어진다. 해당 문자열에서 연속된 문자열을 뒤집어서 1 또는 0으로만 이루어진 문자열을 만드는 뒤집는 최소 횟수를 구하는 문제이다. 코드 input = __import__('sys').stdin.readline s = input().strip() ans = 0 flag = s[0] for i in range(1, len(s)): if flag == s[i]:..

알고리즘/BOJ

[BOJ/python] 1946번 신입 사원

https://www.acmicpc.net/problem/1946 1946번: 신입 사원 첫째 줄에는 테스트 케이스의 개수 T(1 ≤ T ≤ 20)가 주어진다. 각 테스트 케이스의 첫째 줄에 지원자의 숫자 N(1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개 줄에는 각각의 지원자의 서류심사 성 www.acmicpc.net 문제 해석 지원자의 서류 성적, 면접 성적의 순위가 주어진다. 두 개의 성적 어느한 것도 다른 지원자보다 떨이지지 않으면 선발한다. 즉 다른 지원자의 순위보다 모두 낮다면 떨어진다. 선발할 수 있는 신입사원의 최대 인원수를 구하는 문제이다. 코드 input = __import__('sys').stdin.readline t = int(input()) for i in range(..