백준 문제풀이

백준 문제풀이/브론즈1

백준 2839번 - 설탕 배달

https://www.acmicpc.net/problem/2839 2839번: 설탕 배달 상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그 www.acmicpc.net 나의 사고과정) 5kg짜리 갯수와 3kg짜리 갯수의 한계치는 입력 받은 값에서 가장 작은 무게인 3kg짜리를 나눈 값이다.(왜냐하면 3kg짜리만 계속하면 그게 가장 봉지 갯수가 크니까) 그래서 이걸 max 값으로 한 다음 반복문으로 가능한 조합을 다 vector에 넣고 가장 작은 값을 출력하게 했다. 수식에 해당하는 문제인데 난 수식이라기 보단... #include #include #include using..

백준 문제풀이/브론즈2

백준 2292번 - 벌집

https://www.acmicpc.net/problem/2292 2292번: 벌집 위의 그림과 같이 육각형으로 이루어진 벌집이 있다. 그림에서 보는 바와 같이 중앙의 방 1부터 시작해서 이웃하는 방에 돌아가면서 1씩 증가하는 번호를 주소로 매길 수 있다. 숫자 N이 주어졌 www.acmicpc.net 우선 나의 사고는 이랬다. 해당 수를 입력받고 현재 1, 2, 8 , 20이 경계이므로 해당 수 보다 커질 시점에 해당 인덱스를 출력시키면 되었다. #include #include using namespace std; int main() { std::cin.tie(NULL); std::ios::sync_with_stdio(false); int n; cin >> n; int limit = (int)10000..

백준 문제풀이/브론즈2

백준 10809번 - 알파벳 찾기

https://www.acmicpc.net/problem/10809 10809번: 알파벳 찾기 각각의 알파벳에 대해서, a가 처음 등장하는 위치, b가 처음 등장하는 위치, ... z가 처음 등장하는 위치를 공백으로 구분해서 출력한다. 만약, 어떤 알파벳이 단어에 포함되어 있지 않다면 -1을 출 www.acmicpc.net #include #include #include using namespace std; int main() { std::cin.tie(NULL); std::ios::sync_with_stdio(false); string input; cin >> input; vector v(26, -1); for (int i = 0; i < input.length(); i++) { int index = ..

백준 문제풀이/실버5

백준 4673번 - 셀프 넘버

https://www.acmicpc.net/problem/4673 4673번: 셀프 넘버 셀프 넘버는 1949년 인도 수학자 D.R. Kaprekar가 이름 붙였다. 양의 정수 n에 대해서 d(n)을 n과 n의 각 자리수를 더하는 함수라고 정의하자. 예를 들어, d(75) = 75+7+5 = 87이다. 양의 정수 n이 주어졌을 때, www.acmicpc.net 사고과정) 우선 d(n)을 만드는 과정의 함수를 구현해야한다. 이건 n + n의 각 자리를 더하면 되니 간단함. 문제는 해당 조건에 맞는 셀프넘버를 출력시킬 것인가이다. 생각했던 방법은, d(n)을 n이 1부터 쭉 반복한다. 그러면서 d(n)이 10000이하까지일때까지 반복하면서 해당 d(n)의 값과 대응하는 인덱스의 배열에 값이 있다는 뜻의 '1..

백준 문제풀이/실버5

백준 1789번 - 수들의 합

https://www.acmicpc.net/problem/1789 1789번: 수들의 합 첫째 줄에 자연수 S(1 ≤ S ≤ 4,294,967,295)가 주어진다. www.acmicpc.net 자연수 N이 최대려면, 1+2+3+.... 이렇게 가장 작은 수부터 시작해서 더해야한다. 예제가 19여서 생각을 해보니, 1+2+3+....19가 190이다. 저 19를 200에 맞추기 위해 29로 바꿔주면 끝이다. 즉, 이렇게 더하나가다가 N보다 커지면 마지막 수만 바꿔주면 된다. #include using namespace std; int main() { long long S; cin >> S; long long sum = 0; int count = 0; long long i = 1; while (true) {..

백준 문제풀이/실버5

백준 1316번 - 그룹 단어 체커

https://www.acmicpc.net/problem/1316 1316번: 그룹 단어 체커 그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때 www.acmicpc.net 사고과정) abca 가 있다고 하면, a의 경우 아까 나왔는데 마지막에 또 나와버려서 그룹단어가 아님 그걸 활용해, 알파벳 수를 담는 배열을 만들고, 한글자씩 옆에랑 서로 비교하면서 다르면 글자수를 더하고 그러다가 글자수가 2 이상이면 중복되었다는 소리이므로 그룹단어가 아님. 문자열을 입력받고 (str[i] != str[i+1]) 이런 식으로 비교를 할텐데, 그렇게..

백준 문제풀이/실버5

백준 1475번 - 방 번호

https://www.acmicpc.net/problem/1475 1475번: 방 번호 첫째 줄에 다솜이의 방 번호 N이 주어진다. N은 1,000,000보다 작거나 같은 자연수이다. www.acmicpc.net 6과 9를 하나의 숫자로 보는 것이 핵심이다. #include #include using namespace std; int main() { string input; cin >> input; int length = input.length(); char arr[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9'}; int result[10] = { 0, }; for (int i = 0; i < length; i++) { for (int j = 0; j ..

백준 문제풀이/브론즈1

백준 2869번 - 달팽이는 올라가고 싶다

https://www.acmicpc.net/problem/2869 2869번: 달팽이는 올라가고 싶다 첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B > a >> b >> v; int day = 0; int temp = 0; while (true) { temp = temp + a; if (temp >= v) { day++; break; } else { temp = temp - b; day++; } } cout > a >> b >> v; i..

void_melody
'백준 문제풀이' 카테고리의 글 목록 (7 Page)