백준 2738: 행렬 덧셈 https://www.acmicpc.net/problem/2738 문제를 풀기 전 생각한 것 행렬을 만들어줄 배열, 값을 대입해줄 for 문 행렬을 어떤식으로 입력받을지 풀면서 어려웠던 점 X 코드 #include int main() { int a[100][100]; int b[100][100]; int ROW,COLUMN; scanf("%d %d", &ROW, &COLUMN); for(int i = 0; i < ROW; i++) { for(int j = 0; j < COLUMN; j++) { scanf("%d", &a[i][j]); } } for(int i = 0; i < ROW; i++) { for(int j = 0; j < COLUMN; j++) { scanf("%d", ..
백준 2566: 최댓값 https://www.acmicpc.net/problem/2566 문제를 풀기 전 생각한 것 행렬값을 받아줄 for 문 최댓값을 찾아줄 for 문 풀면서 어려웠던 점 큰 수를 어떻게 비교할지 고민 출력을 어떻게할지 고민 코드 #include int main() { int num; int max = 0, row = 0, column = 0; int a[11][11]; for (int i = 1; i < 10; i++){ for (int j = 1; j < 10; j++){ scanf("%d", &a[i][j]); } } for (int i = 1; i < 10; i++){ for (int j = 1; j < 10; j++){ if (max < a[i][j]){ max = a[i][j..
백준 2563번: 색종이 링크 https://www.acmicpc.net/problem/2563 문제를 풀기 전 생각한 것 어떤 방식으로 풀어야 할지 감이 잡히지 않았다. 색종이 개수 * 100을 한 후 겹치는 부분만 빼려고 했었다. 풀면서 어려웠던 점 처음 생각한 방식으로 풀려고 노력했지만 풀 수 없었다. 도화지 전체를 0으로 두고 색종이를 놓으면 1로 바뀌는 방법을 생각했다. 코드 #include int main(void) { int wpaper[100][100] = {0,}; int many, left, under; int count = 0; scanf("%d", &many); for (int i = 0; i < many; i++){ scanf("%d %d", &left, &under); for (..
백준 2587번: 대표값2 https://www.acmicpc.net/problem/2587 문제를 풀기 전 생각한 것 5 크기의 배열 설정, 그리고 입력받기 배열에 값을 넣어줄 for 문, 배열을 정렬해줄 qsort와 compare 함수 풀면서 어려웠던 점 배열 정렬하는 방법을 잊어버려서 찾아보았다,,, 코드 #include int compare(const void *a, const void *b) { int num1 = *(int *)a; int num2 = *(int *)b; if (num1 num2) return 1; return 0; } int main() { int num[5]; int avg = 0; for (int i = 0; i < 5..
백준 10807번: 개수 세기 링크 https://www.acmicpc.net/problem/10807 문제를 풀기 전 생각한 것 입력받을 배열 개수와 배열 크기 그리고 찾을 숫자 정의해주기 배열을 넣어줄 for 문과 숫자를 찾아줄 for 문 만들기 풀면서 어려웠던 점 간단한 코드여서 어렵지 않았다 변수 이름 정하는 게 제일 어려웠다 코드 #include int main() { int n[101]; int cnt = 0; int find, many; scanf("%d", &many); for(int i = 0; i < many; i++){ scanf("%d", &n[i]); } scanf("%d", &find); for(int i = 0; i < many; i++){ if(n[i] == find) cnt..
백준 5597번: 과제 안 내신 분..? 링크 https://www.acmicpc.net/problem/5597 문제를 풀기 전 생각한 것 입력받을 배열 개수와 배열 크기, 초기값 정의해주기 배열에 과제를 한 학생 번호를 넣어줄 for 문, 숫자를 찾아줄 for 문 풀면서 어려웠던 점 과제를 내지 않은 학생을 어떻게 출력해야할지 생각이 나지 않았다 처음에는 배열에 다 넣어두고 30번 다 돌려볼려고 했다 오래걸려서 제출한 학생 번호 인덱스에 1을 넣는것으로 바꿨다 코드 #include int main() { int student[31] = {0,}; int num; for(int i=1; i
백준 25501번: 재귀의 귀재 링크 https://www.acmicpc.net/problem/25501 문제를 풀기 전 생각한 것 테스트 반복을 할 것이기 때문에 for문 사용 recursion 함수 반복 횟수를 세줄 cnt 풀면서 어려웠던 점 문자열을 불러와서 출력시키는 것은 어렵지 않았다. 하지만 재귀함수가 호출된 횟수를 어디서 어떻게 받아야 할지 몰랐다. 이런 건 계속 붙잡고 있으니 자연스럽게 해결됐는데 백준에 제출하니 틀렸다고 나왔다. 코드 #include #include int cnt; int count(){ cnt += 1; return cnt; } int recursion(const char *s, int l, int r){ if(l >= r) return 1; else if(s[l] !=..
빅오 표기법 (Big-O) 빅오 표기법이란 ? 연산의 횟수를 대략 표기한 것 설명하기 전에 시간 복잡도의 정의를 알아야 한다. 시간 복잡도는 어떤 알고리즘을 이루고 있는 연산들이 몇 번이나 수행되는지를 시간으로 설명하는 계산 복잡도를 의미한다. 그리고 이러한 계산 복잡도를 표기하는 방법중 하나가 빅오 표기법이다. 예를 들어보자 분모가 계속해서 커지는 분수를 생각해보면 쉽다. 1/∞ 은 결국 0에 수렴하고 분모가 어떤 상수가 와도 결국엔 0으로 수렴한다. 빅오 표기법도 같다. 4n^2 + 3n +4 이 수식에서 n이 무한대로 커진다고 생각해보자. 일단 상수항 4는 의미가 없어진다. 그리고 3n도 4n^2이 엄청나게 커지면 의미가 없으므로 제외한다. 결국 위 식에서 남는 것은 최고차항인 n^2만 남는다. 그..