본문 바로가기

Algorithm159

#17478 재귀함수가 뭔가요? # 문제 # 입력 및 출력 # 풀이 팩토리얼이나 피보나치만 재귀를 써서 풀다 보니까 문자를 출력하는덴 좀 어려움이 있었다 바를 출력하는게 제일 까다로웠는데 의외로 간단하게 해결되었음 처음엔 바를 전역변수로 선언해놓고 그냥 함수안에서 t+=t하는 방식으로 사용했는데 이렇게 되면 끝에 "라고 답변하였지." 이부분에서 바를 출력하는 데에서 문제가 생겼다 반복문을 사용해서 n에 따라 바의 개수를 정해주는게 중요한 점이다 #include #include using namespace std; int N; string repeat[5] = { "\"재귀함수가 뭔가요?\"\n", "\"잘 들어보게. 옛날옛날 한 산 꼭대기에 이세상 모든 지식을 통달한 선인이 있었어.\n", "마을 사람들은 모두 그 선인에게 수많은 질문.. 2022. 5. 6.
#10757 큰 수 A+B # 문제 # 입력 및 출력 # 풀이 string으로 받아서 한자리씩 계산하도록 했음 #include #include using namespace std; void cal(string big, string small) { for (int i = big.size() - 1; i >= 0; i--) { int c = (big[i] - 48) + (small[i] - 48); big[i] = (c % 10) + 48; if (i == 0) { if (c / 10 != 0) big = to_string(c / 10) + big; break; } big[i - 1] += (c / 10); } cout a >> b; if (a.size() > b.size()) { for (int i = b.size(); i < a... 2022. 5. 5.
#1715 카드 정렬하기 # 문제 # 입력 및 출력 # 풀이 우선순위 큐를 사용해서 항상 오름차순으로 정렬되는 큐를 사용 여러번 더해야하는 숫자가 작아야하기 때문에 최소힙으로 구현 #include #include using namespace std; priority_queue q; int main() { int N; cin >> N; for (int i = 0; i > tmp; q.push(tmp); } int result = 0; while (q.size() != 1) { int a = q.top(); q.pop(); int b = q.top(); q.pop(); result += a + b; q.push(a + b); } cout 2022. 5. 4.
#1316 그룹 단어 체커 # 문제 # 입력 및 출력 # 풀이 처음에 푼 방식이 코드가 엄청 복잡하게 나왔다 #include #include using namespace std; int c[26]; void clear() { for (int i = 0; i > N; string word; while (N--) { cin >> word; for (int i = 0; i < word.size(); i++) { c[word[i] - 97]++; } no = 0; for (int i = 0; i < word.size(); i++) { //3번 int count = c[word[i] - 97]; if (count.. 2022. 5. 4.
#1003 피보나치 함수 # 문제 # 입력 및 출력 # 풀이 간단하게 dp로 풀면 된다 f(0)과 f(1)의 0, 1 호출 횟수를 pair 배열에 저장해두고 f(2)부턴 f(n-1), f(n-2)의 0, 1 호출 횟수를 더해주면 됨 N은 40보다 작거나 같은 자연수, 0 이므로 pair 배열 크기는 41로 설정해주면 됨 #include using namespace std; int main() { pair dp[41]; dp[0] = make_pair(1, 0); dp[1] = make_pair(0, 1); for (int i = 2; i < 41; i++) { dp[i].first = dp[i - 1].first + dp[i - 2].first; dp[i].second = dp[i - 1].second + dp[i - 2].se.. 2022. 5. 4.
#2667 단지번호붙이기 # 문제 # 입력 및 출력 # 풀이 1) BFS (너비 우선 탐색) #include #include #pragma warning (disable:4996) using namespace std; int map[27][27]; // 문제에서 주어지는 지도 int visit[27][27]; // 방문했는지 확인하는 배열 int dx[4] = { -1,1,0,0 }; // x 상하좌우 확인용 int dy[4] = { 0,0,-1,1 }; // y 상하좌우 확인용 queue q; // bfs용 큐 priority_queue count_home; // 각 단지내 집의 수 오름차순 정렬용 int N, x, y, bunji = 0, home = 1; void find() { // 다음 번지를 찾는 함수 int stop.. 2022. 5. 3.