백준 75

[백준] 2941 with C++

문제설명 입출력 예제 개념 문자열을 크로아티아 알파벳의 규칙에 맞게 변경한 후, 그 개수를 카운팅 하는 문제다. 크로아티아 문자가 생성되는 규칙은 다음과 같다. 문자 =가 있는 경우 이전 문자가 c거나 s인 경우 카운트를 2개가 아닌 하나로 한다. 이전 문자가 z인 경우 카운트를 2개가 아닌 하나로 한다. 이전 문자가 z이며 d인 경우 카운트를 3개가 아닌 하나로 한다. 문자 -가 있는 경우 이전 문자가 c거나 d인 경우 카운트를 2개가 아닌 하나로 한다. 문자 j가 있는 경우 이전 문자가 l이거나 n이 경우 카운트를 2개가 아닌 하나로 한다. 풀이 #include #include using namespace std; int main() { string str; cin >> str; int count =..

Algorithm/백준 2023.02.17

[백준] 4673 with C++

문제설명 입출력 예제 개념 생성자가 없는 숫자인 셀프 넘버를 출력하는 문제다. 문제에서 알 수 있듯이 x라는 숫자가 있을 때, x의 각 자릿수들의 숫자와 x를 더한 숫자는 셀프 넘버가 아니게 된다. 따라서 bool 배열은 만들어 1부터 10000까지 상술한 규칙을 적용해, 해당하는 자리의 숫자를 true로 바꾼 후 false만 출력하면 된다. 풀이 풀이(1) string 이용하기 #include #include using namespace std; int main() { int num = 10000; bool selfnum[10000] = { false }; max 숫자인 10000을 num으로 초기화하고, selfnum를 체크할 bool 배열 selfnum[]을 초기화한다. for (int i = 1;..

Algorithm/백준 2023.02.16

[백준] 2839 C++

문제설명 입출력 예제 개념 N이 주어졌을 때, 주어진 3kg 봉지와 5kg 봉지를 이용해 3x + 5y = N을 만족하는 최소의 정수쌍의 합을 구하는 문제다. 이때 이러한 해를 만족하는 정수쌍이 존재하지 않을 때는 -1을 출력해야 하며, x나 y에 0이 들어갈 수 있다는 것을 유념해야 한다. 알고리즘 필자의 경우엔 3x + 5y = N을 y에 대해 정리하여 y = -3x/5 + N/5로 표현한 뒤, 다음과 같은 과정으로 문제를 풀었다. x = 0부터 y = -3x/5 + N/5가 정수가 되는 (x,y)의 값을 찾고, 배열에 x + y를 넣음 (개수를 묻는 문제이므로) 만약 -3x/5 + N/5 < 0이 되면 더이상 0을 넘는 값을 찾을 수 없음 일련의 과정을 통해 x + y의 값을 배열에 넣은 후, 배열..

Algorithm/백준 2023.01.24

[백준] 1978 C++

문제설명 입출력 예제 개념 주어진 자연수 중 소수의 개수를 출력하는 문제다. 여기서 소수란 약수가 1과 자기 자신밖에 없는 수를 의미한다. 알고리즘 1부터 입력된 수까지 순회하며 나눠지는 수가 존재한다면 소수가 아니므로 break를 건 후 다음 반복으로 넘어가고, 나눠지는 수가 없다면 소수의 개수를 늘리는 식으로 접근하면 되는 간단한 문제다. 풀이 #include using namespace std; int N, cnt; int check; int main() { cin >> N; while (N--) { int num; check = 0; cin >> num; for (int i = 1; i < num; i++) { if (num % i == 0 && i != 1) break; check++; } if..

Algorithm/백준 2023.01.23