본문 바로가기

반응형

백준

(329)
[BOJ] 백준 1992 쿼드트리 (Swift) 문제 https://www.acmicpc.net/problem/1992 1992번: 쿼드트리 첫째 줄에는 영상의 크기를 나타내는 숫자 N 이 주어진다. N 은 언제나 2의 제곱수로 주어지며, 1 ≤ N ≤ 64의 범위를 가진다. 두 번째 줄부터는 길이 N의 문자열이 N개 들어온다. 각 문자열은 0 또 www.acmicpc.net 풀이 분할 정복 알고리즘을 사용하여 풀이할 수 있는 문제입니다. 압축된 문자열을 보면, 분할될 때, 괄호를 열고 분할된 문자열이 압축이 끝나면 닫아줍니다. 주어진 영상이 모두 0이나 1인지 확인하고, 0이라면 문자열에 0, 1이라면 1을 써주고 모두 0이나 1이 아니라면, 한 변을 2/n 으로 4등분하여 재귀함수로 다시 검사해줍시다. 4등분을 하게될 때가 분할될 때이므로 이때 괄..
[BOJ] 백준 2630 색종이 만들기 (Swift) 문제 https://www.acmicpc.net/problem/2630 2630번: 색종이 만들기 첫째 줄에는 전체 종이의 한 변의 길이 N이 주어져 있다. N은 2, 4, 8, 16, 32, 64, 128 중 하나이다. 색종이의 각 가로줄의 정사각형칸들의 색이 윗줄부터 차례로 둘째 줄부터 마지막 줄까지 주어진다. www.acmicpc.net 풀이 그림으로 설명이 잘 되어있는 문제입니다. 처음에는 n * n 종이를 검사해서, 전체 종이가 같은색으로 칠해져 있는지 확인해주고, 0으로 같은색이라면 흰색, 1로 같은색이라면 파랑색 종이를 세어 줍시다. 전부 같은색인지 확인을 해주기 위해서는 0의 개수와 1의 개수를 세어서 그 갯수가 n * n 의 갯수라면 전부 같은 색입니다. 같은 색이 아니라면, 한 변을 n..
[BOJ] 백준 13305 주유소 (Swift) 문제 https://www.acmicpc.net/problem/13305 13305번: 주유소 표준 입력으로 다음 정보가 주어진다. 첫 번째 줄에는 도시의 개수를 나타내는 정수 N(2 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 인접한 두 도시를 연결하는 도로의 길이가 제일 왼쪽 도로부터 N-1 www.acmicpc.net 풀이 이 문제는 그리디 알고리즘의 말 그대로, 현재 상황의 최적의 해를 고르는 방식으로 풀이할 수 있습니다. 이와같이 도시가 있다면, 첫번째 도시에서는 무조건 2리터는 주유를 해야합니다. 2리터를 주유를 하고 난 뒤, 두번째 도시로 가게됩니다. 첫번째 도시보다 기름 값이 더 싸기 때문에 두번째 도시에서 3리터 만큼 주유를 하고 세번째 도시로 이동합니다. 세번째 도시에서는 두번째..
[BOJ] 백준 1541 잃어버린 괄호 (Swift) 문제 https://www.acmicpc.net/problem/1541 1541번: 잃어버린 괄호 첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다 www.acmicpc.net 풀이 괄호를 적절히 쳐서 식을 최소로 만들기 위해 어떤 방법을 사용해야 할까요? 모든 수식이 "+"라면 양수를 전부 더해주는 방법 밖에 없습니다. 하지만 "-"가 하나라도 있다면 어떨까요? 10 + 20 - 30 + 40 이란 식이 있다면 괄호를 어떻게 쳐줘야할까요? 10 + 20 - (30 + 40) 처럼 괄호를 쳐주어야 최소 값이 나오겠죠? 10 + 20 - 30 - 40 + 50 ..
[BOJ] 백준 11399 ATM (Swift) 문제 https://www.acmicpc.net/problem/11399 11399번: ATM 첫째 줄에 사람의 수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어진다. (1 ≤ Pi ≤ 1,000) www.acmicpc.net 풀이 오름차순으로 정렬을 해주어야, 뒷사람이 기다리는 시간이 줄기 때문에 시간의 합을 최소로 만들 수 있습니다. 문제 설명을 보면 힌트를 얻을 수 있습니다. 오름차순으로 정렬을 하고, 시간의 합을 누적하고, 누적된 시간의 합을 계속해서 더해주어 출력해주면 끝입니다. 소스코드 후기 오름차순으로 정렬만 해주면 쉽게 풀 수 있는 문제였습니다.
[BOJ] 백준 1931 회의실 배정 (Swift) 문제 https://www.acmicpc.net/problem/1931 1931번: 회의실 배정 (1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다. www.acmicpc.net 풀이 회의가 빨리 시작한다고 해서 빨리 끝나지 않기 때문에 회의가 끝나는 시간에 초점을 맞춰주어야 하는 문제입니다. 하지만 끝나는 시간이 동일하다면 시작 시간이 빠른 것이 더 유리할 것입니다. (3, 3), (2, 3) 이란 회의 정보가 있다면 (2, 3) 회의를 하면 (3, 3) 회의도 진행이 가능합니다. 하지만 (3, 3) 회의를 먼저하면 (2, 3) 회의를 할 수 없습니다. 따라서 회의의 정보를 끝나는 시간에 맞춰 정렬을 하되, 끝나는 시간이 같다면 시작 시간이 더 빠른 순으로 정렬을 해줍시다. 그 이..
[BOJ] 백준 11047 동전 0 (Swift) 문제 https://www.acmicpc.net/problem/11047 11047번: 동전 0 첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000) 둘째 줄부터 N개의 줄에 동전의 가치 Ai가 오름차순으로 주어진다. (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2인 경우에 Ai는 Ai-1의 배수) www.acmicpc.net 풀이 그리디 알고리즘을 사용하여 풀이할 수 있습니다. K가 0이 될 때 까지, K를 가장 큰 동전부터 나눈 몫을 더해주면 동전의 최소 개수를 구할 수 있습니다. 문제의 조건 중 (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2인 경우에 Ai는 Ai-1의 배수) 라는 조건이 있기 때문에, 그리디 알고리즘이 성립하게 됩..
[BOJ] 백준 25682 체스판 다시 칠하기 2 (Swift) 문제 https://www.acmicpc.net/problem/25682 25682번: 체스판 다시 칠하기 2 첫째 줄에 정수 N, M, K가 주어진다. 둘째 줄부터 N개의 줄에는 보드의 각 행의 상태가 주어진다. B는 검은색이며, W는 흰색이다. www.acmicpc.net 풀이 2차원 배열의 누적 합을 사용하여 풀이할 수 있습니다. M * N 보드를 올바른 체스판과 비교하여 다르다면 1로, 같다면 0으로 2차원 배열을 만들어 줍시다. 그 이후 만들어준 2차원 배열의 누적 합을 구하면, 올바른 체스판과 다른 것의 갯수를 알 수 있습니다. 2차원 배열의 K * K 범위 안의 누적 합 중 가장 작은 값을 출력해주면 됩니다. 소스코드 후기 2차원 배열의 누적합 알고리즘을 이런 방식으로 활용할 수 있다는 것을..

반응형