1. 문제 상세 https://www.acmicpc.net/problem/2738 2. 문제 접근 N*M 크기의 행렬을 입력받아 행렬의 원소의 값을 더해 출력하자. N 과 M 은 100 이하이므로 2차원 배열의 크기는 100*100 으로 선언한다. N 과 M 을 첫째 줄에 입력받는다. 한 줄에 정수 M 개를 N 줄 입력받도록 반복하고, 이를 두 번 반복한다. 이제 두 행렬에서 각 원소들의 값을 더하고 행렬을 출력하자. 3. 문제 풀이 #include using namespace std; int main() { int a[100][100], b[100][100], n, m; cin >> n >> m; for(int i = 0; i ..
백준 - 단계별로 풀어보기
1. 문제 상세 https://www.acmicpc.net/problem/25206 2. 문제 접근 20개 과목의 학점을 확인해 전공 평점을 계산하자. 전공 평점 계산을 위해 학점 X 과목 평점의 값들을 모두 더한 값을 저장할 변수와, 학점을 모두 더한 값을 저장 할 변수를 선언. 각각 t_grade1, t_ grade2 라 하자. 이 때, 변수를 정수형이 아닌 실수형으로 선언하고, 오차가 10-4 이하로 나오도록 float 이나 double 로 선언. 20개 과목의 학점을 입력받기 위해 반복문으로 20번 반복하도록 하자. 반복하며 학점을 입력받고 해당 과목이 P/F 과목이 아닌 경우 학점 X 과목 평점의 값을 현재 grade1 변수의 값에 더한다. 그리고 학점을 grade2 변수에 더한다. 위 과정에서..
1. 문제 상세 https://www.acmicpc.net/problem/1316 2. 문제 접근 먼저 정수를 입력받아 변수에 저장하고, 반복문으로 그 변수에 저장된 횟수만큼 반복하도록 한다. 반복에서는 문자열을 입력받는다. 입력받은 문자열에서 반복되는 문자를 확인하기 위해 문자열 길이만큼 반복하며 맨 앞 문자부터 현재 문자의 바로 뒤 문자를 확인하여 다르다면 해당 문자를 체크해둔다. 예를 들어 aaabcc 인 경우, 인덱스 [0] : a, 인덱스 1이 a 이므로 통과한다. 인덱스 [1] : a, 인덱스 2가 a 이므로 통과. 인덱스 [2] : a, 인덱스 3이 b 이므로 a 를 체크하고 넘어간다. 인덱스 [3] : b, 인덱스 4가 c 이므로 b 를 체크하고 넘어간다. 인덱스 [4] : c, 인덱스 6..
1. 문제 상세 https://www.acmicpc.net/problem/2941 2. 문제 접근 문자열을 입력받고 해당 문자열이 몇 개의 크로아티아 알파벳으로 이루어져 있는지 출력한다. 문자열의 크기만큼 반복하며 문자열의 앞에서부터 문자를 확인, 알파벳마다 카운트를 늘리자. 크로아티아 알파벳을 확인해야 하기 때문에 각 알파벳에 따라 조건을 두자. 문자 확인 중에 c 가 나온 경우, 바로 뒤의 문자가 = 혹은 - 인지 확인하고, 맞다면 카운트를 늘린 후 뒤의 문자를 건너뛰고 그 다음 문자를 확인한다. d 도 비슷하게 뒤의 문자가 - 이거나, z 이면서 그 다음 문자가 = 인 경우를 확인하여 건너뛰도록 하자. l 과 n 은 뒤의 문자가 j 인 경우, s 와 z 는 = 인 경우 건너뛰자. 반복이 끝나면 카운..
1. 문제 상세 https://www.acmicpc.net/problem/1157 2. 문제 접근 문자열을 받아서 해당 문자열 내에 알파벳이 각각 몇 개 인지 확인하고(알파벳의 대문자와 소문자 구분 없이 개수 체크, Aaabb 와 같은 경우 A 가 3개로 제일 많다.) 가장 많은 알파벳을 대문자로 출력, 가장 많은 개수의 알파벳이 여러개라면 ? 를 출력하자. 이를 위해 크기가 26인 정수 배열을 하나 만들고, 인덱스를 알파벳과 매치해보자. (0 = a/A, 1 = b/B, 2 = c/C, ... 25 = z/Z) 반복문을 사용하여 문자열의 크기만큼 반복하도록 한다. 이제 반복에서 문자열 맨 앞부터 문자를 가져와 아스키 코드를 인덱스와 매치하여 활용하자. 아스키 코드에서 알파벳 대문자는 A 부터 순서대로 ..
1. 문제 상세 https://www.acmicpc.net/problem/10988 2. 문제 접근 단어가 팰린드롬인지 확인하자. 단어의 양쪽 끝에서부터 가운데로 가면서 양쪽의 문자를 비교하여 같은지 확인하자. 문자열에서 인덱스를 참조하여, 맨 앞의 인덱스를 i, 마지막 문자의 인덱스를 j 라고 할 때, i, j 를 비교하고 그 다음 i + 1, j - 1 을 비교하는 식으로 i 에는 1을 더해가고, j 에는 1을 빼가며 가운데 문자의 인덱스까지 시행하자. 가운데 문자에 도달했는지 확인하기 위해 i 가 j 보다 작거나 같을 때만 문자를 비교하도록 하자. 3. 문제 풀이 #include using namespace std; int main() { int i, j; string s; cin >> s; for..