전체 글
[백준] 미세먼지 안녕!
https://www.acmicpc.net/problem/17144 17144번: 미세먼지 안녕! 미세먼지를 제거하기 위해 구사과는 공기청정기를 설치하려고 한다. 공기청정기의 성능을 테스트하기 위해 구사과는 집을 크기가 R×C인 격자판으로 나타냈고, 1×1 크기의 칸으로 나눴다. 구사 www.acmicpc.net 구현 문제입니다. 우선 문제부터 간단하게 요약하면, 방에 미세먼지와 공기 청정기가 있고, 매 1초마다 두가지 과정이 진행됩니다. 1. 미세먼지의 확산 2. 공기청정기로 인한 공기 정화와 순환 이러한 과정이 T 초간 일어난 후 방안의 전체 미세먼지의 수를 출력해야 하는 문제입니다. 특별한 알고리즘이 사용되지 않고, 말 그대로 1,2의 과정을 정확하게 구현하면 됩니다. for loop 내부에 ste..
[백준] 숨바꼭질 2
https://www.acmicpc.net/problem/12851 12851번: 숨바꼭질 2 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 때 www.acmicpc.net bfs를 이용하는 문제입니다. 우선 문제부터 간단하게 요약하면, 0 5, 3, 8 2-> 3, 1, 4 6-> 7, 5, 12 각각 시간에 따라 bfs의 진행과정에서 등장하는 정보들을 적어 두었습니다. 시간이 0인 경우 3, 시간이 1인 경우에는 시간이 0일 때의 3으로 부터 유도되는 4,2,6이 등장하고, 이후의 과정들 또한 마찬가지 입니다. 이 때 3은 시..
[백준] 최소비용 구하기 2
https://www.acmicpc.net/problem/11779 11779번: 최소비용 구하기 2 첫째 줄에 도시의 개수 n(1≤n≤1,000)이 주어지고 둘째 줄에는 버스의 개수 m(1≤m≤100,000)이 주어진다. 그리고 셋째 줄부터 m+2줄까지 다음과 같은 버스의 정보가 주어진다. 먼저 처음에는 그 버스 www.acmicpc.net 다익스트라 알고리즘을 사용하는 문제입니다. 우선 문제부터 간단하게 요약하면, 도시의 개수, 버스의 개수가 주어지고 버스들의 cost가 주어집니다. 이 때, 출발 도시에서 도착 도시까지의 최단 cost를 구하고, 이때의 path 정보 또한 구해야 하는 문제입니다. 기존의 다익스트라 알고리즘에 추가적으로 최단 거리로 가는 경로 또한 구해야 하는 문제입니다. 최단 cos..
[백준] 피보나치 함수
https://www.acmicpc.net/problem/1003 1003번: 피보나치 함수 각 테스트 케이스마다 0이 출력되는 횟수와 1이 출력되는 횟수를 공백으로 구분해서 출력한다. www.acmicpc.net dp를 이용한 문제입니다. 우선 문제부터 간단하게 요약하면, 문제에서 주어진 함수처럼 피보나치 수를 구할 떄, f(1)과 f(0)의 호출 횟수를 출력해야 하는 문제입니다. 간단하게 1의 호출 횟수를 저장하는 dp array와 0의 호출 횟수를 저장하는 dp array를 만들어 두고, 그 array에 대해 피보나치 수열을 진행하면 됩니다. 간단한 예시로, f(5)가 호출 되면, 이 때 0의 호출횟수와 1의 호출 횟수는 f(4)에서의 횟수 + f(3)에서의 횟수 이기 때문입니다. 실제 구현은 아래..
[백준] 문자열 반복
https://www.acmicpc.net/problem/2675 2675번: 문자열 반복 문자열 S를 입력받은 후에, 각 문자를 R번 반복해 새 문자열 P를 만든 후 출력하는 프로그램을 작성하시오. 즉, 첫 번째 문자를 R번 반복하고, 두 번째 문자를 R번 반복하는 식으로 P를 만들면 된다 www.acmicpc.net 간단한 구현 문제입니다. 숫자와 문자열이 주어질 때, ex) 2 ABC 해당하는 문자열의 각 문자들을 숫자 만큼 반복한 문자열을 출력하는 문제입니다. ex) AABBCC string을 적절히 가공하여, 새로운 string을 제작하면 됩니다. 실제 구현은 아래와 같습니다. #include int main(){ int t; std::cin >> t; std::cin.ignore(); for(..
[백준] 평균
https://www.acmicpc.net/problem/1546 1546번: 평균 첫째 줄에 시험 본 과목의 개수 N이 주어진다. 이 값은 1000보다 작거나 같다. 둘째 줄에 세준이의 현재 성적이 주어진다. 이 값은 100보다 작거나 같은 음이 아닌 정수이고, 적어도 하나의 값은 0보 www.acmicpc.net 구현문제입니다. 우선 문제부터 간단하게 요약하면, 점수들이 주어질 때, 각 점수에 (점수/(점수의 최댓값) * 100) 을 한 점수들의 평균을 구해야 하는 문제입니다. 최대점수를 구하고, 각 점수들에 다시 연산을 한 뒤 평균을 내주는 작업을 진행하면 됩니다. 실제 구현은 아래와 같습니다. #include #include double change(double k); double g_max_va..
[백준] 상수
https://www.acmicpc.net/problem/2908 2908번: 상수 상근이의 동생 상수는 수학을 정말 못한다. 상수는 숫자를 읽는데 문제가 있다. 이렇게 수학을 못하는 상수를 위해서 상근이는 수의 크기를 비교하는 문제를 내주었다. 상근이는 세 자리 수 두 www.acmicpc.net 간단한 구현문제입니다. 우선 문제부터 간단하게 요약하면, 두 숫자가 들어오면 해당하는 숫자를 뒤에서 부터 읽어 더 큰숫자를 print해야 합니다. 실제로 숫자 두개를 입력받아서 뒤집어서 대소 비교후, 출력하는 과정을 진행하면 됩니다. 구현은 아래와 같습니다. #include #include int main(){ std::string i,j; int num_i, num_j; std::cin >> i; std::..
[백준] 숫자의 합
https://www.acmicpc.net/problem/11720 11720번: 숫자의 합 첫째 줄에 숫자의 개수 N (1 ≤ N ≤ 100)이 주어진다. 둘째 줄에 숫자 N개가 공백없이 주어진다. www.acmicpc.net 간단한 구현 문제입니다. 우선 문제부터 간단하게 요약하면, N개의 숫자들이 붙어서 들어오면, 각각 한자리 숫자로 간주하고 더헀을 때의 결과를 return 하는 문제입니다. 각각의 숫자들을 벡터 배열로 만들어서 더해주는 형태로 구현하였습니다. 실제 구현은 아래와 같습니다. (벡터 연습을 벡터를 사용하였는데 사용하지 않고 풀면 훨씬 간단하게도 해결이 가능합니다.) #include #include #include int main(){ int N; int ans = 0; std::str..