분류 전체보기 259

[알골90제] 56번 - 재귀함수 분석 : STACK 이용

*문제 자연수 N이 주어지면 재귀함수를 이용해서 아래와 같이 출력하시오. 스택을 이용하는 재귀함수 입력 3 출력 1 2 3 *코드구현 // 56번 - 재귀함수 (기본) #define _CRT_SECURE_NO_WARNINGS #include #include #include #include using namespace std; //반환하는 건 아니고 출력함수라서 void void recur(int x) { if (x == 0) return; //종료지점 else { recur(x - 1); printf("%d ", x); } } int main() { int n; scanf("%d", &n); recur(n); } * 주의! //recur과 printf의 순서를 바꾸면 //1 2 3 => 3 2 1 됨 /..

[알골90제] 55번 - 기차운행 : STACK 응용

*문제 입력 3 2 1 3 출력 PPOOPO 결과 A도시에 입력된 결과가 오름차순 (ex.1 2 3) 순으로 B도시에 도착하게 함 *생각 - 스택을 써야하 함 - 조건문 어떻게 달아야 하나, 스택에 넣고, 순서대로 빼는 조건문? *문제 풀이 - 주의! 모든 기차는 교차로에 들어갔다가 B도시에 가야한다. 0) B도시에 순서대로 1 2 3 4 배열을 만들어서 놓는다. 1) 3을 스택에 push한다. 2) push를 했으면 이걸 char 배열에도 P를 넣어야함 나중에 P를 출력해야하니깐 3) stack의 제일 위에 있는 ex.3과 j가 가리키는 부분이 같은지 봐야함. 같지 않으면 넘어감 4) 그 다음 1을 읽어서 스택에 push.. char P 5) 1과 j가 가리키는 곳이 1로 모두 같음. =>pop 하고 ..

[WEB] 서버와 클라이언트 / 웹서버와 HTTP / 웹서버와 웹브라우저의 통신

인터넷 - WEB - FTP - EMAIL 서버와 클라이언트 -Web Browser(Web Client/Game Client/Chatting Client) 와 Webserver(Game Server/Chatting Server)가 설치되어 있는 컴퓨터 2대가 서로 정보를 주고받는다. -Web Broweser -> Web Server에 Request -Web Browser Hyper Text Transfer Protocol : 웹 페이지를 웹브라우저와 웹서버가 서로 주고받기위한 약속이 HTTP file://는 웹브라우저가 직접 파일을 여는것 - 서로 다른 컴퓨터에 있는 웹브라우저와 웹서버가 통신하기 위해서는 반드시 HTTP를 사용해야한다. 웹서버와 웹브라우저의 통신 - 웹브라우저가 웹서버에 요청할 때는 웹..

[React] Front-End 2019.07.30

[알골90제] 54번 - 올바른 괄호 : STACK 이용

*문제 괄호가 입력되면 올바른 괄호이면 “YES", 올바르지 않으면 ”NO"를 출력합니다. (())() 이것은 괄호의 쌍이 올바르게 위치하는 거지만, (()()))은 올바른 괄호가 아니다. ▣ 입력설명 첫 번째 줄에 괄호 문자열이 입력됩니다. 문자열의 최대 길이는 30이다. ▣ 출력설명 첫 번째 줄에 YES, NO를 출력한다. * 풀이 1) 여는 괄호면 push 2) 닫는 괄호면 pop 3) 여는 괄호면 push . . . 4) 올바른 괄호라면 string을 다 처리하면 stack이 정확하게 비어있다. - 고려해야할 상황 (()))( : push push pop pop pop => stack에 가보려하니 없더라. *주의 (()))( 의 경우를 위해 => flag만듬 YES YES NO NO 로 2번 출력..

[알골90제] 53번 - K진수 출력 : 스택 자료구조

* 문제 10진수 N이 입력되면 K진수로 변환하여 출력하는 프로그램을 작성하세요. 스택 자료구조 이용하기 - 입력: 10진수와 몇진수로 할지 (2, 5, 8, 16) 중 택 1 11 2 - 출력: 1011 - 입력: 31 16 - 출력: 1F * 생각 - 스택을 굳이 이용하는 이유는? - 10진수를 다른 진수로 바꾸는 식은? *풀이(스택) 1) 스택이라는 일차원 배열을 만듬 2) top = -1로 초기화 3) push(2); - top은 항상 ++먼저 증가하고 대입하기 때문에 맨 위에 있는 자료를 가리킨다. *K진수 출력 풀이(스택이용) - 입력 11 2 이면 11을 2로 나눈 나머지를 스택에 push한다. - 나눈 몫에서 다시 2로 나눠서 나머지값을 push - 나눈 몫에서 다시 2로 나눠서 나머지 값..

[알골90제] 52번 - Ugly Numbers : 투포인트 알고리즘 응용

