hljs.initHighlightingOnLoad();

c++

알고리즘

[C++] Boj 1780 종이의 개수

문제 링크1780 종이의 개수접근재귀 함수라고 생각하고 너무 겁먹고 들어갔더니 처음엔 정말 안 풀렸다. 끙끙 앓다가 그냥 생각나는대로 로직을 추상적으로 짜서 도전해 보았다.알고리즘1. 현재 범위 내의 종이가 다 같은 종류의 종이인지 확인한다.1-1. 만약 같은 종류라면 해당하는 종이의 카운트를 증가시킨다.1-2. 만약 다른 종류라면 9등분해서 똑같이 1을 반복한다.의사 코드#include #include using namespace std;vector> papers;int N;int paper[3];void Solve(int x, int y, int n){ if (/*만약 같은 종류의 종이라면*/) { paper[/*종이 인덱스*/]++; return; } ..

C++

[C++ 기초 플러스] Chapter 08 프로그래밍 연습 풀이

01.(문제를 잘 이해한 게 맞는지 모르겠다.)// 책에 서술된 대로 구현#include #include using namespace std;int cnt;void print(const string* s, int n = 0){ if (n == 0) { cnt++; cout > "; cout > "; cout  결과02.// 책에 서술된 대로 구현#include #include using namespace std;struct CandyBar{ string maker; double weight; int calories;};void SetCandyBar( CandyBar& candyBar, const char* ca..

알고리즘

[C++] Boj 17478 재귀함수가 뭔가요?

문제 링크17478 재귀함수가 뭔가요?접근우선 어제 배웠던 3단계 방식을 토대로 차례대로 접근하였다.함수 원형 설정base condition 설정재귀 식 구현1. 함수 원형 설정출력만 하는 것이므로 void 형, 또 횟수를 받아야 할 것 같아서 매개변수를 int n으로 줬다.void Solve(int n);2. base condition 설정 함수가 어떤 조건에서 멈출지 생각해 보았는데, n을 1씩 증가시킬 때 n이 사용자가 입력한 수가 되면 "재귀 함수가 뭔가요?"에 대한 질문을 하고 거기서 함수를 다시 호출하지 않고 답변을 하는 것을 볼 수 있다. 따라서 n == N일 때, 답변하고 끝마무리까지 하고 return 하게끔 설정했다.3. 재귀 식 구현void Solve(int n){ // 질문 if..

알고리즘

[C++] Boj 9466 텀 프로젝트

문제 링크9466 텀 프로젝트 접근문제를 읽고 사이클을 구하면 되는 문제인 걸 알아챘으나 사이클을 어떻게 찾는지는 몰라서 풀지 못했다. DFS로 풀면 될 것 같았는데, 어찌저찌 해 보다가 8 %에서 막혔다.사이클 찾는 문제도 dfs, bfs처럼 약간 공식 같은 무언가가 있을 것 같아서 찾아보았다.done 배열먼저 visted, map과 더불어 done 배열이 새로 등장하였다. 이 done 배열은 해당 노드들이 사이클이 맞는지 체크하는 배열이었다.이 방법을 활용하여 문제를 다시 풀어보았다.코드#include #include using namespace std;const int MAX = 100000 + 1;int n, cnt;int students[MAX];bool visited[MAX];bool done..

C++

friend 함수와 연산자 오버로딩

friend 함수C++에서 클래스의 private 및 protected 멤버에 접근할 수 있도록 특별히 허용된 함수이다. 이를 연산자 오버로딩에 활용할 수 있다.왜 friend 함수가 필요할까?일반적으로 연산자 오버로딩은 멤버 함수 또는 비멤버 함수로 구현된다.멤버 함수로 오버로딩할 경우 연산자 왼쪽에 있는 객체가 반드시 해당 클래스의 객체여야 한다.예)// 왼쪽: 객체, 오른쪽: 객체Point(3, 4) + Point(3, 5) 하지만 비멤버 함수로 오버로딩할 경우 클래스의 비공개 멤버에 접근하려면 friend 키워드를 사용해야 한다.// 왼쪽: 클래스 객체가 아님, 오른쪽: 객체3 + Point(3, 4)3 + point(3, 4)객체가 아닌 기본 자료형(예: int)도 Point 클래스의 frien..

C++

[C++ 기초 플러스] Chapter 07 프로그래밍 연습 풀이

본 풀이는 제가 공부하면서 작성한 것이므로 정답이 아닐 수도 있습니다. 01.// 쌍을 이루는 두 수를 반복해서 입력할 것을 사용자에게 요구하는 프로그램// 두 수 중 적어도 어느 하나가 0으로 입력될 때까지 입력은 계속됨#include using namespace std;float HarmonicMean(int x, int y){ float a = static_cast(x); float b = static_cast(y); return 2.0f * a * b / (a + b);}int main(){ int m, n; cout > m >> n)) { cout 결과01 - 1. cin.ignore(100, '\n')의 의미더보기 입력 스트림에..

C++

함수 원형은 왜 필요한가?

함수 원형은 컴파일러에게 함수의 인터페이스를 알려 준다. 즉, 리턴값이 있으면 그 리턴값의 데이터형을 컴파일러에게 알려 준다. 또한 매개변수의 개수와 각 매개변수의 데이터형을 컴파일러에게 알려 준다. 예double cube(double x);int main(){ double volume = cube(side);}  1.함수 원형은 cube()가 하나의 double 형 매개변수를 가진다는 사실을 컴파일러에게 알려 준다. 프로그램이 cube()에 매개변수를 제공하는 데 실패하면, 컴파일러는 함수 원형에 근거하여 에러를 검출한다. 2.cube() 함수는 계산을 끝냈을 때 리턴값을 CPU의 레지스터나 메모리의 어떤 지정된 위치에 넣는다. 그러면 호출한 함수가 그 위치에서 값을 꺼내온다. cube()가 doubl..

C++

잡다한 문법 지식들 (1)

문자와 for문for(ch = 'a'; ch strcmpASCII 코드에서는 대문자가 소문자보다 코드가 낮기 때문에 조회 순서가 더 빠르다. 따라서 이런 것도 가능하다.// str1이 str2보다 아스키 코드 상 앞 순번의 문자열인지strcmp(str1, str2) 0cinint n;cin >> n; 이 경우에 사용자가 수를 입력하는 대신 단어를 입력하면 무슨 일이 벌어질까?n의 값은 변하지 않는다.입력 큐에 잘못된 입력이 그대로 유지된다.cin 객체의 에러 플래그가 설정된다.cin 메서드 호출이 false를 리턴한다.cin 메서드가 false를 리턴한다는 사실은, 수를 읽어들이는 루프를 종료시키기 위해 수가 아닌 입력을 사용할 수 있다는 것을 의미한다. 예// 숫자 말고 다른 문자 입력시 루프가 멈춤..

(ꐦ •᷄ࡇ•᷅)
'c++' 태그의 글 목록 (3 Page)