Algorithm PS👩🏻💻/백준
-
[백준] 5430번: AC (Python)Algorithm PS👩🏻💻/백준 2023. 6. 28. 17:05
1. 문제 링크 https://www.acmicpc.net/problem/5430 5430번: AC 각 테스트 케이스에 대해서, 입력으로 주어진 정수 배열에 함수를 수행한 결과를 출력한다. 만약, 에러가 발생한 경우에는 error를 출력한다. www.acmicpc.net 2. 풀이 코드 출력 형태가 리스트가 아니라 string 형식이어서 뭐가 틀린지 찾느라 열받았던 문제^,,, import sys input = sys.stdin.readline tc = int(input()) result = [] for _ in range(tc): cmds = input().rstrip() length = int(input()) stack = input().rstrip()[1:-1].split(',') flag = Tr..
-
[백준] 3079번: 입국심사(이분탐색, Python)Algorithm PS👩🏻💻/백준 2023. 5. 30. 00:26
문제 링크https://www.acmicpc.net/problem/3079 3079번: 입국심사첫째 줄에 N과 M이 주어진다. (1 ≤ N ≤ 100,000, 1 ≤ M ≤ 1,000,000,000) 다음 N개 줄에는 각 심사대에서 심사를 하는데 걸리는 시간인 Tk가 주어진다. (1 ≤ Tk ≤ 109)www.acmicpc.net 풀이풀이 설명* 분류: 이진탐색인원수가 10억명, 시간도 10억초 까지의 범위이므로 이진탐색을 떠올린다.대체로 이진 탐색의 기준이 되는 건 구하고 싶은 변수이다. 지금은 시간을 출력하는 것이므로 기준을 시간(초)로 잡는다. 검사대 시간 배열 -> info시간을 기준으로 한다면 start = 가장 짧은 검사대 시간, end = (가장 긴 검사대 시간 * 사람 인원수) 로 하겠다..
-
[백준] 20444번: 색종이와 가위(이분탐색, Python)Algorithm PS👩🏻💻/백준 2023. 5. 29. 23:52
문제 링크https://www.acmicpc.net/problem/20444 20444번: 색종이와 가위첫 줄에 정수 n, k가 주어진다. (1 ≤ n ≤ 231-1, 1 ≤ k ≤ 263-1)www.acmicpc.net 풀이풀이 설명* 분류: 이진탐색n번의 가위질을 할때 만들어지는 조각의 경우의 수를 정하는 기준은 가로로 몇번, 세로로 몇번 자르는지에 따라 달라진다. 예를 들어, 3번 자를 경우1) 세로로 3번 자르는 경우 -> 4조각2)세로로 1번 가로로 2번 자르는 경우 -> 6조각이 나온다. 따라서 가로: row, 세로: col(n-row) 로 친다면, total(조각수) = (row + 1)(col + 1) 이므로,row를 기준으로 탐색한다고 하면 mid 값으로 설정할 수 있다.풀이 코드n, k..
-
[백준] 2470번: 두 용액(Python, Binary Search)Algorithm PS👩🏻💻/백준 2023. 5. 29. 22:37
문제 링크 https://www.acmicpc.net/problem/2470 2470번: 두 용액 첫째 줄에는 전체 용액의 수 N이 입력된다. N은 2 이상 100,000 이하이다. 둘째 줄에는 용액의 특성값을 나타내는 N개의 정수가 빈칸을 사이에 두고 주어진다. 이 수들은 모두 -1,000,000,000 이상 1,000,00 www.acmicpc.net 풀이 풀이 설명 * 분류: 이분탐색(?) 카테고리는 이분탐색이지만 정렬로도 해결 가능해서 딱히 쓰진 않았다.. 더했을 때, 가장 0에 가까운 조합 2개를 뽑는 것 --, ++, -+ 의 조합일 수 있음 -99 +99 와 같이 합이 0이 되려면 절대값이 같으면 된다. 그러므로 인접한 값을 더한 덧셈배열(diff) 만들어서 절대값을 기준으로 정렬한다. 이때..
-
[백준] 2141번: 우체국(Python)Algorithm PS👩🏻💻/백준 2023. 5. 22. 22:42
문제 링크 https://www.acmicpc.net/problem/2141 2141번: 우체국 첫째 줄에 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 X[1], A[1], X[2], A[2], …, X[N], A[N]이 주어진다. 범위는 |X[i]| ≤ 1,000,000,000, 1 ≤ A[i] ≤ 1,000,000,000 이며 모든 입력은 정수이다. www.acmicpc.net 풀이 풀이 설명 - 분류 : 그리디 & 누적합 처음엔 '공유기 설치(이진탐색)'문제와 비슷해서 이건 '거리', '사람 수' 둘다 고려해야하는 이진탐색인가? 로 시작했지만, 결국 거리는 정렬 말고는 필요없는 문제였다. 처음엔 이해가 안돼서 여러 풀이를 봤는데 다들 사람의 총합/2를 넘는 부분에 놓으면 된다고..
-
[백준] 2212번: 센서 (Python)Algorithm PS👩🏻💻/백준 2023. 5. 15. 16:37
문제 링크 https://www.acmicpc.net/problem/2212 2212번: 센서 첫째 줄에 센서의 개수 N(1 ≤ N ≤ 10,000), 둘째 줄에 집중국의 개수 K(1 ≤ K ≤ 1000)가 주어진다. 셋째 줄에는 N개의 센서의 좌표가 한 개의 정수로 N개 주어진다. 각 좌표 사이에는 빈 칸이 하나 있 www.acmicpc.net 풀이 알고리즘 [그리디] 여러 센서의 후보들을 묶는 것으로 생각하면 k개의 묶음을 만들면 된다. 센서를 오름차순하여 좌표 순으로 놓는다. ex. [1, 6, 9, 3, 6, 7] -> [1, 3, 6, 6, 7, 9] 원소간의 차를 표현한 리스트를 만든다. -> diff = [2, 3, 0, 1, 2] 2개의 묶음을 만들기 위해선 1개의 간격을 버리면 된다. -..
-
[백준] 21314번: 민겸 수(Python)Algorithm PS👩🏻💻/백준 2023. 5. 14. 14:29
문제 링크 https://www.acmicpc.net/problem/21314 21314번: 민겸 수 민겸 수 하나가 주어진다. 민겸 수는 대문자 M과 K로만 이루어진 문자열이며, 길이는 3,000을 넘지 않는다. www.acmicpc.net 풀이 풀이 설명 우선 문장에 K 포함 유무에 따라 나뉜다. K가 없는 경우 -> M만 있다는 뜻. result를 바로 구할 수 있다. ex. MMM인 경우 max: 111, min: 100 K가 있는 경우, K를 기준으로 나뉘기 수가 결정되므로 K의 위치를 담은 리스트(k_pos)를 전달해준다. def find_max(k_pos) # max 값을 찾는다. k를 포함하여 5∗10N 꼴로 정리한다. 문장의 끝이 k가 아니라면, m으로 끝난다는 뜻이므로 마지막 k의..
-
[백준] 2615번: 오목 (완전탐색, Python)Algorithm PS👩🏻💻/백준 2023. 5. 10. 02:32
문제https://www.acmicpc.net/problem/2615 2615번: 오목오목은 바둑판에 검은 바둑알과 흰 바둑알을 교대로 놓아서 겨루는 게임이다. 바둑판에는 19개의 가로줄과 19개의 세로줄이 그려져 있는데 가로줄은 위에서부터 아래로 1번, 2번, ... ,19번의 번호www.acmicpc.net 문제 풀이출력해야하는 제일 왼쪽(세로줄은 가장 위쪽) 좌표를 기준으로 [주 대각선, 세로줄, 가로줄, 부 대각선] 순으로 하여 4개의 방향을 탐색했다. (BFS)단, 조건으로 6개 연속인 바둑알은 승리가 아니므로, 연속된 조건의 count를 자신을 제외하고 각 방향으로 5번까지 진행한 후연속된 바둑알의 갯수가 4개인 경우(기준 좌표 제외)만 승리로 간주한다.n = 19blacks = []white..