전체보기 333

[멘토링][c언어] 다섯 번째 수업

문자열과 문자열 처리함수 문자배열 문자열 입/출력 문자열 처리함수 문자배열 c언어에는 문자열을 저장하는 자료형이 존재 X →배열을 이용 -초기화 1. 자료형 배열이름[배열크기] = "string"; 2. 자료형 배열이름[] = "string"; 3. 자료형 배열이름[] = {'s', 't', 'r', 'i', 'n', 'g', '\0'}; 문자열 입/출력 -입력 1. scnaf("%s", str); 2. gets(str); -출력 printf("%s", str); 문자열 처리함수 헤더 : 1. strlen() : 문자열의 길이를 구하는 함수 2. strcpy() : 문자열을 복사하는 함수 strcpy (받을 문자열, 복사할 문자열); ex) strcpy (str1, str2); : str1에 str2를 ..

Mentoring 2020.05.23

[멘토링][리눅스]overthewire : bandit Level 11→Level 12

Level 11→Level 12의 목표는 대문자와 소문자가 13씩 회전하는 data.txt에서 패스워드를 알아내는 것이다. 이번에는 위키피디아를 윗부분만 읽고 이해했다.. 그래서 저거를 하나하나 비교해가며 풀었다..^^ 근데 위키피디아를 밑부분으로 내려보니 힌트가 다 나와있었다. 5Te8Y4drgCRfCx8ugdwuEX8KFC6k2EUu가 바로 bandit Level 11의 비밀번호이다. tr은 지정한 문자를 바꿔주거나 삭제할 때 사용하는 명령이다. 우리는 tr을 사용하여 A-Za-z를 N-ZA-Mn-za-m으로 바꿔주는 명령을 주어서 패스워드를 구하였다. 출처: https://webdir.tistory.com/146 [WEBDIR]

Mentoring 2020.05.21

[멘토링][리눅스]overthewire : bandit Level 10→Level 11

Level 10→Level 11 의 목표는 base64로 인코딩된 데이터를 포함하고 있는 data.txt에서 패스워드를 알아내는 것이다. 풀고 나니 어이가 없는 문제였다.. 나는 왜... 모르면 help 좀 쓰자 제발^^ 처음에는 base64 위키피디아만 엄청 읽고 또 읽었다.. base64 --help 를 사용하니 옵션들이 쭉 나타났고 인코딩이 되어 있다고 하였으니 디코딩을 해주는 옵션인 -d 옵션을 사용해야 한다는 것을 알 수 있다. IFukwKGsFW8MOq3IRFqrxE1hxTNEbUPR가 바로 bandit Level 11의 비밀번호이다. 인코딩 : 문자열을 바이트로 변환 디코딩 : 바이트를 문자열로 변환 출처: https://200301.tistory.com/9

Mentoring 2020.05.20

[멘토링][c언어]백준 2566번 : 최댓값

#include int main() { int arr[9][9]; int max = 0; int r = 0, c = 0; for (int i = 0; i < 9; i++) { for (int j = 0; j < 9; j++) { scanf_s("%d", &arr[i][j]); if (max < arr[i][j]) { max = arr[i][j]; r = i + 1; c = j + 1; } } } printf("%d \n", max); printf("%d %d", r, c); return 0; } 2차원 배열을 이용하여 풀어야하므로 배열을 선언해준다. 배열은 선언해주고 초기화를 해주어야 하므로 for문 안에 scanf를 넣어 입력을 받아준 뒤 최댓값을 구해야 하므로 if문을 사용하여 최댓값을 구해준다. 출..

Mentoring 2020.05.18

[멘토링][c언어]백준 2577번 : 숫자의 개수

#include int main() { int arr[10] = { 0, }; int a, b, c, total, rest; scanf_s("%d", &a); scanf_s("%d", &b); scanf_s("%d", &c); total = a * b * c; while(total > 0) { rest = total % 10; total = total / 10; arr[rest]++; } for (int i = 0; i < 10; i++) { printf("%d \n", arr[i]); } return 0; } arr 배열의 모든 원소 값은 0으로 초기화 해두고 값을 하나씩 넣어줄 것이다. 먼저 a, b, c의 값을 입력받고 곱한 값을 total에 저장해준다. total 값에서 하나씩 rest에 저장하여..

Mentoring 2020.05.18

[멘토링][c언어]백준 2562번 : 최댓값