* 문제 - 어떤 수를 소인수분해 했을 때 그 소인수가 2 또는 3 또는 5로만 이루어진 수를 Ugly Number - Ugly Number를 차례대로 적어보면 1, 2, 3, 4, 5, 6, 8, 9, 10, 12, 15, .......입니다. 숫자 1은 Ugly Number의 첫 번째 수 - 자연수 N이 주어지면 Ugly Number를 차례로 적을 때 N번째 Ugly Number를 구하는 프로그램 작성 입력 10 출력 12 * 생각 - N이 입력되면 1부터 무한루프까지 각각 소인수분해해서 2, 3, 5 로만 떨어지면 count++하고, count가 15 즉, N이 되면 while문을 빠져나와서 해당 X수를 적는다. => 시간이 너무 오래걸림...time limited! - 소인수 분해하는 과정?? *..

[알골90제] 50/51번 - 브루트포스/다이나믹프로그래밍 : 오렌지나무 territory 선택 (small/big)

*문제 세종대왕은 현수에게 현수가 다스릴 수 있는 영지를 하사하기로 했다. 전체 땅은 사각형으로 표 시된다. 그 사각형의 땅 중에서 세종대왕이 현수가 다스릴 수 있는 땅의 크기(세로의 길이와 가 로의 길이)를 정해주면 전체 땅 중에서 그 크기의 땅의 위치를 현수가 정하면 되는 것이다. 전체 땅은 사각형의 모양의 격자로 되어 있으며, 그 사각형 땅 안에는 많은 오렌지 나무가 심 겨져 있다. 현수는 오렌지를 무척 좋아하여 오렌지 나무가 가장 많이 포함되는 지역을 선택하 고 싶어 한다. 현수가 얻을 수 있는 영지의 오렌지 나무 최대 개수를 출력하는 프로그램을 작 성하세요. 다음과 같은 땅의 정보가 주어지고, 현수가 하사받을 크기가, 가로 2, 세로 3의 크 기이면 가장 많은 오렌지 나무가 있는 영지는 총 오렌..

[알골90제] 49번 - 쌓기 블록의 최대값 (2차원 배열 응용)

*문제 1 1 2 3 측면 블럭 개수 입력 받을때 반대로 받는다. => 3 2 1 1 로 측면에서 봤을 때, 해당되는 숫자보다 큰숫자를 해당 숫자로 바꿔 준다. => 2중 포문 돌면서 각각 칸의 개수를 세면, 블록의 최대 개수가 나옴 *풀이 //49번 - 쌓기 블록의 최대값 (2차원 배열 응용) #define _CRT_SECURE_NO_WARNINGS #include #include int a[11][11], len[11]; int main() { int n, sum = 0; scanf("%d", &n); for (int i = 1; i

[알골90제] 48번 - 각 행의 평균과 가장 가까운 값 (2차원 배열 탐색)

* 문제: 1) 9*9 격자판에 81개의 자연수가 주어짐 2) 각 행의 평균을 구함 3) 각 행의 평균과 가장 가까운 값 출력 - 평균은 소수 점 첫 째 자리에서 반올림 - 가까운 값이 2개이면 그 중 큰 값을 출력 * 입력: 1~9번째 줄까지 한줄에 1개씩 100보다 작은 자연수가 주어짐 * 출력: 각 행별 평균과 그 평균과 그 행에서 평균과 가장 가까운 수 나란히 출력 ex) 42 34 43 42 53 53 . . . * 계획: 1) 9*9를 2차원 배열로 입력받음 2) 각 행별로 평균을 구함 3) 구한 평균을 두고 1~9까지 순서대로 빼서 abs해줌. 4) 절대값이 가장 작은 수가 평균과 가장 가까운 값 * 코드 // 48번 - 각 행의 평균과 가장 가까운 값 #define _CRT_SECURE_N..

[알골90제] 47번 - 봉우리 (2차원 배열 탐색)

* 문제를 읽고 난 후 - N값을 받은 다음에 정말로 N*N의 2차원 벡터를 만들어야 하나 - 2차원 벡터를 만든다면 상하좌우에 있는 숫자는 어떤 식으로 계산해서 그 자리의 값을 알아낼 것인가 - 반복문을 이용해서 상하좌우 좌표값을 현재 자리 기준에서 연산하여 구하면 되나 - 어떤 알고리즘을 풀어서 해결해야 할지 감도 안 옴 * 풀이 방법 1) 전역 변수로 2차원 배열을 잡으면 모두 0으로 채워진다. 2) 입력받는 숫자 값을 (1.1)부터 넣기 시작한다. 3) 입력을 받았으면, 1행 1열부터 n, n열까지 탐색하는 것이다. 4) 2중 for문이 돌면서 각자가 봉우리 인지 확인해야 한다. 5) i행 j열에 왔다면? 상하좌우를 어떻게 볼 것인가. 6) 현재 a[i][j] a[i-1][j] 상 a[i][j+1..