PS 47

[백준] 2468 - 안전 영역 (파이썬, Python)

https://www.acmicpc.net/problem/2468 2468번: 안전 영역 재난방재청에서는 많은 비가 내리는 장마철에 대비해서 다음과 같은 일을 계획하고 있다. 먼저 어떤 지역의 높이 정보를 파악한다. 그 다음에 그 지역에 많은 비가 내렸을 때 물에 잠기지 않는 www.acmicpc.net 한 지역의 높이 정보가 NXN 배열로 주어지고 비로 인해 물에 잠기지 않은 서로 연결된 영역을 안전 영역이라 할 때, 장마철에 안전 영역의 최대 개수를 구하는 것이 이 문제의 목표입니다. 이 문제에서는 내리는 비의 양은 입력으로 주어지지 않습니다. 하지만, 지역의 높이의 최소 높이와 최대 높이를 알 수 있으므로 비의 양을 적절히 조정하여 테스트를 진행할 수 있습니다. 해당 문제는 그래프 탐색 문제로, 저..

PS/Python 2021.10.10

[백준] 9012 - 괄호 (파이썬, Python)

https://www.acmicpc.net/problem/9012 9012번: 괄호 괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고 www.acmicpc.net 괄호로만 구성된 문자열 중 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(VPS)라고 합니다. 입력으로 주어진 문자열이 VPS인지 확인하는 것이 이 문제의 목표입니다. 이 문제는 문자열, 스택 문제로 분류됩니다. 저는 스택은 사용하지 않고, 단순히 괄호를 세는 방식으로 해결했습니다. 접근 방식 1. VPS인지 검사하기 위해 문자 하나 씩 검사를 수행합니다...

PS/Python 2021.09.30

[백준] 9205 - 맥주 마시면서 걸어가기 (파이썬, Python)

https://www.acmicpc.net/problem/9205 9205번: 맥주 마시면서 걸어가기 송도에 사는 상근이와 친구들은 송도에서 열리는 펜타포트 락 페스티벌에 가려고 한다. 올해는 맥주를 마시면서 걸어가기로 했다. 출발은 상근이네 집에서 하고, 맥주 한 박스를 들고 출발한다. www.acmicpc.net 출발지(상근이의 집)에서 출발해서 목적지(페스티벌 장소)까지 갈 수 있는지 판단하는 것이 이 문제의 목표입니다. 단, 현재 장소에서 거리가 맨해튼 거리로 1000 이하인 다음 장소(편의점 또는 목적지)로만 이동 가능하다는 조건이 있습니다. 이 문제는 그래프 탐색 문제입니다. 탐색은 너비 우선(BFS)으로 진행해도 되고, 깊이 우선(DFS)으로 탐색해도 되는 거 같습니다. 저는 깊이 우선 탐색..

PS/Python 2021.09.29

[백준] 1916 - 최소비용 구하기 (파이썬, Python)

https://www.acmicpc.net/problem/1916 1916번: 최소비용 구하기 첫째 줄에 도시의 개수 N(1 ≤ N ≤ 1,000)이 주어지고 둘째 줄에는 버스의 개수 M(1 ≤ M ≤ 100,000)이 주어진다. 그리고 셋째 줄부터 M+2줄까지 다음과 같은 버스의 정보가 주어진다. 먼저 처음에는 그 www.acmicpc.net 그래프에서 최소 비용을 구하는 문제로 다익스트라 알고리즘이 사용되는 대표 문제입니다. * 다익스트라 알고리즘: 한 노드에서 다른 모든 노드로의 최소 비용(=최단 거리)을 계산할 때 사용되는 방법 접근 방식 1. 입력된 모든 노드와 간선 정보를 저장 2. 다익스트라 알고리즘을 이용해서 출발 도시에서 모든 도시로의 최소 비용을 계산 3. 2단계에서 계산된 출발 도시에..

PS/Python 2021.09.28

[백준] 21610 - 마법사 상어와 비바라기 (파이썬, Python)

https://www.acmicpc.net/problem/21610 21610번: 마법사 상어와 비바라기 마법사 상어는 파이어볼, 토네이도, 파이어스톰, 물복사버그 마법을 할 수 있다. 오늘 새로 배운 마법은 비바라기이다. 비바라기를 시전하면 하늘에 비구름을 만들 수 있다. 오늘은 비바라기 www.acmicpc.net 이 문제는 구현 문제입니다. 입력으로 NXN 배열에 저장된 값이 주어지고, 주어진 문제 조건대로 명령을 수행한 후 마지막에 NXN 배열에 저장된 값의 합을 구하는 것이 이 문제의 목표입니다. 접근 방식 1. 입력 값을 입력받기 2. 초기 구름의 위치 정보를 1차원 배열인 cloud_list와 2차원 배열인 cloud_mat에 저장 cloud_list: 구름의 위치 정보(행, 열 값) 저장한..

