본문 바로가기
  • 소소한 개발자 이야기

Algorithm Study/SW역량테스트13

큰 자릿수 뺄셈 문제 두 자연수가 주어질 때 그 들의 뺄셈을 계산하는 플그램을 작성하시오. 각 수는 1 이상 10의 100승 미만의 범위를 가진다. 입력 처 번째 줄과 두 번째 줄에 각각 하나의 자연수가 주어진다. 출력 첫 번째 줄에 뺄셈의 결과를 출력한다. 예제 입력 첫 번째 줄에 뺄셈의 결과를 출력한다. 예제 입력 1962831868293922 2528838232 예제 출력 1962829339455690 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 .. 2020. 6. 28.
문자열 뒤집기(고급) 문제 입력된 문자열을 반대의 순서로 출력하세요. 제약 조건 1. 최대 문자열 길이는 100자이다. - 영문 대소문자 가능 - 숫자 가능 - 특수문자 가능 2. 입력값을 받은 배열을 제외하고는, 모든 형태의 변수의 선언 및 사용을 금지합니다. (매크로 상수도 사용금지) 3. 반복문(for, while, do while() 등)을 수행하면서, char 단위로 문자 단위로 출력하는 것도 금지합니다. 4. strlen() 함수를 제외하고는, 어떠한 종류의 함수를 사용하는 것을 금지합니다. (C++의 경우 inline함수 금지) - 문자열 순서를 변경하는 reverse() 형태의 함수의 사용도 금지합니다. - 단, 문자열 입력 받는 함수(예, scanf, cin 등)는 1회 사용 가능 - 조건문, 반복문의 함수는.. 2020. 6. 22.
(동적계획법) 연속 부분 최대합L 문제 N개의 정수가 주어질 때, 연속된 부분을 선택하여 합을 최대화 하는 프로그램을 작성하시오. 예를 들어, 아래와 같이 8개의 숫자가 있을 경우, 색칠된 부분을 선택했을 때 그 합이 가장 최대가 된다. 입력 첫 번째 줄에 n이 주어진다. ( 1 ≤ n ≤ 1,000,000 ) 두 번째 줄에 n개의 정수가 주어진다. 출력 연속된 부분을 선택하였을 때의 최댓값을 출력한다. 예제 입력 8 2 3 -5 8 -3 4 2 -9 예제 출력 11 예제 입력 5 -1 -2 3 -2 4 예제 출력 5 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 4.. 2020. 4. 30.
너비 우선 탐색(BFS, Breadth-First Search) 너비 우선 탐색이란, 임의의 노드 또는 루트 노드에서 시작해서 인접한 노드를 먼저 탐색하는 방법입니다. 구현: (1) 시작점을 큐에 삽입 (2) 시작점을 색칠, BFS 시작 (while 문) (3) 큐에서 하나를 뺀다. pop 된 node가 현재 위치! (4) 인접 노드에 방문 했는지 확인 - 방문 안했으면, 색칠하고 큐에 삽입 (5) 모두 완료 했으면 (3)으로 돌아간다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 6.. 2020. 3. 27.
다익스트라 알고리즘(Dijkstra algorism) 다익스트라 알고리즘이란, 하나의 정점에서 모든 정점까지 최단 거리를 구하는 알고리즘입니다. 단, 조건은 모든 정점이 양의 가중치를 갖고 있어야 합니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 /* (정점 개수, 간선 개수, 시작점, 끝점) (정점1, 정점2, 가중치) .. .. .. .. (정점1, 정점2, 가중치).. 2020. 3. 27.
Card game 문제 두 사람 A와 B는 1부터 10까지의 숫자가 하나씩 적힌 열 장의 카드로 ‘게임’을 한다. 게임은 총 열 번의 ‘라운드’로 구성되고, 각 라운드 마다 자신이 가지고 있는 카드 중 하나를 제시하고, 한 번 제 시한 카드는 버린다. 게임 승패는 다음과 같이 결정된다. 각 라운드는 더 높은 숫자를 제시한 사람이 승리하고, 제시한 숫자가 같은 경우는 비긴다. 열 번의 라운드에서 더 많은 라운드를 승리한 사람이 게임을 승리하고, 승리한 라운드 횟수 가 동일한 경우 비긴다. 다음은 게임의 한 예로, 각 라운드마다 A와 B가 제시한 카드의 숫자와 각 라운드의 승자를 보여준다. (비긴 라운드는 D로 표시함) A는 5번의 라운드에서 승리하고 B는 4번의 라운 드에서 승리하였으므로, 이 게임은 A가 승리한다. 라운드.. 2020. 3. 3.