본문 바로가기

스터디/알고리즘

(5)
[알고리즘] 연속 부분 증가수열 & Jolly Jumpers 1. 연속 부분 증가수열 [문제] N개의 숫자가 나열된 수열이 주어집니다. 이 수열 중 연속적으로 증가하는 부분 수열을 최대 길이를 구하여 출력하는 프로그램을 작성하세요. 만약 N=9이고 5 7 3 3 12 12 13 10 11 이면 “3 3 12 12 13”부분이 최대 길이 증가수열이므로 그 길이인 5을 출력합니다. 값이 같을 때는 증가하는 걸로 생각합니다. [입력설명] 첫 줄에 자연수의 개수 N(5 n; } while (n 100000); int *ptr = new int[n]; for (int i = 0; i > ptr[i]; if (ptr[i] > 100000)//입력받은 숫자가 100,000이하가 아닐 경우, i를 1줄임으로써 반복문 다시 돌아서 해..
[알고리즘] 카드게임 & 온도의 최대값 1. 카드게임 [문제] A와 B가 늘어놓은 카드의 숫자가 순서대로 주어질 때, 게임의 승자가 A인지 B인지, 또는 비겼는지 결정하는 프로그램을 작성하시오. [입력설명] 첫 번째 줄에는 A가 늘어놓은 카드의 숫자들이 빈칸을 사이에 두고 순서대로 주어진다. 두 번 째 줄에는 B가 늘어놓은 카드의 숫자들이 빈칸을 사이에 두고 순서대로 주어진다. [출력설명] 첫 번째 줄에는 게임이 끝난 후, A와 B가 받은 총 승점을 순서대로 빈칸을 사이에 두고 출력 한다. 두 번째 줄에는 이긴 사람이 A인지 B인지 결정해서, 이긴 사람을 문자 A 또는 B로 출력 한다. 만약 비기는 경우에는 문자 D를 출력한다. 이 경우, 10번의 게임에서 A와 B가 뽑은 숫자를 각각 라운드에 따라 비교해야하고, A의 뽑은 숫자와 B가 뽑은 ..
[알고리즘] github 업로드 및 공용 repo에 업로드 초반 과제는 간단한 알고리즘이라, 관건은 git에 업로드하고 공용 repo에 합치는 것이다. 1. 초기화 github에 업로드할 파일들이 있는 폴더로 이동해서 git init을 수행하면, .git이라는 숨김 폴더가 생겨나고 이는 github에 연동할 로컬저장소이다. (한 폴더에는 하나의 로컬저장소만 있어야 한다.) 2. 커밋 사용자 정보 환경 설정 업로드를 원하는 파일 선택 메세지와 함께 커밋. 이 과정에서 로그인하라는 창이 뜨므로, 로그인 해주면 된다. git log로 변동사항 확인 3. github에 push(업로드) 그럼 해당 저장소에 접속해보면 나의 repository에는 업로드 되어있다. 내 repo의 master branch를 선택했을 때만 파일을 확인할 수 있다, push됐다는 정보 역시 뜬..
알고리즘 - 2차원 배열 [1] 2차원 배열 대각선 채우기 1 2차원 배열이 아래의 모습이 되도록 값을 순서대로 저장 -순서도 -코드 #include int main() { int MyArray[5][5]; int i;//사선으로 숫자를 넣는 횟수 int n = 0;//배열에 넣어줄 값 int a = 0;//k가 4를 초과할 더해줄 값 for (int k = 0; k 4) {//배열을 절반으로 나누는 사선 이후로 배열 원소의 갯수가 적어지도록 k값 조절 i = 8 - k; a = k - 4; } for (int j = 0; j
[재귀함수] 반복문 대체, 거듭제곱 계산, 피보나치 수열, 최대공약수, 하노이탑 1. 반복문 대체 2. 거듭제곱 계산 생각해보니 위의 풀이는 재귀함수의 장점을 이용하지 못한 코드다. 거듭제곱하는 횟수만큼 반복문을 돌리듯이 재귀함수를 호출한다. 호출 횟수를 줄이는 풀이를 찾아야 한다. 찾아보니 제곱의 속성을 이용한 풀이 방법이 있었다. 예를들어, 2^10=(2^5)^2 재귀로 계산할 때는 재귀함수 내에서 재귀함수를 호출할 때 해당 결과값을 제곱하면 된다. 2^9과 같이 지수가 홀수인 경우에는 어떤 결과값을 제곱해서 표현할 수 없기 때문에 다음의 방법을 이용한다. 2^10=(2^2)^5꼴을 이용해주되, 지수가 홀수일 때의 조건을 지정해주면 된다. 지수가 홀수일 경우 -> x(밑) 한 번 곱해주고, 지수를 짝수로 맞춰준 후(n-1을 해서) 재귀함수를 호출한다. 지수가 짝수일 경우 -> x..