💻 개인공부 💻 100

[acmicpc] upper bound (feat. 이진 검색 알고리즘) / C++

출처 => [알고리즘 해결을 위한 창의적 알고리즘 해결 (중급)] 문제 문제 분석 문제의 의도 : k를 초과하는 가장 첫 번째 원소의 위치를 구하는 것 ① 먼저 구간을 설정한다. ([s, e]) ② 이 구간의 중간위치의 값을 m이라고 하면, A[m-1]k 인 최소 m을 찾아야 한다. 풀이 => 예시로 주어진 배열 A는 1,2,7,7,7,7,11,15이다. k의 값은 7이다. 따라서 출력값은 7이 나와야 한다. => 주어진 배열은 [0,8]이고 이에 따라 중간값의 위치인 m은 4이다. 우리가 원하는 것은 찾으려는 값의 위치가 아니라 k값보다 큰 수가 처음으로 등장하는 위치이다. A[4]=7이므로 우리의 위치와 일치하지 않다. => A[6]>7 이므로 그보다 아래로 범위를 설정하여 재탐색 =>A[5]=7이므..

[C++] C++에서의 배열 선언

JAVA에서의 배열 선언 나는 프로그래밍 언어를 JAVA로 시작하였기 때문에 JAVA가 편하다. 그래서 C++을 사용할 때 헷갈려서 불편하곤 한다. 특히 '배열'을 선언할 때 불편하다. 먼저 JAVA에서의 배열 선언이다. int [] Array =new int [3]; 만약 배열의 크기가 정해지지 않았다면 다음과 같이 설정하면 된다. Scanner scan=new Scanner (System.in); int n=scan.nextInt(); int [] Array = new int [n]; 2차원 배열도 위의 방법과 같이 생성 할 수 있다. Scanner scan=new Scanner(System.in); int m=scan.nextInt(); int n=scan.nextInt(); int [][] Arr..

[C++] 가상함수 상속을 이용하여 값을 변환해주는 클래스 작성

1. 문제 2. 요구사항 분석 1. 가상 함수를 가지는 부모 클래스를 생성 2. 단위를 나타내는 string형식의 문자 선언 3. 반환하려는 값 double형으로 선언 4. 원을 달러로 바꾸어주는 클래스인 WonToDollar클래스 선언(Converter 클래스 상속) 5. Km를 mile로 바꾸어주는 클래스인 KmtoMile클래스 선언(Converter클래스 상속) 6. 환율 입력 7. 환율을 바탕으로 원을 입력하면 이를 달러로 변환하여 출력 8. Km를 입력하면 이를 mile로 변환하여 출력 3. 클래스 설계도 4. 프로그램 설계도 5. 소스코드 #include using namespace std; class Converter { protected: double ratio; //비율, 여기서는 1달러..

웹 서버로 데이터를 보내는 방법, Requesting

1. Requesting이란 무엇인가? 웹에서의 Requesting은 서버로 본인이 가지고 있는 데이터를 전달하기 위해 사용함. 흔히 Requesting의 방식에는 get, post, put, delete, patch라는 다섯가지의 방법이 존재하는데 이 중에서 중요한 get과 post방식에 대하여 설명하고자 한다. 2. GET 방식 (데이터를 가져와서 보여준다, 가져옴의 의미) 두 방법 모두 "데이터를 전달한다"라는 목적에서는 일치하지만 전달하는 방식에서는 차이점이 존재한다. 먼저 get방식이다. get 방식인지, post 방식인지를 알려면 브라우저 창에 있는 URL을 보면 된다. get방식을 사용하게 되면 위에 있는 그림처럼 입력한 정보가 URL에 노출이 되게 된다. 따라서 입력된 정보가 다 드러나므로..

MVC 패턴 구조

1. MVC 구조란? MVC 구조는 Model, View, 그리고 Controller로 구성된 구조이다. MVC 구조를 이용하게 되면 웹페이지를 구성하는 요소들(시각적인 요소, 데이터를 담당하는 요소)들끼리의 간섭없이 각각 독립적으로 개발함으로서 큰 효율을 낼 수 있다는 장점이 있다. 2. Model 이란 무엇인가? (feat. 데이터를 다루는 주방장) 그렇다면 MVC 구조를 구성하는 구성요소들에 대하여 알아보자. 먼저 Model이다. Model은 데이터를 처리하는 역할을 담당한다. Controller에서의 명령을 받고 DataBase에서의 데이터를 저장하거나 삭제, 업데이트, 변환등의 작업을 수행한다. Model은 세 가지의 규칙을 갖고 있다고 한다. 1. 사용자가 편집하길 원하는 모든 데이터를 가지고..

