본문 바로가기
728x90

백준41

[BOJ/Python] 2473. 세 용액 📌 문제 https://www.acmicpc.net/problem/2473 2473번: 세 용액 첫째 줄에는 전체 용액의 수 N이 입력된다. N은 3 이상 5,000 이하의 정수이다. 둘째 줄에는 용액의 특성값을 나타내는 N개의 정수가 빈칸을 사이에 두고 주어진다. 이 수들은 모두 -1,000,000,000 이상 www.acmicpc.net 📌 문제 접근 방법 움직이지 않는 기준을 하나 설정하고 왼쪽, 오른쪽 인덱스를 바꿔가면서 합을 도출한다. 합이 양수라면 오른쪽 인덱스를 -1, 음수라면 왼쪽 인덱스를 +1 해줘서 0에 가깝게 만들어준다. 위의 과정을 반복하며 합이 0과 가장 가까운 인덱스 3개를 저장한다. 시간 초과 해결 1, 2의 과정으로는 자꾸 시간 초과가 나서 다음의 시도를 해보았다. 기준점(j.. 2021. 10. 7.
[BOJ/Python] 16234. 인구 이동 📌 문제 https://www.acmicpc.net/problem/16234 16234번: 인구 이동 N×N크기의 땅이 있고, 땅은 1×1개의 칸으로 나누어져 있다. 각각의 땅에는 나라가 하나씩 존재하며, r행 c열에 있는 나라에는 A[r][c]명이 살고 있다. 인접한 나라 사이에는 국경선이 존재한다. 모 www.acmicpc.net 📌 문제 접근 방법 우선, 첫 번째 인구 이동이 일어나는 과정을 먼저 구현해보았다. 방문한 적이 없는 곳이면 bfs(find_unit 함수)를 통해 연합을 구성하고 → 연합의 길이가 1보다 크다면 인구이동이 일어나므로 move함수를 통해 인구를 이동시킨다. 위의 코드를 이용해서 인구 이동이 더 이상 일어날 수 없을 때까지 인구 이동을 진행하고, 인구 이동이 일어날 때 마다 .. 2021. 10. 7.
[BOJ/Python] 1240. 노드사이의 거리 📌 문제 https://www.acmicpc.net/problem/1240 1240번: 노드사이의 거리 N(2≤N≤1,000)개의 노드로 이루어진 트리가 주어지고 M(M≤1,000)개의 두 노드 쌍을 입력받을 때 두 노드 사이의 거리를 출력하라. www.acmicpc.net 📌 문제 접근 방법 인접 행렬을 만들고 노드 간 연결이 된 곳에 거리를 저장! → 시간 초과 인접 리스트로 바꾸고 리스트에 연결된 노드번호와 거리를 함께 저장 후 bfs로 탐색 인접 행렬로 그래프 탐색을 하는 경우 시간 초과가 될 때가 종종 있어서 인접 리스트를 우선적으로 쓰는 것이 좋을 것 같다! 📌 코드 from collections import deque def distance(x, y): queue = deque() queue.. 2021. 10. 4.
[BOJ/Python] 1339. 단어 수학 📌 문제 https://www.acmicpc.net/problem/1339 1339번: 단어 수학 첫째 줄에 단어의 개수 N(1 ≤ N ≤ 10)이 주어진다. 둘째 줄부터 N개의 줄에 단어가 한 줄에 하나씩 주어진다. 단어는 알파벳 대문자로만 이루어져있다. 모든 단어에 포함되어 있는 알파벳은 최대 www.acmicpc.net 📌 문제 접근 방법 처음에는 맨 앞에 나온 알파벳에 가장 큰 숫자를 대입했다. 하지만, ''' 10 ABB BB BB BB BB BB BB BB BB BB '''​ 이러한 입력 값이 들어온다면 틀리게 된다. 따라서, 각 자리수마다 들어오는 알파벳을 리스트에 넣고 해당 자리의 값을 곱하여 계산하였다. 계산값이 가장 큰 값부터 큰 숫자를 대입하면 가장 큰 숫자를 찾을 수 있다. 📌 코드.. 2021. 10. 4.
728x90