목록Baekjoon/Silver (86)
GitHubSeob
문제 https://www.acmicpc.net/problem/1476 1476번: 날짜 계산 준규가 사는 나라는 우리가 사용하는 연도와 다른 방식을 이용한다. 준규가 사는 나라에서는 수 3개를 이용해서 연도를 나타낸다. 각각의 수는 지구, 태양, 그리고 달을 나타낸다. 지구를 나타 www.acmicpc.net 문제풀이 나머지를 이용하면 쉽게 풀 수 있다. E는 1~15, S는 1~28, M은 1~19이다. 세 수는 0이 될 수 없으므로 각각 최댓값으로 나누고 1을 더한 값이 문제에서 요구한 값들이라면 year+1을 출력한다. 값이 다르면 year에 1을 더한다. 코드 #include using namespace std; int main() { int E, S, M = 0; cin >> E >> S >>..
문제 https://www.acmicpc.net/problem/11399 11399번: ATM 첫째 줄에 사람의 수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어진다. (1 ≤ Pi ≤ 1,000) www.acmicpc.net 문제풀이 돈을 뽑는 시간 + 누적 시간을 계속해서 더하면 된다. 시간이 적게 걸리는 순으로 정렬을 한 뒤 시간을 누적시키기만 하면 된다. 코드 #include #include #include using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(NULL); int N = 0; int idx = 0; int acc = 0; int answer = 0;..
문제 https://www.acmicpc.net/problem/1931 1931번: 회의실 배정 (1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다. www.acmicpc.net 문제풀이 시작시간순, 시작시간이 같다면 더 일찍 끝나는 순으로 정렬을 한다. 회의는 최소 한 번이므로 회의 개수를 1로 시작한다. 가장 빠르게 시작하면서 일찍 끝나는 회의의 시작시간을 front, 종료시간을 back으로 둔다. 모든 회의시간을 돌면서 back보다 종료시간이 빠른 회의가 있으면 back을 바꾼다. 회의 시작시간이 back 이상이면 회의 개수를 1 증가시키고 back을 해당 회의의 종료시간으로 바꾼다. 코드 #include #include #include using namespace std; b..
문제 https://www.acmicpc.net/problem/1783 1783번: 병든 나이트 첫째 줄에 체스판의 세로 길이 N와 가로 길이 M이 주어진다. N과 M은 2,000,000,000보다 작거나 같은 자연수이다. www.acmicpc.net 문제풀이 1. 처음 위치한 곳도 방문한 칸에 포함한다. 2. 이동 횟수가 3번 이하이면 네 가지 규칙 중에 마음대로 써서 움직일 수 있다. 3. 4번 이상일 경우는 네 가지 규칙을 모두 최소 한 번씩 썼으면 그 뒤로는 맘대로 골라 움직일 수 있다. 4. 4번 이상이고 네 가지 규칙 중 안 쓴 것이 있으면 규칙을 지켜야 한다. N=1이면 현재 위치한 칸 말고는 갈 수 있는 칸이 없으므로 1이다. N=2이면 2, 3번 규칙만 사용할 수 있으므로 가로 칸에 따라..
문제 https://www.acmicpc.net/problem/10610 10610번: 30 어느 날, 미르코는 우연히 길거리에서 양수 N을 보았다. 미르코는 30이란 수를 존경하기 때문에, 그는 길거리에서 찾은 수에 포함된 숫자들을 섞어 30의 배수가 되는 가장 큰 수를 만들고 싶어한 www.acmicpc.net 문제풀이 30의 배수이기 때문에 끝자리는 무조건 0이다. 0을 제외하고 3의 배수가 되는지만 확인하면 되는 문제이다. 3의 배수가 되는 조건은 각 자리의 숫자들의 합이 3의 배수일 때이다. 따라서 각 자리 숫자들을 더한 합이 3의 배수이고, 숫자들 중에 0이 하나 이상 있는지만 판별하면 된다. 코드 #include #include using namespace std; int main() { i..
문제 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 문제풀이 문제를 제대로 보지 않아 불필요한 for문을 썼다. 처음에는 동전이 1, 8, 10원이 있을 때, K가 16이라면 8+8=2의 경우를 생각해서 for문을 써서 모든 경우를 탐색하게 했다. 하지만 A[i]는 A[i-1]의 배수이기 때문에 위의 예시는 나올 수 없다. for (idx = N - 1; idx >= 0; --i..
문제 https://www.acmicpc.net/problem/11729 11729번: 하노이 탑 이동 순서 세 개의 장대가 있고 첫 번째 장대에는 반경이 서로 다른 n개의 원판이 쌓여 있다. 각 원판은 반경이 큰 순서대로 쌓여있다. 이제 수도승들이 다음 규칙에 따라 첫 번째 장대에서 세 번째 장대로 www.acmicpc.net 문제풀이 N=5일때 맨 아래 5번 원판을 세번째 장대로 옮겨야한다. start를 시작 장대, end를 목표 장대, via를 start->end로 옮기기 위해 거치는 장대로 둔다. 5번 장대를 세번째 장대로 옮기기 위해서는 1~4번 원판을 2로 옮겨야 한다. 따라서 3번을 거쳐 2번으로 두기 때문에 hanoi(N, start, via, end)라는 함수가 있으면 hanoi(N-1,..
문제 https://www.acmicpc.net/problem/2447 2447번: 별 찍기 - 10 재귀적인 패턴으로 별을 찍어 보자. N이 3의 거듭제곱(3, 9, 27, ...)이라고 할 때, 크기 N의 패턴은 N×N 정사각형 모양이다. 크기 3의 패턴은 가운데에 공백이 있고, 가운데를 제외한 모든 칸에 별이 www.acmicpc.net 문제풀이 N이 9 이상일 때 0~8의 모양이다. 먼저 N이 몇이든 (1, 1), (1, 4), (1, 7), (4, 1), (4, 4), (4, 7),... y%3=1, x%3=1인 좌표는 공백 1칸을 출력한다. 따라서 좌표를 3으로 나눈 나머지가 1이면 공백을 출력하도록 가장 먼저 조건을 걸어둔다. 그다음은 가운데 3x3 짜리 공백을 구하는 조건을 구해야 한다. ..
문제 https://www.acmicpc.net/problem/18870 18870번: 좌표 압축 수직선 위에 N개의 좌표 X1, X2, ..., XN이 있다. 이 좌표에 좌표 압축을 적용하려고 한다. Xi를 좌표 압축한 결과 X'i의 값은 Xi > Xj를 만족하는 서로 다른 좌표의 개수와 같아야 한다. X1, X2, ..., XN에 좌 www.acmicpc.net 문제풀이 해당 좌표 X보다 작은 좌표 X가 몇 개 있는지를 출력하는 문제이다. 중복된 X는 개수에 포함이 되지 않는 것 같다. 처음에는 단순하게 for문을 두 번 사용하여 풀고, 이분 탐색으로 풀어봤는데 이중 for문은 시간 초과가, 이분 탐색은 잘 되긴 했지만 시간을 더 줄이기 위해 upper_bound를 사용했다. 입력받는 좌표들을 저장하..