목록PS/Baekjoon (27)
DevYoon
link 🔗 https://www.acmicpc.net/problem/2573 문제 설명 지구 온난화로 인하여 북극의 빙산이 녹고 있다. 빙산을 그림 1과 같이 2차원 배열에 표시한다고 하자. 빙산의 각 부분별 높이 정보는 배열의 각 칸에 양의 정수로 저장된다. 빙산 이외의 바다에 해당되는 칸에는 0이 저장된다. 그림 1에서 빈칸은 모두 0으로 채워져 있다고 생각한다. 2 4 5 3 3 2 5 2 7 6 2 4 그림 1. 행의 개수가 5이고 열의 개수가 7인 2차원 배열에 저장된 빙산의 높이 정보 빙산의 높이는 바닷물에 많이 접해있는 부분에서 더 빨리 줄어들기 때문에, 배열에서 빙산의 각 부분에 해당되는 칸에 있는 높이는 일년마다 그 칸에 동서남북 네 방향으로 붙어있는 0이 저장된 칸의 개수만큼 줄어든다..
link 🔗 https://www.acmicpc.net/problem/11404 문제 n(2 ≤ n ≤ 100)개의 도시가 있다. 그리고 한 도시에서 출발하여 다른 도시에 도착하는 m(1 ≤ m ≤ 100,000)개의 버스가 있다. 각 버스는 한 번 사용할 때 필요한 비용이 있다. 모든 도시의 쌍 (A, B)에 대해서 도시 A에서 B로 가는데 필요한 비용의 최솟값을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 도시의 개수 n이 주어지고 둘째 줄에는 버스의 개수 m이 주어진다. 그리고 셋째 줄부터 m+2줄까지 다음과 같은 버스의 정보가 주어진다. 먼저 처음에는 그 버스의 출발 도시의 번호가 주어진다. 버스의 정보는 버스의 시작 도시 a, 도착 도시 b, 한 번 타는데 필요한 비용 c로 이루어져 있다. 시..
link 🔗 https://www.acmicpc.net/problem/5397 5397번: 키로거 첫째 줄에 테스트 케이스의 개수가 주어진다. 각 테스트 케이스는 한줄로 이루어져 있고, 강산이가 입력한 순서대로 길이가 L인 문자열이 주어진다. (1 ≤ L ≤ 1,000,000) 강산이가 백스페이스를 입 www.acmicpc.net 💬 > 와 의 경우 idx가 끝이 아닌 곳에 있을 때만 움직여준다. 💬 0: idx -= 1 elif word == '>': if idx 0: del result[idx-1] idx -= 1 else: result.insert(idx, word) idx += 1 pri..
link 🔗 https://www.acmicpc.net/problem/1717 1717번: 집합의 표현 첫째 줄에 n(1 ≤ n ≤ 1,000,000), m(1 ≤ m ≤ 100,000)이 주어진다. m은 입력으로 주어지는 연산의 개수이다. 다음 m개의 줄에는 각각의 연산이 주어진다. 합집합은 0 a b의 형태로 입력이 주어진다. 이는 www.acmicpc.net 💬 유니온 파인드 문제! 💬 유니온 파인드를 오랜만에 풀어서, 개념부터 다시 봐야 했다ㅠㅠ 💬 type이 1일 경우 union 함수 내에서 YES 혹은 NO를 구분한다. import sys input = sys.stdin.readline def find(n): if parents[n] == n: return n parents[n] = find(..
link 🔗 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 ✏️ 이분탐색 문제 ✏️ 분명 while문이 끝나야 하는데 자꾸 답이 안 나오고 돌아가서 당황했다. 찾았을 경우 answer를 1로 바꿔주고 break를 안 써준 게 원인이었다😅 N = int(input()) N_num = list(map(int, input().split())) M = int(input()) M_num = list(ma..
link 🔗 https://www.acmicpc.net/problem/2805 2805번: 나무 자르기 첫째 줄에 나무의 수 N과 상근이가 집으로 가져가려고 하는 나무의 길이 M이 주어진다. (1 ≤ N ≤ 1,000,000, 1 ≤ M ≤ 2,000,000,000) 둘째 줄에는 나무의 높이가 주어진다. 나무의 높이의 합은 항상 M보 www.acmicpc.net ✏️ 이분탐색 문제! ✏️ 이분탐색을 통해 가장 적절한 절단기 높이를 구하는 문제였다. ✏️ 나무의 높이가 0부터 1000000000 사이이므로, s를 0, e를 가장 높은 나무의 높이로 두었다. ✏️ 이분탐색의 기본 개념을 복습하기에 좋은 문제였다. N, M = map(int, input().split()) trees = list(map(int..
link 🔗 https://www.acmicpc.net/problem/16928 16928번: 뱀과 사다리 게임 첫째 줄에 게임판에 있는 사다리의 수 N(1 ≤ N ≤ 15)과 뱀의 수 M(1 ≤ M ≤ 15)이 주어진다. 둘째 줄부터 N개의 줄에는 사다리의 정보를 의미하는 x, y (x < y)가 주어진다. x번 칸에 도착하면, y번 칸으 www.acmicpc.net 🐍 사다리나 뱀을 만나면 위치의 변화가 일어남 🐍 1에서 출발하여 100에 도착하기까지 주사위를 최소로 굴릴 때를 찾는 문제 🐍 간단한 BFS 문제로, 이동한 칸이 사다리나 뱀이 존재하는지 편하게 탐색하기 위해 딕셔너리로 사다리와 뱀의 정보를 저장했다. import sys from collections import deque def BFS..
link 🔗 https://www.acmicpc.net/problem/1043 1043번: 거짓말 지민이는 파티에 가서 이야기 하는 것을 좋아한다. 파티에 갈 때마다, 지민이는 지민이가 가장 좋아하는 이야기를 한다. 지민이는 그 이야기를 말할 때, 있는 그대로 진실로 말하거나 엄청나게 www.acmicpc.net ❗ 주목한 점 ✏️ 진실을 알게 된 사람과 같은 파티에 가면 진실을 알게 된다 ✏️ 1이 진실을 알고 있는 사람이고, 1과 4가 같은 파티에 간 경우, 4가 참여한 모든 파티가 거짓말을 할 수 없는 파티가 된다. 1️⃣ 3% 대에서 오답난 코드 import sys input = sys.stdin.readline def knowTruth(y): for idx in range(1, len(party..
link 🔗 https://www.acmicpc.net/problem/20056 20056번: 마법사 상어와 파이어볼 첫째 줄에 N, M, K가 주어진다. 둘째 줄부터 M개의 줄에 파이어볼의 정보가 한 줄에 하나씩 주어진다. 파이어볼의 정보는 다섯 정수 ri, ci, mi, si, di로 이루어져 있다. 서로 다른 두 파이어볼의 위치 www.acmicpc.net 🦈 파이어볼을 모두 합쳐 나눌 때, 0이면 소멸된다는 조건을 적용하지 않아서 답이 한동안 안 나왔었다. 🦈 평소와 달리 2차원 board 리스트를 생성할 때 0이 아닌 []으로 생성해줬는데, 이를 고려하지 않아서 인덱스 에러가 나왔었다. import sys input = sys.stdin.readline dir = [(-1, 0), (-1, 1)..
link 🔗 https://www.acmicpc.net/problem/7490 7490번: 0 만들기 각 테스트 케이스에 대해 ASCII 순서에 따라 결과가 0이 되는 모든 수식을 출력한다. 각 테스트 케이스의 결과는 한 줄을 띄워 구분한다. www.acmicpc.net 📌 DFS로 +, -, 공백의 경우를 타고 들어가주었다. 📌 DFS 내부에서 계산 결과를 가지고 다녀보았는데, 생각처럼 계산 결과가 잘 나오지 않았다. 📌 따라서 마지막 숫자를 모두 사용했을 때, 만들어진 문자열을 eval 메소드를 통해 계산하고, 값이 0이면 res 리스트에 추가해주는 식으로 해결하였다. 📌 문자열 내부에서 공백을 사용한 경우를 대비해 replace 메소드로 공백을 없애준 후 eval 메소드를 사용하였다. def DFS..