10진수를 2진수로 변환해서 출력하는 것이 목적이다. 배열을 활용한 풀이도 가능하지만 포인터와 동적할당을 이용해서 풀이하겠다. #define _CRT_SECURE_NO_WARNINGS #include #include int main() { int dec, count = 0; scanf("%d", &dec); // 10진수 값을 담을 변수 선언 및 입력, 2진수 자릿수를 담을 변수 선언 char *bin = malloc(sizeof(char) * 100); // char의 크기 * 100만큼 메모리 동적 할당 while (1) { bin[count] = dec % 2; dec /= 2; count++; if (dec == 0) break; // 매 반복마다 dec을 2로 나눈 나머지를 bin의 count ..
Old (2021.01 ~ 2021.12)/Algorithm
입력된 크기만큼의 2차원 배열을 만들고 세로 방향으로 1,2,3,4... 요소를 넣어 출력하는 것이 목적이다. 포인터 학습이 주 목적이므로 포인터, 메모리 동적할당을 사용해 풀이하겠다. #define _CRT_SECURE_NO_WARNINGS #include #include int main() { int **p; int n; scanf("%d", &n); // 2차원 배열 이중 포인터 선언, 크기를 담을 변수 선언 및 입력 p = malloc(sizeof(int*) * n); for (int i = 0; i < n; i++) { p[i] = malloc(sizeof(int) * n); } // 크기만큼 메모리를 확보하고 그 주소들을 p에 저장 int count = 1; // 배열에 넣어줄 값 for (i..
이 문제는 6주차 때 이미 풀었던 문제지만 비효율적으로 입력 최대 크기(100 100)만큼 배열을 생성해서 풀었고 또한 잘못 이해를 해서 푼 부분이 있기에 포인터와 동적할당을 이용한 방법과 올바르게 풀고자 선정하였다. 입력된 격자판의 세로, 가로, 막대의 개수, 막대의 길이, 방향, 좌표(x,y)를 바탕으로 격자판에 막대들을 둔 상태로 격자판을 출력하는 것이 목적이다. #define _CRT_SECURE_NO_WARNINGS #include #include int main() { int **board; // 격자판 배열 int xCount, yCount, count, len, direct, x, y; // xCount : 격자판 가로 yCount : 격자판 세로 count : 막대의 개수 len : 막대..
문자열과 시작 위치, 끝 위치가 입력된다. 입력 받은 문자열에서 시작 위치 ~ 끝 위치까지 출력하는 것이 목적이다. 단 배열 대신 동적 메모리 할당 방법(malloc, free)를 사용해서 풀어야한다. 배열이 안되니 배열 포인터를 만들어서 풀면 될 것 같다. #define _CRT_SECURE_NO_WARNINGS #include #include int main() { int a, b; // 시작 위치 끝 위치를 입력 받을 변수 char *p = malloc(sizeof(char) * 100); // malloc으로 char의 크기 * 100만큼 메모리를 할당한 후 그 주소를 포인터 p에 저장 scanf("%s", p); scanf("%d %d", &a, &b); // 문자열을 p의 주소에 저장, 시작 ..
두 수를 a, b 변수에 입력 받은 후 void형 myswap 함수를 작성해 a의 값이 b 값보다 크다면 두 변수의 값이 서로 바뀌도록 하는 것이 목적이다. myswap 함수를 작성해야하는데, 주어진 코드를 보면 myswap의 인자로 변수의 값이 아닌 변수의 주소가 주어진다. 이 주소를 포인터로 입력 받아 역참조해 값을 서로 바꿔주면 될 것 같다. #define _CRT_SECURE_NO_WARNINGS #include void myswap(int *A, int *B) { // int형 포인터 매개변수 A, B로 a, b의 메모리 주소를 전달 받음 if (*A < *B) return; // 역참조로 A가 가리키는 주소의 값이 B가 가리키는 주소의 값보다 작은지 확인하고 작으면 함수 종료 int tmp =..
-Summary- CodeUp 11문제(1081번, 1082번, 1091번 ~ 1099번) c언어 풀이 Write Up -1081- 주사위 2개의 면의 개수가 입력되는데, 그 입력을 바탕으로 나올 수 있는 모든 수의 조합을 출력하는 것이 목적이다. #define _CRT_SECURE_NO_WARNINGS // 취약한 scanf 함수를 오류 없이 사용하기 위해 작성 #include int main() // 메인 함수 { int m, n; // 입력 값을 담을 변수 선언 scanf("%d %d", &m, &n); // 입력 for (int i = 1; i
-Summary- CodeUp 1076 ~ 1099번 문제 파이썬 풀이 Write Up 02-03 (Codeup 1076 ~ 1096) 입력 된 알파벳까지 알파벳 순서대로 출력하는 것이 목적이다. for i in range(ord('a'),ord(input())+1): print(chr(i), end=" ") 아스키 코드를 이용해서 문제를 해결했다. range의 시작 값으로 ord('a') 즉 a의 아스키 코드 값(97)부터 시작, 끝 값은 입력 값의 아스키 코드 + 1까지 1씩 증가하면서 해당 아스키 값(i)의 문자를 출력하도록 작성했다. 0부터 입력 된 값까지 1씩 증가하면서 값을 하나씩 출력하는 것이 목적이다. for i in range(0,int(input())+1): print(i) 위와 비슷하..
-Summary- CodeUp 1001 ~ 1075번 문제 파이썬 풀이 Write Up 02-01 (Codeup 1001 ~ 1040) 입력 없이 'Hello'를 출력 시키는 것이 목적이다. print("Hello") print 함수에 인자를 "Hello"를 주어 'Hello'가 출력되게 코드를 작성했다. 'Hello World'를 출력하는 것이 목적이다. print("Hello World") 1001 풀이 코드에 Hello 띄고 World를 적어주면 된다. Hello World 이렇게 두줄에 거쳐서 출력하는 것이 목적이다. print("Hello\nWorld") 개행문자 \n을 Hello와 World 사이에 넣어줘서 줄바꿈을 구현해줬다. 위의 출력처럼 작은 따음표가 들어간 상태로 'Hello'를 출력하..