반응형

분류 전체보기 18

[C++] 백준 11726번 - 다이나믹 프로그래밍

안녕하세요! 오늘은 백준 11726번 문제(2×n 타일링)에 대해 설명드릴게요.이 문제는 DP(Dynamic Programming, 동적 계획법)를 이해하고 연습하기에 좋은 문제랍니다.1. 문제 설명2×n 크기의 직사각형을 1×2 타일과 2×1 타일로 채우는 방법의 수를 구하는 문제예요.여기서 결과를 10007로 나눈 나머지로 출력해야 해요.2. 문제 분석n의 크기에 따라 타일링 방법의 수를 구해야 해요. 타일을 채우는 경우는 두 가지가 있어요:2×(n-1) 직사각형에 2×1 타일 하나를 추가하는 경우2×(n-2) 직사각형에 1×2 타일 두 개를 추가하는 경우따라서, 점화식을 세울 수 있어요:dp[n] = dp[n−1] + dp[n−2]이때 결과 값이 너무 커질 수 있으니, 10007로 나눈 나머지를 저..

알고리즘/백준 2025.01.22

Flutter와 Kotlin Multiplatform, 둘 중 어떤 걸 선택해야 할까?

들어가며 저는 최근 APP에 대한 관심이 커졌어요. WEB 프론트엔드 아기 개발자 기간까지 포함하면 만 5년동안 WEB만 바라보고 있었지만 APP은 계속 선망의 대상이었답니다. 고등학교 시절 Flutter를 잠시 접해보고 "WEB보다 오류도 잘 나는데 도대체 뭐땜시 나는 오류인지 나는 전혀 모르겠다"라는 한 줄 평을 내놓고 잠시 꿈을 접었었어요. 그런데 최근 우연한 계기로 APP을 다시 시작하게 되었는데 Flutter가 아니라 Kotlin Multiplatform(KMP)이라는 아기 APP 개발 프레임워크를 사용했어요. 다행히 프로젝트는 끝냈는데 문득 궁금했어요. Flutter와 KMP, 둘 중 어떤 게 더 좋은 걸까?  결론부터 말씀드리자면 으레 그렇듯 프레임워크를 선택하는 데에 정답은 없어요. 특성을..

APP 2025.01.22

[KMP] 안드로이드 스튜디오 Image Asset 추가 에러 해결 방법

✴️ 배경안드로이드 스튜디오에서 Kotlin Multiplatform 앱에 사용할 앱 아이콘을 바꾸려고 할 때 발생한 오류를 정리했어요.✅ 개요1. Kotlin Multiplatform Wizard에서 Android와 iOS(swiftUI) 두 플랫폼만 선택해서 새로운 프로젝트를 만들었어요. Kotlin Multiplatform Wizard | JetBrains kmp.jetbrains.com 2. 안드로이드 문서대로 composeApp > src > androidMain으로 이동했어요. 앱 아이콘 변경  |  Android DevelopersAffirmations 앱의 앱 아이콘을 변경합니다.developer.android.com 3. res 폴더를 우클릭해서 New > Image Asset을 선택했어..

APP/KMP 2025.01.16

[C++] 백준 1003번 - 다이나믹 프로그래밍

문제 접근이 문제는 다이나믹 프로그래밍으로 분류되는 알고리즘 문제예요. 혹시 이 종류의 알고리즘 문제를 연습하고 싶으시다면 아래 블로그 글도 함께 봐주세요! [C++] 백준 9095번 - 다이나믹 프로그래밍문제 접근 위 그림은 n이 각각 3, 4, 5일 때 가능한 모든 경우를 나열한 거예요. 훑어서 살펴보면 어떤 규칙이 있는 느낌이 들어요. 2가 생기는 경우, 3이 생기는 경우를 경계로 비슷한 작업을 반noeulstory.tistory.com 한 번 N값이 늘어나면서 어떤 규칙이 있는지 먼저 살펴볼까요?  N의 개수에 따라 0과 1이 몇 번 호출되는지 출력해야 하니 위와 같이 트리로 표현할 수 있겠어요! 여기서 반복되는 규칙이 있는지 관찰해보아요.  N=2일 경우는 0과 1일 때의 결과값이 더해졌다고 볼..

알고리즘/백준 2025.01.06

[C++] 백준 9095번 - 다이나믹 프로그래밍

문제 접근 위 그림은 n이 각각 3, 4, 5일 때 가능한 모든 경우를 나열한 거예요. 훑어서 살펴보면 어떤 규칙이 있는 느낌이 들어요. 2가 생기는 경우, 3이 생기는 경우를 경계로 비슷한 작업을 반복한다는 인상을 받으셨을 거라고 생각해요. 따라서 dp[n]을 n이 가질 수 있는 경우의 수라고 할 때, 우리는 점화식을 유도해서 문제를 해결할 수 있을 거예요. 이런 접근법을 다이나믹 프로그래밍이라고 해요.  그러면 앞선 n값도 살펴봐요. n=1부터 경우의 수가 1, 2, 4, 7, 13, ...으로 커지고 있네요. 여기서 우리는 하나의 규칙을 확인할 수 있어요. 7 = 1 + 2 + 4이고, 13 = 2 + 4 + 7이네요! 그러면 n의 결과값은 앞선 세 가지 경우의 수를 모두 더해서 나온 값이 되겠어요..