PS/Python 2021.09.22

[Programmers] 합승 택시 요금 (파이썬, Python)

https://programmers.co.kr/learn/courses/30/lessons/72413 코딩테스트 연습 - 합승 택시 요금 6 4 6 2 [[4, 1, 10], [3, 5, 24], [5, 6, 2], [3, 1, 41], [5, 1, 24], [4, 6, 50], [2, 4, 66], [2, 3, 22], [1, 6, 25]] 82 7 3 4 1 [[5, 7, 9], [4, 6, 4], [3, 6, 1], [3, 2, 3], [2, 1, 6]] 14 6 4 5 6 [[2,6,6], [6,3,7], [4,6,7], [6,5,11], [2,5,12], [5,3,20], [2,4 programmers.co.kr 이 문제는 프로그래머스의 2021 KAKAO BLIND RECRUITMENT 문제집..

PS/Python 2021.09.21

[백준] 1920 - 수 찾기 (파이썬, Python)

https://www.acmicpc.net/problem/1920 1920번: 수 찾기 첫째 줄에 자연수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1 ≤ M ≤ 100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들 www.acmicpc.net 이 문제는 입력으로 저장해야 하는 N개의 숫자와 찾아야 하는 M개의 숫자가 주어지고, 각각의 찾아야 하는 수가 저장한 수 목록에 존재하는지 확인하는 것이 목표입니다. 문제를 해는 방법은 다양하게 존재하지만 저는 이분 탐색으로 문제를 해결했습니다. 전체 코드 제출 언어: Python3 시간: 600ms import sys def findNum(targ..

PS/Python 2021.09.19

[백준] 2644 - 촌수계산 (파이썬, Python)

https://www.acmicpc.net/problem/2644 2644번: 촌수계산 사람들은 1, 2, 3, …, n (1 ≤ n ≤ 100)의 연속된 번호로 각각 표시된다. 입력 파일의 첫째 줄에는 전체 사람의 수 n이 주어지고, 둘째 줄에는 촌수를 계산해야 하는 서로 다른 두 사람의 번호가 주어 www.acmicpc.net 그래프 문제입니다. 입력으로 부모-자식 관계가 주어지고 주어진 두 사람의 촌수를 구하는 것이 이 문제의 목표입니다. 저는 깊이 우선 탐색(dfs)으로 이 문제를 해결했습니다. 접근 방식 1. 입력으로 주어진 가계도를 2차원 배열에 저장합니다. 2. 촌수를 계산해야 하는 사람을 각각 p1, p2라고 할 때, p1을 시작으로 탐색을 진행합니다. 3. 현재 탐색하는 사람과 관계가 있..

PS/Python 2021.09.17

[백준] 15684 - 사다리 조작 (파이썬, Python)

https://www.acmicpc.net/problem/15684 15684번: 사다리 조작 사다리 게임은 N개의 세로선과 M개의 가로선으로 이루어져 있다. 인접한 세로선 사이에는 가로선을 놓을 수 있는데, 각각의 세로선마다 가로선을 놓을 수 있는 위치의 개수는 H이고, 모든 세로선 www.acmicpc.net 전체 코드 제출 언어: PyPy3 시간: 1400ms import sys def check_is_success(): global N, H, mat is_success = True for i in range(1, N+1): d = 0 idx_left, idx_right = i-1, i for j in range(H): if mat[j][idx_left]: d -= 1 idx_left -= 1 id..

PS/Python 2021.09.15

[Programmers] 신규 아이디 추천 (파이썬, Python)

https://programmers.co.kr/learn/courses/30/lessons/72410 코딩테스트 연습 - 신규 아이디 추천 카카오에 입사한 신입 개발자 네오는 "카카오계정개발팀"에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. "네오"에게 주어진 첫 업무는 새로 programmers.co.kr 전체 코드 import re def solution(new_id): answer = '' # 1단계 id = new_id.lower() # 2단계 id = re.sub("[^a-z0-9-_.]", "", id) # 3단계 id = re.sub("\.{2,}", ".", id) # 4단계 id = re.sub("^\.|\.$", "", id) # 5단계 i..

PS/Python 2021.09.10