Programming

    [SWEA] 2058. 자릿수 더하기

    문제 사용자가 입력한 숫자의 각 자리의 숫자들을 더한 결과를 출력한다. 입력: 1부터 9999사이의 자연수 출력: 입력한 값의 각 자리 숫자들을 더한 값 풀이 import java.util.Scanner; import java.io.FileInputStream; class Solution { public static void main(String args[]) throws Exception { Scanner sc = new Scanner(System.in); int num = sc.nextInt(); int sum = 0; int tmp; for(int i=1000;i>=1;i/=10){ tmp = num/i; sum += tmp; num -= (tmp*i); } System.out.print(sum);..

    [SWEA] 1938. 아주 간단한 계산기

    문제 두 개의 자연수를 입력받으면 그 두 수를 이용해 사칙연산(덧셈, 뺄셈, 곱셈, 나눗셈)을 한다. 입력: 두 개의 자연수 출력: 덧셈(+) 결과, 뺄셈(-) 결과, 곱셈(*) 결과, 나눗셈(/) 결과(몫만) 풀이 import java.util.Scanner; import java.io.FileInputStream; class Solution { public static void main(String args[]) throws Exception { Scanner sc = new Scanner(System.in); int a,b; a = sc.nextInt(); b = sc.nextInt(); System.out.println(a+b); System.out.println(a-b); System.out.p..

    [SWEA] 2046. 스탬프 찍기

    문제 사용자로부터 숫자(정수)를 입력받고 그 개수만큼 스탬프(#)를 찍는다. 입력: 정수 출력: 정수만큼 # 풀이 import java.util.Scanner; import java.io.FileInputStream; class Solution { public static void main(String args[]) throws Exception { Scanner sc = new Scanner(System.in); int stamp = sc.nextInt(); for(int i=0;i

    [SWEA] 2047. 신문 헤드라인

    문제 주어진 문장 중 소문자를 모두 대문자로 만들어 신문의 헤드라인으로 만들어야한다. 입력: 문자열 (단, 80byte 이하로 제한) 출력: 문자열 (대문자로 변환) 풀이 import java.util.Scanner; import java.io.FileInputStream; class Solution { public static void main(String args[]) throws Exception { Scanner sc = new Scanner(System.in); String line = sc.next(); System.out.println(line.toUpperCase()); sc.close(); } } - String toUpperCase() 소문자를 대문자로 바꿔주는 메소드로, String ..

    [DS] Tree: Height of a Binary Tree

    이진 트리의 높이(height)를 구하는 함수를 작성해야한다. 트리의 높이는 root 노드를 0으로 두고 아래로 한 층씩 내려갈 수록 1을 더해나가고 최말단 노드까지의 거리로 한다. int getHeight(struct node* root) { // Write your code here if(root == NULL) return -1; int m = getHeight(root->left)>getHeight(root->right)?getHeight(root->left):getHeight(root->right); return m+1; } 재귀문을 이용해 반복적으로 트리를 탐색할 수 있도록 했다. 그리고 root가 null일 때의 조건에서 -1을 리턴하면서 트리의 높이가 0부터 시작된다는 부분을 고려하도록 했다.

    Cats and a Mouse

    고양이 A와 B, 쥐 C사이의 거리를 이용해 경우에 따라 서로 다른 문자열을 출력하도록 하는 함수 작성 www.hackerrank.com/challenges/cats-and-a-mouse/problem char* catAndMouse(int x, int y, int z) { int d1 = abs(x-z); int d2 = abs(y-z); if(d1 > d2) return "Cat B"; else if(d1 < d2) return "Cat A"; else { return "Mouse C"; } } △ 작성한 부분 abs 함수를 사용해 x와 z, y와 z의 거리를 절대값으로 각각 d1, d2 변수에 저장한다. 그리고 그 값을 비교해 필요한 문자열을 출력한다. #include #include #includ..

    [DS] Delete duplicate-value nodes from a sorted linked list

    값이 같은 노드를 삭제하는 함수를 작성해야 한다. SinglyLinkedListNode* removeDuplicates(SinglyLinkedListNode* head) { SinglyLinkedListNode* tmp1 = head; SinglyLinkedListNode* tmp2 = head->next; SinglyLinkedListNode* t_free; while(tmp1->next != NULL){ if(tmp1->data == tmp2->data){ t_free = tmp2->next; tmp1 -> next = t_free; free(tmp2); tmp2 = tmp1->next; } else{ tmp1 = tmp1->next; tmp2 = tmp2->next; } } return head; ..

    [DS] Print in Reverse

    연결리스트의 head 노드를 파라미터로 전달받고 해당 연결리스트를 역순으로 출력하는 코드를 작성해야 한다. 처음엔 while문을 이용해 역순의 연결리스트를 생성해서 다시 while문을 사용해 값들을 출력하도록 했었는데 Time Limit에 걸려 통과되지 않았다.. 그래서 재귀함수의 형태로 코드를 작성했다. next); } printf("%d\n", head->data); }

    Angry Professor

    교수님이 학생들이 제 시간에 수업에 들어오지 않아서 화나셨다... 그래서 수업시작 시각까지 오는 학생의 수가 k 명이 되지 않는다면 수업을 취소시키기로 다짐하셨다고 한다. 수업이 취소된다면 "YES"를 리턴, 수업을 진행한다면 "NO"를 리턴하는 함수 angryProfessor를 작성해야한다. #include #include #include #include #include #include #include #include #include char* readline(); char** split_string(char*); // Complete the angryProfessor function below. // Please either make the string static or allocate on the ..

    Eletronics Shop

    주어진 budget(b)내에서 keyboard하나와 drive 하나를 가장 값이 많이 나가게 골랐을 때의 가격을 리턴하는 함수 getMoneySpent를 작성해야한다. 만약 최소가격이 budget을 넘는다면 -1을 리턴한다. #include #include #include #include #include #include #include char* readline(); char** split_string(char*); /* * Complete the getMoneySpent function below. */ int getMoneySpent(int keyboards_count, int* keyboards, int drives_count, int* drives, int b) { int cost=0; for(i..