일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- sorting
- Cleancode
- BASIC
- server
- 따라하면서 배우는 C언어
- 인프런
- JavaScript
- Python
- web
- programmers
- 종만북
- 따라하며 배우는 C언어
- dfs
- BFS
- 생활코딩
- Algorithm
- graph
- 백준
- C
- php
- 따배씨
- Math
- String
- Algospot
- greedy
- udemy
- BOJ
- 정수론
- C언어
- DP
- Today
- Total
목록백준 (112)
몽상실현개발주의
[BOJ] 10816 / 숫자 카드 2 / Python 파이썬 https://www.acmicpc.net/problem/10816 10816번: 숫자 카드 2 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10, www.acmicpc.net 풀이 [BOJ] 10815 / 숫자 카드 문제의 응용 문제이다. 처음 시도로는 해당하는 카드의 index 를 이분탐색을 진행하여 찾고, 그 index 를 기준으로 앞뒤를 탐색하는 방법을 구상하였지만 시간초과가 되어버렸다. 그 다음으로는 index 를 시작 숫자로 하여 다시 이분탐색을 하는 방법을 사용 ..
[BOJ] 10815 / 숫자 카드 / Python 파이썬 https://www.acmicpc.net/problem/10815 10815번: 숫자 카드 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10, www.acmicpc.net 풀이 주어진 숫자만큼 이분탐색을 연속으로 하는 문제이다. for 문 안에서 이분탐색을 진행하여 간단하게 풀었다. N = int(input()) cards = list(map(int, input().split())) cards.sort() M = int(input()) nums = list(map(int, in..
[BOJ] 2110 / 공유기 설치 / Python 파이썬 https://www.acmicpc.net/problem/2110 2110번: 공유기 설치 첫째 줄에 집의 개수 N (2 ≤ N ≤ 200,000)과 공유기의 개수 C (2 ≤ C ≤ N)이 하나 이상의 빈 칸을 사이에 두고 주어진다. 둘째 줄부터 N개의 줄에는 집의 좌표를 나타내는 xi (0 ≤ xi ≤ 1,000,000,000)가 www.acmicpc.net 풀이 풀이 방법을 떠올리기가 힘들었던 이진탐색 문제였다. "공유기 사이의 거리를 최대로 하는 설치 간격" 을 찾는 문제인데 이 조건을 "집 사이의 간격이 X 이상이 가능한 집의 수 == 공유기 대수" 로 다시 생각하여야 풀 수 있었다. 집 사이의 간격을 이진탐색으로 찾기 간격을 주어진 집..
[BOJ] 2805 / 나무 자르기 / Python 파이썬 https://www.acmicpc.net/problem/2805 2805번: 나무 자르기 첫째 줄에 나무의 수 N과 상근이가 집으로 가져가려고 하는 나무의 길이 M이 주어진다. (1 ≤ N ≤ 1,000,000, 1 ≤ M ≤ 2,000,000,000) 둘째 줄에는 나무의 높이가 주어진다. 나무의 높이의 합은 항상 M보 www.acmicpc.net 풀이 이진탐색의 기본 문제이다. 주어진 나무의 높이들을 빼주면서 결과를 비교하여, 탐색 범위를 좁혀 주는 방식으로 이진탐색을 하였다. res = M : 자를 높이 증가 N, M = map(int, input().split()) trees = list(map(int,..
[BOJ] 1991 / 트리 순회 / Python 파이썬 https://www.acmicpc.net/problem/1991 1991번: 트리 순회 첫째 줄에는 이진 트리의 노드의 개수 N(1≤N≤26)이 주어진다. 둘째 줄부터 N개의 줄에 걸쳐 각 노드와 그의 왼쪽 자식 노드, 오른쪽 자식 노드가 주어진다. 노드의 이름은 A부터 차례대로 영문자 www.acmicpc.net 풀이 트리 순회의 기본 문제이다. 전위 순회(pre-order): Root -> Left -> Right 중위 순회(in-order): Left -> Root -> Right 후위 순회(post-order): Left -> Right -> Root N = int(input()) tree = {} for _ in range(N): nod..
[BOJ] 2146 / 다리 만들기 / Python 파이썬 https://www.acmicpc.net/problem/2146 2146번: 다리 만들기 여러 섬으로 이루어진 나라가 있다. 이 나라의 대통령은 섬을 잇는 다리를 만들겠다는 공약으로 인기몰이를 해 당선될 수 있었다. 하지만 막상 대통령에 취임하자, 다리를 놓는다는 것이 아깝다 www.acmicpc.net 풀이 주어진 이중배열에서 1로 이루어진 무리 사이의 최단 거리를 구하는 문제이다. 문제를 이해하였지만, 구현하는데에 많은 어려움이 있었다. BFS 를 이용하여 최단거리를 구하는 것과 문제를 풀기위한 환경 구성을 함께 고려해 주어야 한다. from collections import deque def setIsland(y, x, setN): glo..
[BOJ] 2178 / 미로 탐색 / Python 파이썬 https://www.acmicpc.net/problem/2178 2178번: 미로 탐색 첫째 줄에 두 정수 N, M(2 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 M개의 정수로 미로가 주어진다. 각각의 수들은 붙어서 입력으로 주어진다. www.acmicpc.net 풀이 경로탐색의 기본 문제이다. bfs 로 경로상의 이동 거리를 저장하며 경로를 진행하도록 하였다. from collections import deque N, M = map(int, input().split()) maps = [] for _ in range(N): maps.append(list(map(int, list(input())))) dq = deque() dq.ap..
[BOJ] 7576 / 토마토 / Python 파이썬 https://www.acmicpc.net/problem/7576 7576번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N이 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M,N ≤ 1,000 이다. 둘째 줄부터는 하나의 상자에 저장된 토마토 www.acmicpc.net 풀이 이차원 배열에서 주어진 시작점으로 부터 주어진 규칙을 시행하는 문제였다. 처음에는 각각의 시작점에서 시행하는 경우가 동시에 발생 하는 것을 고려하지 못하고, 독립적으로 시행하게 구현하였더니 시간초과가 발생하였다. BFS 로 각각의 시작점을 같은 단계에서 동시에 수행되도록 구현하였더니 통과하였다. from collection..