[C++] 다중상속을 이용한 연산 프로그램(feat. public 다중상속)

1. 문제 2. 요구사항 분석 1. Cal클래스 생성 2. 계산의 결과를 출력하는 double(나눗셈이 있으므로)형태의 메소드인 calc()를 생성 3. 이를 public형태로 상속받는 adder, subtractor, multiplier, divider클래스 생성 4. divider클래스 생성시 나누는 수가 0인 경우를 고려 3. 클래스 설계도 4. 프로그램 설계도 5. 소스코드 #include #include using namespace std;//모든 cin,cout에 std를 쓰지 않기 위해 작성 class Cal {//Cal 클래스 작성 void input() { cout a >> b; } protected: //protected, 선언된 클래스와 이를 상속하는 클래스에서만 사용가능 int a,..

[C++] 멤버함수와 외부 함수를 이용한 OOP(feat. friend, operator)

문제 요구 사항 분석 1. Rect 클래스 생성 및 width, height 멤버 변수 생성 2. Rect 메소드 생성 3. c의 가로, 세로, 면적을 나타내는 void 형의 show메소드를 생성 +operator(멤버 함수) 1. Rect 클래스 안에 operator+라는 연산자를 정의 2. 매개변수는 b로 하고 c의 가로와 세로를 구함. -operator(외부 함수) 1. friend 형식으로 연산자 –를 Rect 클래스 안에 정의 2. 매개 변수로 Rect 클래스의 객체인 a와 b를 정의 main함수 설정 1. a와 b에 가로와 세로 값을 설정 2. a에서 b를 뺏을 때 c의 가로, 세로, 면적을 출력 3. a에서 b를 뺏을 때 c의 가로, 세로, 면적을 출력 소스 코드 1 2 3 4 5 6 7 8..

[C++] 객체 배열화를 이용하여 정사각형 넓이 구하기

문제 요구사항 1. Rectagle이라는 클래스를 지정해야 함 2. Rectangle클래스 안에 width와 height라는 정수형 지역 변수 설정 필요 3. 클래스 안에 getArea()라는 메소드를 설정 필요 4. getArea()는 width*height 값을 return하도록 코드 설계 필요 5. 객체 배열의 크기를 설정하기 위해 int n을 입력 6. 각각의 Rectangle 객체에 width값과 height값을 저장하고 같으면 정사각형이라는 것을 출력해야함 설계도 소스코드 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..

백준) 2 x n 타일링 (재귀함수) / JAVA

문제 출처입니다. https://www.acmicpc.net/problem/11726 11726번: 2×n 타일링 2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×5 크기의 직사각형을 채운 한 가지 방법의 예이다. www.acmicpc.net 사고의 흐름 2x1 타일링을 할 때부터 차례대로 하여 규칙을 찾아내보록 한다. 그 결과, 2x1일때는 1, 2x2 일때는 2, 2x3 일때는 3, 2x4 일때는 5, 2x5 일대는 8이라는 결과가 나온다. 그런데 2x5 타일링을 분석하면 다음 그림과 같다. 즉, 5번째 타일링은 3번째와 4번째 타일링을 더한 값이다. 즉 피보나치 수열로 나타낼 수가 있다. 해결방법 1 2 3 4 5 6 7 8 9 10..

JAVA) - 재귀함수를 이용한 피보나치 수열과 팩토리알

재귀함수이므로 위와 같은 형식 꼴이다. (직접 재귀) 피보나치 수열 소스코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 package backjoon; import java.util.*; public class fibonacci { static int fibonacci(int n){ if(n==1)return 1; else if(n==2) return 2; else return fibonacci(n-1)+fibonacci(n-2); } public static void main(String[]args){ Scanner scan=new Scanner(System.in); System.out.println("n을 입력하세요 n:"); int n=scan.nextIn..