#include int main() { int arr[9]; int max = 0, num = 0; for (int i = 0; i < 9; i++) { scanf_s("%d", &arr[i]); if (max < arr[i]) { max = arr[i]; num = i + 1; } } printf("%d \n", max); printf("%d \n", num); return 0; } 9개의 서로 다른 자연수를 배열을 이용하여 저장해준다. for문을 사용하여 scanf로 입력을 받으면 max값과 비교하여 최댓값을 구해준다. 그 숫자가 몇 번째 숫자인지도 알아야 하기에 num변수를 주었다. +1을 해준 이유는 i는 배열의 순서이르모 +1을 해서 몇 번째에 입력한 숫자인지 num변수에 저장해준다.

Mentoring 2020.05.17

[멘토링][리눅스]overthewire : bandit Level 9→Level 10 / strings 명령어

Level 9→Level 10의 목표는 data.txt에 저장되어 있고 여러 개의 '=' 뒤에 사람이 읽을 수 있는 문자들 중 하나인 패스워드를 알아내는 것이다. cat data.txt 를 입력하면 알 수 없는 내용들이 출력이 된다. file 명령을 사용하여 파일의 종류를 확인해보니 data 라고 나왔다. 오브젝트 파일(바이너리 파일)의 내용을 확인하기 위해서는 cat 명령어를 사용할 수 없다. 그렇기 때문에 strings 명령을 사용해야 한다. strings 명령어를 사용하면 이렇게 출력이 된다. strings 명령은 실행파일의 ASCII 문자를 찾아 화면에 출력한다. strings 명령을 사용하여 문자를 찾으면 몇 개의 "=" 뒤에 비밀번호가 있다고 하였으므로 grep 명령을 함께 이용해주어야 한다...

Mentoring 2020.05.17

[멘토링][c언어]네 번째 수업

배열 동일한 자료형들의 모임 자료형 배열이름 [배열크기] ; *인원수가 10명인 반의 성적처리 int score[10] = {100, 96, 84, 72, 60, 50, 80, 92, 76, 88}; 100 96 84 72 60 50 80 92 76 88 score[0] = 100 score[1] = 96 score[9] = 88 배열의 초기화 int score[10] = {100, 96, 84, 72, 60, 50, 80, 92, 76, 88}; 이는 모든 배열 요소들을 초기화 int score[10] = {100, 96, 84}; score[0], score[1], score[2] 이외의 나머지 원소에는 0값이 들어감 int score[10] = {0, }; 배열의 모든 원소 값을 0으로 초기화 배열..

Mentoring 2020.05.16

[멘토링][리눅스]overthewire : bandit Level 8→Level 9 / sort 명령어 & uniq 명령어, 파이프(|)

Level 8→Level 9의 목표는 data.txt에 저장되어 있으며 한 번만 보이는 라인의 패스워드를 알아내는 것이다. 나는 이것을 풀 때 엄청 헷갈렸다. 처음엔 grep명령어를 사용하여 풀고자 하였다. 아무리 찾고 생각해도 grep 옵션을 무엇을 사용해야 할지 몰라서 조언을 구했다. sort 명령어와 uniq 명령어를 이용하라고 하였는데 나는 둘 다 모르는 명령어였다. 구글링 하지 말고 그냥 써보라고 해서 써보았더니 sort 명령어는 정렬이 되는 것을 알 수 있었고 uniq는 몰랐지만 반복되는 것을 하나만 남기고 제거해주는 것을 알 수 있었다. 우리는 그러면 data.txt에 많은 내용이 들어있고 반복되고 있으므로 sort 명령어를 사용하여 정렬을 해주되 우리가 찾아야 하는 것은 반복되는 문자열이 ..

Mentoring 2020.05.16

[멘토링][리눅스]overthewire : bandit Level 7→Level 8 / grep 명령어

Level 7→Level 8의 목표는 data.txt파일에 저장되어 있는 패스워드를 알아내는 것이다. 여기서 알아야 할 것은 millinoth 단어 옆에 있다는 것이다. 우리는 data.txt 파일을 읽어줘야 하기 때문에 cat 명령어를 사용해야 한다. (나는 find 명령어를 사용하여 찾으려고 난리침...정신 차리고 풀자...) 엄청나게 많은 양의 내용이 반복되어 계속 진행된다. Ctrl + C를 눌러 강제종료를 시켰다. "millionth"이라고 하면 아무것도 안 보이지만 *을 붙여주면 결과가 나온다. 비밀번호는 단어 다음에 있다고 하였으므로 *을 붙여주어야한다. grep에 대해 알아보니 이러한 방법으로도 풀이가 가능하다. grep은 입력으로 전달된 파일의 내용에서 특정 문자열을 찾고자할 때 사용하는..

Mentoring 2020.05.15