본문 바로가기

코테 문제34

[아무문제] Removing duplicated nodes 스택을 사용하여 주어진 숫자들중 중복된 숫자를 삭제하는 프로그램입니다. 아주 간단한 코드죠 Input: 10 5 3 1 1 8 3 1 5 2 9 Output: 5->3->1->1->8->3->1->5->2->9->NULL 5->3->1->8->2->9->NULL #include #include typedef struct _Node{ int data; struct _Node* next; }Node; void printList(Node* head){ Node* ptr = head; while(ptr){ printf("%d",ptr->data); printf("->"); ptr = ptr->next; } printf("NULL"); printf("\n"); } void push(Node** head, int .. 2020. 4. 22.
[아무문제] Pseudo-Palindrome Checker2 대칭되는 문자들만 사용하여 최대한으로 길게 새로운 문자열을 만들어라 Input: ABCDA Output(순서는 달라도 됨): ABA Stack스택 사용 #include #include #include #define MAX_STACK10 #define TRUE1 #define FALSE0 typedef char Data; typedef struct { Data items[MAX_STACK]; int top; }Stack; void InitStack(Stack* pstack) { pstack->top = -1; } int IsFull(Stack* pstack) { if(pstack->top == MAX_STACK - 1) return TRUE; else return FALSE; } int IsEmpty(St.. 2020. 4. 21.
[아무문제] Pseudo-Palindrom checker 대칭되지 않는 문자들이 몇쌍이 있는지 출력하는 프로그램 Input: ABCDA Output: 2 Stack스택 사용 #include #include #include #define MAX_STACK10 #define TRUE1 #define FALSE0 typedef char Data; typedef struct { Data items[MAX_STACK]; int top; }Stack; void InitStack(Stack* pstack) { pstack->top = -1; } int IsFull(Stack* pstack) { if(pstack->top == MAX_STACK - 1) return TRUE; else return FALSE; } int IsEmpty(Stack* pstack) { if(ps.. 2020. 4. 21.
[백준] 2941번: 크로아티아 알파벳 문제 예전에는 운영체제에서 크로아티아 알파벳을 입력할 수가 없었다. 따라서, 다음과 같이 크로아티아 알파벳을 변경해서 입력했다. 크로아티아 알파벳변경 č c= ć c- dž dz= đ d- lj lj nj nj š s= ž z= 예를 들어, ljes=njak은 크로아티아 알파벳 6개(lj, e, š, nj, a, k)로 이루어져 있다. 단어가 주어졌을 때, 몇 개의 크로아티아 알파벳으로 이루어져 있는지 출력한다. dž는 무조건 하나의 알파벳으로 쓰이고, d와 ž가 분리된 것으로 보지 않는다. lj와 nj도 마찬가지이다. 위 목록에 없는 알파벳은 한 글자씩 센다. 입력 첫째 줄에 최대 100글자의 단어가 주어진다. 알파벳 소문자와 '-', '='로만 이루어져 있다. 단어는 크로아티아 알파벳으로 이루어져 있.. 2020. 4. 17.
[백준] 1546번: 평균 문제 세준이는 기말고사를 망쳤다. 세준이는 점수를 조작해서 집에 가져가기로 했다. 일단 세준이는 자기 점수 중에 최댓값을 골랐다. 이 값을 M이라고 한다. 그리고 나서 모든 점수를 점수/M*100으로 고쳤다. 예를 들어, 세준이의 최고점이 70이고, 수학점수가 50이었으면 수학점수는 50/70*100이 되어 71.43점이 된다. 세준이의 성적을 위의 방법대로 새로 계산했을 때, 새로운 평균을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 시험 본 과목의 개수 N이 주어진다. 이 값은 1000보다 작거나 같다. 둘째 줄에 세준이의 현재 성적이 주어진다. 이 값은 100보다 작거나 같은 음이 아닌 정수이고, 적어도 하나의 값은 0보다 크다. 출력 첫째 줄에 새로운 평균을 출력한다. 실제 정답과 출력값의 절대.. 2020. 4. 17.
[백준] 1110번: 더하기 사이클 문제 0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그 다음, 주어진 수의 가장 오른쪽 자리 수와 앞에서 구한 합의 가장 오른쪽 자리 수를 이어 붙이면 새로운 수를 만들 수 있다. 다음 예를 보자. 26부터 시작한다. 2+6 = 8이다. 새로운 수는 68이다. 6+8 = 14이다. 새로운 수는 84이다. 8+4 = 12이다. 새로운 수는 42이다. 4+2 = 6이다. 새로운 수는 26이다. 위의 예는 4번만에 원래 수로 돌아올 수 있다. 따라서 26의 사이클의 길이는 4이다. N이 주어졌을 때, N의 사이클의 길이를 구하는 프로그램을 작성하시오. 입력 첫째 .. 2020. 4. 17.
[백준] 1065번: 한수 질문: 어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력하는 프로그램을 작성하시오. 입력: 첫째 줄에 1,000보다 작거나 같은 자연수 N이 주어진다. 출력: 첫째 줄에 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력한다. 예를 들어서 입력: 110 출력: 99 입력: 1000 출력: 144 #include int main(){ int N,i; int tens_digit,hundred_digit,one_digit; int han_num = 0; scanf("%d",&N); if(N 2020. 4. 16.