목록Programming/C (47)
Information Security Study
스택 문제이다. 처음에 K를 입력받아 K만큼 숫자를 입력한다. 이때 0을 입력하면 최근에 입력한 수를 스택에 pop하고 아니라면 push한다. 입출력 예제다. // 스택 문제 #include #define MAX 100000 // 스택 생성 int stack[MAX]; // top으로 스택에 저장된 원소 접근 int top = -1; // 스택 삽입 연산 void push(int data){ // 스택이 가득찰 경우 리턴 if (top >= MAX -1) return; stack[++top] = data; } // 스택 삭제 연산 void pop(){ // 스택이 비었다면 리턴 if (top < 0) return; stack[top--] = 0; } int main() { int K = 0; int da..
원형 연결 리스트 문제이다. K번째 사람을 제거하고 N명의 모든 사람이 제거될 때까지 반복해야 한다. 입출력 예시다. // 원형 연결리스트 문제 // 제거되는 순서 출력 #include int main() { int N; int K; int check[5001] = {0, }; int flag; scanf("%d %d", &N, &K); flag = K; printf(""); } 사람 수, 제거 순서는 각각 N, K에 입력받는다. check 배열과 flag로 N개의 번호가 모두 지워졌는지 확인할 것이다. 바깥쪽의 for문은 전체 노드의 개수에 따라 반복하고 안쪽의 for문은 제거되는 순서 K에 따라 현재 위치 flag를 이동시킨다. 중첩된 while 루프는 중복되거나 이미 제거된 노드를 건너뛰면서 적절한..
주어진 문자열의 길이를 재는 문제이다. 입출력 예시다. #include int main() { int i; char s[1000]; scanf("%s", s); printf("%d", strlen(s)); return 0; } 문자열 길이를 재는 strlen()을 사용하면 된다.
입력한 문자열의 n번째 글자를 출력하는 문제다. 입출력 예제다. #include int main() { int i; char s[1000]; scanf("%s", s); scanf("%d", &i); printf("%c", s[i-1]); return 0; } i번째 한 글자만 출력하고 싶은 경우에는 형식 지정자 %c를 사용하고 여러 글자를 출력하고 싶을 때는 %s를 사용한다.
조작된 평균값을 출력하는 문제다. 각 점수를 입력 받고 최댓값을 기준으로 점수를 조작해야 한다. 최댓값은 max 변수를 초기화하고 for문으로 배열 요소와 하나하나 비교하여 찾을 수 있다. 입출력 예제다. #include int main() { int N; int max = 0; float sum; float ary[1000]; scanf("%d", &N); for(int i = 0; i = max) { max = ary[i]; } } for(int i = 0; i < N; i++) { ary[i] = (float)ary[i] / max * 100; } for(int ..
첫 줄에 바구니 개수, 순서를 변경할 횟수를 입력받고 그 다음 줄부터 M번 줄까지 역순으로 만들 바구니의 번호를 입력한다. 입력이 완료되면 변경된 바구니의 순서를 출력하는 문제이다. 입출력 예시다. #include int main() { int N; int M; int i; int j; int ary[100] = {0}; int tmp = 0; scanf("%d %d", &N, &M); for(int i = 1; i
입력한 숫자 10개를 42로 나눈 서로 다른 나머지 개수를 구하는 문제다. 입출력 예제다. #include int main() { int ary[10]; int a = 0; int zero = 0; for(int i = 0; i < 10 ; i++) { scanf("%d", &a); ary[i] = (a % 42); } for(int i = 0; i < 10; i++) { int count = 0; for(int j = i + 1; j < 10; j++) { if(ary[j] == ary[i]) { count++; } } if(count == 0) { zero++; } } printf("%d", zero); return 0; } 같은 나머지가 있는 경우 count를 증가시키고 없는 경우에는 zero를 증..