목록Baekjoon (177)
GitHubSeob

문제 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/2875 2875번: 대회 or 인턴 첫째 줄에 N, M, K가 순서대로 주어진다. (0 ≤ M ≤ 100, 0 ≤ N ≤ 100, 0 ≤ K ≤ M+N), www.acmicpc.net 문제풀이 먼저 구성할 수 있는 팀의 수를 구한다. 여학생을 2로 나눈 몫 or 남학생 수 중 적은 수가 팀의 수가 된다. 하지만 인턴쉽에 참여하는 학생도 따로 있어야 한다. 그러므로 팀을 못 꾸린 혼자 남은 학생들의 수를 구한다. 인턴쉽에 참여해야 하는 수 - 혼자 남은 학생수를 하고, 그 값이 0 이하라면 혼자 남아있는 학생들만으로도 인턴쉽에 나갈 수 있으므로 팀의 수를 출력한다. 그 값이 0보다 크다면 팀 수 - K/3을 올림 한 값을 하여 출력한다. K는..

문제 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/1517 1517번: 버블 소트 첫째 줄에 N(1≤N≤500,000)이 주어진다. 다음 줄에는 N개의 정수로 A[1], A[2], …, A[N]이 주어진다. 각각의 A[i]는 0≤|A[i]|≤1,000,000,000의 범위에 들어있다. www.acmicpc.net 문제풀이 버블 소트는 https://terms.naver.com/entry.naver?docId=2270437&cid=51173&categoryId=51173 버블 정렬 버블 정렬(bubble sort)은 서로 이웃한 데이터들을 비교하며 가장 큰 데이터를 가장 뒤로 보내며 정렬하는 방식이다. 버블 정렬의 동작 과정을 [그림 8-3]의 데이터를 이용해서 살펴보자. ① 첫 번째 term..

문제 https://www.acmicpc.net/problem/2448 2448번: 별 찍기 - 11 첫째 줄에 N이 주어진다. N은 항상 3×2k 수이다. (3, 6, 12, 24, 48, ...) (0 ≤ k ≤ 10, k는 정수) www.acmicpc.net 문제풀이 N=3일 때 모양이다. N이 몇이든 이 모양이 기본이 되는 문제이다. Nx(N*2-1) 행렬이다. N=3일 때 y=0, x=3-1인 부분이 기준점이 되므로 [y][x] = *, [y+1][x-1], [y+1][x+1] = *, [y+1][x-2] ~ [y+1][x+2] = *이라는 기본 형태를 잡아준다. N=6일 때 모양이다. Nx(N*2-1) 행렬이다. 기준점이 (0, N-1)이고, 또 다른 점은 (0+3, N-4), (0+3, N+..