[백준(BOJ) 2577번] 숫자의 개수 (C++)
·
PS(Problem Solving)/C++
문제 링크 https://www.acmicpc.net/problem/2577 문제 정보 입력 첫째 줄에 A, 둘째 줄에 B, 셋째 줄에 C가 주어진다. A, B, C는 모두 100보다 크거나 같고, 1,000보다 작은 자연수이다. 출력 첫째 줄에는 A × B × C의 결과에 0 이 몇 번 쓰였는지 출력한다. 마찬가지로 둘째 줄부터 열 번째 줄까지 A × B × C의 결과에 1부터 9까지의 숫자가 각각 몇 번 쓰였는지 차례로 한 줄에 하나씩 출력한다. 풀이 단순하게 풀이할 수 있는 문제이다. 각 숫자의 개수를 저장하는 배열을 하나 만들어서 풀이하면 된다! 소스 코드 #include using namespace std; int main(void) { ios::sync_with_stdio(0); cin.tie..
[백준(BOJ) 1919번] 애너그램 만들기 (C++)
·
PS(Problem Solving)/C++
문제 링크 https://www.acmicpc.net/problem/1919 문제 정보 입력 첫째 줄과 둘째 줄에 영어 단어가 소문자로 주어진다. 각각의 길이는 1,000자를 넘지 않으며, 적어도 한 글자로 이루어진 단어가 주어진다. 출력 첫째 줄에 답을 출력한다. 풀이 string 자료형을 통해 문자열 2개를 입력 받은 후에 각각 알파벳의 개수를 배열에 저장한다. 그리고 알파벳의 개수가 다른 만큼 더해주면 애너그램 관계에 있도록 만들기 위해 제거해야 하는 최소 개수의 문자 수가 나온다! 두 번째 문자열의 알파뱃 개수가 더 많아서 단순하게 차이를 계산하면 음수가 나올 수 있으므로 abs() 함수를 사용해서 절댓값으로 계산한다. 소스 코드 #include using namespace std; int mai..
[백준(BOJ) 1475번] 방 번호 (C++)
·
PS(Problem Solving)/C++
문제 링크 https://www.acmicpc.net/problem/1475 문제 정보 입력 첫째 줄에 다솜이의 방 번호 N이 주어진다. N은 1,000,000보다 작거나 같은 자연수이다. 출력 첫째 줄에 필요한 세트의 개수를 출력한다. 풀이 number라는 새로운 배열을 만들어서 0 ~ 9까지의 숫자의 개수를 모두 저장한다. 그리고 6과 9는 같이 사용할 수 있으므로 6과 9의 개수의 합을 2로 나눈 값을 반올림 해준 값으로 계산한다. 그렇게 해서 각 숫자의 개수의 최댓값이 필요한 세트의 개수가 된다! 소스 코드 #include using namespace std; int main(void) { ios::sync_with_stdio(0); cin.tie(0); int n; cin >> n; int nu..
[백준(BOJ) 13300번] 방 배정 (C++)
·
PS(Problem Solving)/C++
문제 링크 https://www.acmicpc.net/problem/13300 문제 정보 입력 표준 입력으로 다음 정보가 주어진다. 첫 번째 줄에는 수학여행에 참가하는 학생 수를 나타내는 정수 N(1 ≤ N ≤ 1,000)과 한 방에 배정할 수 있는 최대 인원 수 K(1 < K ≤ 1,000)가 공백으로 분리되어 주어진다. 다음 N 개의 각 줄에는 학생의 성별 S와 학년 Y(1 ≤ Y ≤ 6)가 공백으로 분리되어 주어진다. 성별 S는 0, 1중 하나로서 여학생인 경우에 0, 남학생인 경우에 1로 나타낸다. 출력 표준 출력으로 학생들을 모두 배정하기 위해 필요한 최소한의 방의 수를 출력한다. 풀이 2차원 배열을 이용해서 풀이할 수 있는 문제이다. 각 학년의 성별을 구분한 학생 수를 k로 나눈 값이 필요한 ..
[백준(BOJ) 11328번] Strfry (C++)
·
PS(Problem Solving)/C++
문제 링크 https://www.acmicpc.net/problem/11328 문제 정보 입력 입력의 첫 번째 줄은 테스트 케이스의 수 0 > N; string s1, s2; int alphabet[26]; bool isPossible; while (N--) { cin >> s1 >> s2; fill(alphabet, alphabet + 26, 0); // alphabet 배열 0으로 초기화! isPossible = true; for (int i = 0; i < s1.length(); i++) { alphabet[s1[i] - 'a']++; alphabet[s2[i] - 'a']--; } for (int i = 0; i < 26; i++) { if (alphabet[i] != 0) { isPossible..
[백준(BOJ) 10808번] 알파벳 개수 (C++)
·
PS(Problem Solving)/C++
문제 링크 https://www.acmicpc.net/problem/10808 문제 정보 입력 첫째 줄에 단어 S가 주어진다. 단어의 길이는 100을 넘지 않으며, 알파벳 소문자로만 이루어져 있다. 출력 단어에 포함되어 있는 a의 개수, b의 개수, …, z의 개수를 공백으로 구분해서 출력한다. 풀이 string 자료형을 이용해서 문자열을 입력 받고 아스키 코드 값을 이용해서 적절하게 처리해주면 된다! 소스 코드 #include using namespace std; int alphabet[26]; string S; int main(void) { ios::sync_with_stdio(0); cin.tie(0); cin >> S; for (int i = 0; i < S.length(); i++) { alph..
[백준(BOJ) 10093번] 숫자 (C++)
·
PS(Problem Solving)/C++
문제 링크 https://www.acmicpc.net/problem/10093 문제 정보 입력 두 정수 A와 B가 주어진다. 출력 첫째 줄에 두 수 사이에 있는 수의 개수를 출력한다. 둘째 줄에는 두 수 사이에 있는 수를 오름차순으로 출력한다. 풀이 A, B의 범위가 1 A >> B; if (A > B) { swap(A, B); } if (A == B || B - A == 1) { cout
[백준(BOJ) 10804번] 카드 역배치 (C++)
·
PS(Problem Solving)/C++
문제 링크 https://www.acmicpc.net/problem/10804 문제 정보 입력 총 10개의 줄에 걸쳐 한 줄에 하나씩 10개의 구간이 주어진다. i번째 줄에는 i번째 구간의 시작 위치 ai와 끝 위치 bi가 차례대로 주어진다. 이때 두 값의 범위는 1 ≤ ai ≤ bi ≤ 20이다. 출력 1부터 20까지 오름차순으로 놓인 카드들에 대해, 입력으로 주어진 10개의 구간 순서대로 뒤집는 작업을 했을 때 마지막 카드들의 배치를 한 줄에 출력한다. 풀이 C++ Algorithm 헤더파일에 들어있는 함수인 reverse()를 이용하면 쉽게 해결 할 수 있다! 소스 코드 #include using namespace std; int main(void) { ios::sync_with_stdio(0); ..