알고리즘/백준 2025.01.04

[C++] 백준 2751번 - STL 활용

안녕하세요! 오늘은 백준 2751번 문제 풀이를 공유해 볼께요. 이 문제는 주어진 정수들을 오름차순으로 정렬하는 간단한 문제지만, 데이터의 크기가 커질 수 있기 때문에 성능을 고려해야 해요. 그럼 어떻게 해결했는지 코드와 함께 하나씩 알아보도록 해요!1. 문제 이해하기문제 내용이 문제는 다음과 같은 작업을 요구해요:N개의 정수를 입력받아서이를 오름차순으로 정렬한 뒤한 줄에 하나씩 출력하기입력과 출력 조건입력:첫 번째 줄에 숫자의 개수 N이 주어져요 (1 ≤ N ≤ 1,000,000).두 번째 줄부터 N개의 정수가 한 줄에 하나씩 주어져요. (각 정수는 -1,000,000부터 1,000,000 사이)출력:정렬된 정수들을 한 줄에 하나씩 출력해요.제약 조건N이 최대 1,000,000까지 갈 수 있어서 효율적..

알고리즘/백준 2024.12.31

[C++] 백준 11725번 - 그래프와 STL을 사용한 풀이

STL이 뭘까요?Standard Template Library(STL)는 미리 만들어둔 자료구조를 모아둔 라이브러리예요. 예를 들어 많이 사용하는 자료구조로 linked list, stack 등이 있을텐데 이걸 개발자가 일일이 만드는 게 아니라 미리 만들어둔 걸 그대로 가져와서 사용할 수 있도록 하는 것이죠. 그래서 STL을 사용해서 처음부터 구현한다는 번거로움을 줄이고 개발할 수 있다는 장점이 있어요.문제를 살펴볼까요?먼저 N과 N-1개 간선(edge) 정보를 입력받은 후 2번 노드부터 시작해서 각 노드의 부모 노드 숫자를 차례대로 출력하도록 되어 있어요. 첫 번째 예시 입출력을 살펴보면서 문제를 이해해 볼까요?  예제 입력 1처럼 입력받으면 루트가 1인 트리가 다음과 같이 나타난다는 걸 알 수 있어요..

알고리즘/백준 2024.12.31

[C++] 백준 2798번 - 기본 풀이와 분할정복 시도 2가지 풀이

풀이1#include int main() { cin.tie(NULL); ios::sync_with_stdio(false); int N, M; cin >> N >> M; int *arr = new int[N]; int sum = 0, tmp; for (int i = 0; i > arr[i]; for (int j = 0; j 해설1행과 2행은 기존의 C언어에서 사용하던 scanf / printf / puts / getchar / putchar와 같은 함수를 사용하지 않도록 만듦으로써 프로그램의 속도를 조금 더 빠르게 할 수 있어요. 백준 15552번을 참고해주세요! N과 M을 입력받은 후 N개 숫자를 입력받는 동시에 지금까지 입력받은 수끼리 비교하는 방법을 사용했어요. 두 개의 for문 ..

알고리즘/백준 2024.12.26

[C/C++] 백준 2839번: 설탕 배달

풀이1이 문제는 3kg와 5kg 설탕 봉지 수를 잘 조절하여 전체 가장 적은 수가 되도록 Nkg를 만드는 것입니다.따라서 큰 수인 5를 최대한 많이 써서 N과 비교하고, 맞지 않다면 점차 숫자를 줄이면서 그 자리에 3을 채워넣는 방법으로 코드를 구성했습니다.C++#include using namespace std;int main() { cin.tie(NULL); ios::sync_with_stdio(false); int N; int i, j; cin >> N; for (i = N/5; i >= 0; i--) { for (j = (N-i)/3; j >= 0; j--) { if (i*5 + j*3 == N) { cout C#include int main() { ..

알고리즘/백준 2024.12.21

로컬 서버 구동하기 · 마인크래프트/Minecraft

1. 이곳에 들어가서 서버 패키지를 다운받는다. 2. 다운받은 파일을 서버를 저장할 폴더에 가져온 후 메모장에 아래와 같이 작성한 후 run.bat으로 저장한다. 3. run.bat을 실행하면 폴더에 여러 파일들이 만들어진다. 4. elua.txt에 들어가서 false를 true로 수정한다. 5. 다시 run.bat를 실행하면 폴더 안에 추가적으로 파일이 만들어진다. 6. 마인크래프트에서 localhost:25565로 서버에 접속할 수 있다.

카테고리 없음 2024.06.07
반응형